[osask 6798] Re: Jenny2

小柳です。こんにちは。

どうも自分が熱くなっていて前のメールでは偏見を混ぜてしまいました。
すみません。

Hidemi KAWAI wrote:
> 
>   こんばんは、川合です。
> 
> KOYANAGI, Masaaki さんは 2003/12/14 20:46:28 の「[osask 6781] Re
> : Jenny2」で書きました:
> 
> >現在のOSASKカーネルではグラフィックボックスで「高速」モードを選択する
> >と、
> >n系アルゴリズムが選択されて、色の再配置が行われます。
> >この場合は「減色」という定義からは外れます。

定義というのは言いすぎで世間一般の了解くらいの意味です。

> >「減色は選択した色群(パレット)を使用して各ピクセルの元の値からの誤差
> >を小さくする変換である」という定義について、川合さんは納得して
> >いただけますか?
> 
>   この定義は、僕の理解とはあいません。本当にこんな定義なのでしょ
> うか。
> 
>   もちろんこのような減色もありますが、たとえば自由なパレットを30
> 個与えて、そのパレットのRGB値を決めつつ、処理をする場合もあるよ
> うに思います。そのような処理は、この定義の外になってしまいます。

定義というのは撤回するとして、その場合のパレットのRGB値を決める場合
に何らかの誤差を小さくするように選択するはずなので、外といは言えない
と思います。

>   また元の絵からの誤差を小さくする変換とした場合、何をもって誤差
> とするのでしょうか。RGB値ですか?それとも明度や色相?それともま
> た別の指標?

明度や色相として例えば Y, Cb, Cr の系の場合、RGB との関係は
Y =   0.257R + 0.504G + 0.098B + 16
Cb = -0.148R - 0.291G + 0.439B + 128
Cr =  0.439R - 0.368G - 0.071B + 128
の一次変換です。YUV でも同じです。
一次変換なので、RGB値の誤差をそれぞれ小さくする方向と、YCbCr の誤差を
それぞれ小さくする方向に本質的な違いがあるようには思えません。川合さんに
は大きな違いに思えるのでしょうか。それよりも川合さんはその質問をする前
に、
こういったことを調べていますか?


>   僕は言葉をそのまま解釈するのではなく、何を言おうとしているかを
> 読み取ります。もし言葉の使い方に食い違いがありそうだと思えば、誤
> 解ではないかとたずねて確認します。・・・むしろ、少ない言葉で正確
> に表現できることのほうが稀(まれ)であると僕は考えているので、言
> 葉にこだわることなく、できるだけ複数の方法で同じ事を説明しようと
> 思うくらいです。正確な言葉にこだわりすぎたら、書くペースはお互い
> に大いに下がり、議論は停滞するでしょう。
> 
>   だから僕は、言葉をもっと慎重に選ぶべきだという小柳さんのアドバ
> イスは、この件についてはあまり適切だとは思っていません。

(1)間違った言葉を使って説明しているのに気づいたら正しく説明し直す
(2)間違った言葉を使って相手に誤解を与えた点については謝罪する

ということが行われれば問題ありません。前のメールで川合さんが
(2)の点を軽視しているように感じたので、その点を指摘したつもりです。

> 
> ---
> 
> > 私と、I.Takさんは「減色」のアルゴリズムについて話していたのですが、
> >川合さんは n式色調変換アルゴリズムについて話しているので話が
> >かみ合わないわけです。
> 
>   そうなんですか?>I.Tak.さん
> 
>   僕はずっと、次のことを議論しているのだと思っています。
> 
> ・僕の主張:n系とi系を比べて、どちらが高品質だ、とは言えない。各
>             自の好みがある。
> 
> ・I.Tak.さんの主張:n系とi系を比べると、i系の方が高品質である。
>             これは主観ではなく、客観的な根拠がある。
> 
>   ↑これは[OSASK 6747]にあります。

私の考えは少し違います。i系はパレットの選択が一意に
決まりますが、n系ではパレットの選択方法は自由になっています。
問題になるのは、現在の実装で使用しているパレットの選択方法で、分割した
領域の最初を0 最後を1 として等分に増加させていることです。

切り捨て、切り上げ、四捨五入(というより中間値)なら、問題ないと考えます。
特に四捨五入なら、ダイナミックレンジが下がりますが、数値的な誤差はi系に
比べて下がるので品質は同じといってもいいと私は思います。

> 
>   それで、I.Tak.さんのその根拠とは、「飽和」であるということでし
> た。僕も、「もしn系で飽和があったら、I.Tak.さんの主張は正しい」
> ということで合意しました。
> 
>   しかし、I.Tak.さんが、これこそ「飽和している根拠だ」として示し
> たものに対して、僕としてはそれは飽和したとはいえないのではないか
> 、と指摘しました。I.Tak.さんの主観として「これは飽和している」と
> いう主張は、まあ分からないでもないですが、客観的に見ると、これを
> 飽和の証拠と認めるのは無理があるんじゃないか、というのが僕の見解
> なのです。

後述の例を見て下さい。(y=sqrt(x))

>   追加的なことをいうと、I.Tak.さんとしては、リニア性が高いほうが
> 高品質だとしたいようです。僕も、i系アルゴリズムのほうが、僕の求
> めるレベル以上にリニアであることは認めます。しかし、僕はリニアで
> あることが高品質だとは思っていません。・・・むしろ情報の損失が少
> ない分だけ(=全ての色の出現率が均等な分だけ)、n系のほうが高品
> 質といえるのではないか、と思ってしまうくらいです。

では、以下の3色での例を見て下さい。

A. n系 + 現在のパレット選択方法

0.00 <=x <  0.33, f(x) = 0
0.33 < x <  0.66, f(x) = 0.5
0.66 < x <= 1.00, f(x) = 1.0


B. i系

0.00 <=x <  0.25, f(x) = 0
0.25 < x <  0.75, f(x) = 0.5
0.75 < x <= 1.00, f(x) = 1.0

の 2つのアルゴリズムに対して、

1) y = x (0<=x<=1) の場合
A では 0, 0.5, 1 となる領域の大きさは、それぞれ 0.33, 0.33, 0.33
平均値 0.33, 分散 0
B では 0, 0.5, 1 となる領域の大きさは、それぞれ 0.25, 0.50, 0.25
平均値 0.33, 分散 0.014

2) y = x*x (0<=x<=1) の場合
A では 0, 0.5, 1 となる領域の大きさは、それぞれ 0.58, 0.24, 0.18
平均値 0.33, 分散 0.030
B では 0, 0.5, 1 となる領域の大きさは、それぞれ 0.50, 0.37, 0.13
平均値 0.33, 分散 0.020

3) y = sqrt(x) (0<=x<=1) の場合
A では 0, 0.5, 1 となる領域の大きさは、それぞれ 0.11, 0.33, 0.55
平均値 0.33, 分散 0.033
B では 0, 0.5, 1 となる領域の大きさは、それぞれ 0.06, 0.50, 0.44
平均値 0.33, 分散 0.037

---
川合さんが 「色の出現率」や「均等に色が使用される」という主張が、分散値
が低いということであれば、

y = x * x なグラデーションには成立しません。
また、y = sqrt(x) なグラデーションにおいては、領域の変換結果が
かなり異なっています。

さて、y = x * x なグラデーションや、 y = sqrt(x) なグラデーションを
川合さんが見た場合でも、n系の方が自然に見えるのでしょうか。

この考察は、グラデーションだけではなく、画像の色の分布でも言えることで
す。

>   しかし僕は、n系のほうが優れているという主張をするつもりはあり
> ません。客観的な優劣は決められない、主観によるだろう、という立場
> です。

繰り返しますが、パレットの選定が一意に決まる i系と、使用者が自由に決める
n系は直接比較できません。川合さんが現在使っている切り捨て、切り上げ、四
捨五入
ではない、パレット選択をしたn系を私は問題ありと主張するのみです。

> 
> >OSASK ver.4.3 以降の pioneer のリファレンスでは、「グラフィックボックス
> >で
> >「高速」モードを選択するとn式色調変換アルゴリズムが使用され、暗いものは
> >より暗く明るいものはより明るくする変換が行われます」としっかりと
> >説明しておく必要があります。なぜなら、この時に「減色」という定義とは
> >異なった処理が行われるので「減色」という表現だと使用者が誤解するからで
> >す。
> 
>   その辺は、どちらでも僕は構いません。

では、使用しているアルゴリズムも含めて記述して欲しいと思います。

>   それは、僕のいいたいことをやっぱり的確に表わしていない気がしま
> す。説明が長くなることを許してもらえるなら、僕は次のようなものを
> 指し示しているつもりでした。
> 
>     実数値関数として「f(x) = a * x」で変換されるようなもので、こ
>   れを整数値へ丸める変換。この場合整数への丸めの手法は規定しない
>   (だから切り捨てでも四捨五入でも切り上げでも、その他の方法でも
>   よい)。

前述した通りのことを気をつけていただければ問題ありません。


>   それで確認ですが、整数論でリニアという語があるんでしょうか。つ
> まりi8は整数から整数への変換であって、しかも丸めを伴っています。
> そういうときにリニアという言葉を普通に使っていて、それは線形量子
> 化を意味するのでしょうか。後学のために、教えてください。

整数から整数への変換という点では使っていないかもしれません。しかし、
線形量子化の定義を離散化された数値に拡張することは問題はないと思います。

線形量子化についての説明を見ると、音における、時間と音圧の関係で
説明されていると思います。オーディオにおいて、線形量子化を使わずに、
n系で、領域を 0 から 1までで等分割するやり方で、再生までを考えた時
に問題ないと思いますか?
前回のセンサについての川合さんの説明において、元の連続値のデータを
センサで離散化したあと、再生する場合を考慮してみて下さい。
その場合の誤差は、線形量子化してから逆量子化した場合と比較して
どうでしょうか。

音は時間と音圧の関係ですが、静止画像の場合は、x軸, y軸に対する、
RGBあるいは色相、彩度、明度という関係で、信号処理としては多次元になっ
ただけです。



-- 
小柳 雅明(http://homepage1.nifty.com/dreaming/)
「人の足を止めるのは"絶望"ではなく"諦観"
  人の足を進めるのは"希望"ではなく"意志"」
                  -- ARMS

ML番号でジャンプ
ML単語検索