[osask 6774] Re: Jenny2

  こんにちは、川合です。


FORM-Akkie さんは 2003/12/06 23:39:27 の「[osask 6747] FORM: Re:
Jenny2」で書きました:

>>   本当にn8は飽和しているのかなあ。コントラストを上げたら、飽和す
>> ることがある、という主張は僕も理解できます。しかしグラデーション
>> をn8変換したものをみる限りでは、「飽和した」という印象を持つこと
>> ができません。この部分に関しては、できれば違う説明を期待します。
>
>  じゃあn系はコントラストを操作している, という点を説明します。
>n系はタイルなしだと
>	[  0, 64)→0
>	[ 64,128)→1
>	[128,192)→2
>	[192,256)→3
>と変換しますね。各ゾーン間の距離はいくつかというと, 64です。タイル
>ありだと,
>	[  0, 78)→[0,1)
>	[ 78,157)→[1,2)
>	[157,236)→[2,3)
>	[236,256)→3
>と変換されます。ゾーン間の距離は78です。
>  ゾーン間の距離というのは等高線の幅にあたるもので, これがころころ
>と変わるのはコントラストを変えていると言えるのではありませんか?
>
>>   i8が限界だというのも根拠がほしいです(それがあれば、n8が飽和を
>> 損なっていることが僕にも分かります)。僕はi8がすかすかに余ってい
>> るようにみえます(すかすかというほどひどくはないですが)。域を十
>> 分に使っていないというか。
>
>  原画のコントラストを保存するのは, 小柳さんの指摘のように, ゾーン
>間の距離とパレット値の差が同じになるときです。パレット値の差は均等
>割り付けなら最大85になりますから, ゾーン間の距離は85に固定である
>べきで, そのときコントラストが最大になります。それがi8です。

  ちょっと長いですが、ここが今回の見解の重要なところだと思ったの
で、あえて大目に引用しました。

  まずn8において、4階調減色と13階調減色とでは、コントラストが違
うのではないか、という指摘はもっともです。上記の議論はこの点にお
いて全面的に正しいでしょう。そしてi8では、どちらでも同じコントラ
ストである、というのも納得できます。

  僕は以前から、減色前と減色後でコントラストを比較するのは、そも
そも色空間が別だと考えているのであまり意味がない、と主張してきま
した。だからリニアな変換でありさえすればよい、という立場を取って
いたわけです。・・・しかし今回のI.Tak.さんの提起は、同一画面で比
較可能なものであり、興味深いものです。
  
  さて、上記理論を僕なりに整理します。4階調変換の部分はいいので
すが、13階調変換の部分の説明は、ちょっと気にいらないのです。

   [  0,  20) → 0.00    [138, 158) → 1.75
   [ 20,  40) → 0.25    [158, 178) → 2.00
   [ 40,  60) → 0.50    [178, 197) → 2.25
   [ 60,  79) → 0.75    [197, 217) → 2.50
   [ 79,  99) → 1.00    [217, 237) → 2.75
   [ 99, 119) → 1.25    [237, 256) → 3.00
   [119, 138) → 1.50

  省略しないでちゃんと書くと、n8の13階調変換はこうなります。しか
しこう書いても、I.Tak.さんの主張には全く問題がないです。変換後の
階調が1.00だけ変化するのに必要な変換前の階調差は、79です。これは
4階調減色のときとは、確かに違っています。

  それで、僕の見解です。僕は4階調減色と13階調減色とで、コントラ
ストが変わる、という点を気にしていません。もとの絵とのコントラス
トが比較できない以上、そして、コントラストの保存よりも使える色域
をめいいっぱい使うほうが重要と考える主旨上、僕はやっぱりn8系のほ
うがいいと思っています。

  またこの議論はリニア性に関する議論だったはずです。リニアである
というのは、

      f(x) = a * x

の式形であることを指しているとお互いに認識していると思うのですが
、このaの値によってリニアだったりリニアでなくなったりするわけで
はありません。

  I.Tak.さんの視点では、aを他の変換アルゴリズムとの関連性から考
えて、コントラスト保存という考えで決定しました。これはこれで一つ
の有力な方法です。

  一方僕のやりかたは、変換後の値の出現確率が均等になるように、a
を決定しました。情報量としては、そのほうが良いと思います。

  問題は、飽和しているかどうかです。コントラストが85ではないから
といって、飽和していることにはなりません。飽和というのは、k8のよ
うに、0.00かもしくは3.00のゾーンが、他のゾーンよりも広い範囲をカ
バーしているときです。

  13階調減色において、もしコントラストを79よりも小さくすれば、そ
のときは飽和現象が起こるでしょう。逆に言えば、85という値は、値域
をめいいっぱい使っていないという証拠でもあります。4階調減色と同
じコントラストを与えるほうがよい(そのために多少情報を損なっても
構わない)と考えるならi8がベストであって、コントラストの一貫性よ
りも他のことのほうが大事だと思えば、n8のほうがいいということにな
るでしょう。

  情報量の損失が小さいというのは、小柳さんが[OSASK 6731]で書いて
いたように、パレットを最適化すれば、絶対的な変換後差の最大を、i8
系よりも減らしうる、みたいな意味合いです(相対的な誤差ではないで
すよ)。もちろん僕は実際にその色で表示することそのものには興味が
ありません。でも原画の階調情報ができうる限り残っている、といえる
とは思います。・・・もちろん、こんなことは、結局、コントラストが
85対79だから起こることであって、つまり僕のほうが刻みが細かいとい
うだけのことです。

  小柳さんが[OSASK 6749]で指摘しているとおり、I.Tak.さんのアルゴ
リズムは、僕が問題にしている「基本式の単なるリニア性」以上の、よ
り数学的には好ましい性質を持っていると思います。しかし僕はこの減
色処理に限っては、n8のやり方のほうがいいと思っています。

>  タイルは小数点以下で表現するのが便利だと思いますよ。2.65と書くと,
>2に3が65%混ざることがすぐ分かります。

  この表記は、僕の13階調という説明からすると、少し気に入らない部
分もあるのですが(13階調という観点では、何色との混合がどのくらい
か、などということはもはやどうでもよく、単に0〜12の整数値であれ
ばよい)、I.Tak.さんの便宜を考えてこの主張を採用し、このメールで
はあえて4で割った値を書いています。

>>   入力を[0, 256)と考えるかどうかが、そして出力を[0, 13)と考える
>> かどうかが分かれ道なんだろうなあ。こう考えると、n8のほうがリニア
>> に思えると思うんだけど・・・。I.Tak.さんはどう思っていますか?
>
>  そう考えればn8の方が正解だと思います。でも出力は 12 までではない
>んですか? パレットがあるのは 0, 4, 8, 12 のところだけですから, 13
>というのは12と存在しない色との混色になってしまいます。

  まず、入力を[0, 256)と書いた時点で、有効なゾーンナンバーは
[0, 255]です。同じく、出力を[0.00, 3.25)と書けば、有効なゾーンナ
ンバーは、[0.00, 3.00]です(このゾーンナンバーは0.25刻み)。パレ
ットがどこにあるとか、そういう表現上の問題は、ゾーンモデル変換ア
ルゴリズムには関係ありません。256個のゾーンを、13個のゾーンに対
応づけることだけが重要です。

  何色との混合かという観点を捨てないと、ゾーンモデルは理解しにく
かろうと思います。

>  切り捨てと四捨五入と切り上げの違いは誤差の違いでしかない, という
>ことは, ある日突然四捨五入や切り上げに統一したとしても大きな破綻は
>無いはずです。しかし↑のようなn8は破綻します。

  数値上では丸め方の違いは、誤差の違いでしかありません。そして、
n8は丸め誤差の分まで想定して変換値の値域をめいいっぱい使っていま
す。一方、i8はどの丸め方でも飽和しないという、すかすかなモデルな
わけです。

  だから僕に言わせれば、もはやそのような些細な変更でも破綻しうる
からこそn8はよく(ぎりぎりまでがんばっている)、変に余裕があるか
らi8は好きになれない、ということになります。

>  色ずれもマッハバンドも気にはなりますが, 一般にマッハバンドは努力を
>認めて無視してあげるべきだと思います。離れて見たらどうですか。

  それは一つの見解です。その観点も理解できます。僕はそうは思わな
いというだけのことです。

>  「受ける印象」が本当に等高線の間隔だけで決まると思いますか?
>地図ならともかく, 絵では等高線がどの程度の"高さ"にあるかは一目瞭然
>です。
>	0 1 2 3
>というグラデーションと
>        0 0 3 3
>というグラデーション (?) では, 等高線の間隔こそ違うものの受ける印象は
>近くなりませんか?

  これは4階調と2階調を比べた話だと思いますが、僕は、

    (a) 0 1 2 3
    (b) 0 0 3 3
    (c) 0 0 1 1

の3つを示されたとき、仲間はずれはどれだと言われたら、(a)を選ぶ気
がします。もちろん、(a)に近いのは(b)か(c)かと言われたら(b)のほう
を選びます。

  あれ?なんか話がずれている気がするなあ。I.Tak.さんは、印象が近
くなるのではないかとのことですが、何と比べて、でしょうか?

  僕が(a)〜(c)で書いたのは、つまり、等高線から受けるイメージは、
輝度が近いか遠いかよりも、目に付くんじゃないか、ということだけで
す。もちろん、頑張ったから無視してくれよ、という作り手の主張もあ
りだとは思いますが。

>  だから13段階を前提にしないと話が分かりにくいんですね。
>  私もタイリングは補助的なものだと思います。しかし川合さんの考えるよう
>な補助とは違っていて, 小数点以下の成分だと考えているのです。

  それも一つの考え方だと思っています。僕はどちらの立場にも立てま
す。

>  ある値より大きいか否かを判断する方法には, 引き算をしてキャリーを
>見るのと足し算をしてキャリーを見るのとがありますが, これは足し算で
>キャリーを出しているわけですね。

  この繰り上がらせる作戦は頭いいなあ。次回バージョンアップ時には
取り入れたいです。

>  タイリングで作る色を原色と同じように扱うのはいいのですが (i系
>でもタイリングの細かさによって四捨五入定数が変化します), それが
>グラフの傾きという線型関数の背骨をいじってしまうのは無理があると
>思います。入力最大値と出力最大値 (パレットインデクス) が変わらない
>限り, グラフの傾きは変わらないはずではありませんか?

  ここではもはや説明する必要はないと思いますが、僕は「変わらない
はず」ではないと堂々と思っているわけです。グラフの傾きをいじるの
も、問題はないと思っているわけです。

>>   とりあえず、自己相似性は僕には関心がないので、指摘されても、ふ
>> ーん、という程度です。I.Tak.さんはそこも気にしているのですか?
>
>  直感的にこれは正しいことに違いないと感じて作りましたが, その必要性は
>線型の定義によって示せます。
>  線型の定義である
>	f(a+x) = f(a) + f(x)
>は, 「線型関数を[0,a]で定義すれば後の区間の定義も自動的に決まる」
>ということを示しています。例えば[a,2a]での定義は f(x-a) + f(a) と
>書けます。"並べる"というのはそういう意味でいいました (自己相似性と
>言うとやっぱり少し違うかも知れません)。
>  i8は, [0,85]→[0,1]変換をまさにこの方法で"並べた"出力をします。
>n8はそうではないようです。

  この辺は、僕のいいたいリニア性を拡大解釈していると言えるでしょ
う。僕は小数を整数に丸めた後の値の線形性はどうでもいいのです。小
柳さん指摘の、線形量子化も同じ理由でどちらでもいいと思っています
。


  それでは。

--
    川合 秀実(KAWAI Hidemi)
OSASK計画代表 / システム設計開発担当
E-mail:kawai !Atmark! imasy.org
Homepage http://www.imasy.org/~kawai/

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