こんにちは、I.Tak.です。 From: Hidemi KAWAI <kawai !Atmark! imasy.org> Subject: [osask 6724] Re: Jenny2. Date: Mon, 01 Dec 2003 19:36:12 +0900 > 僕はI.Tak.さんの視点「も」理解しています。というか最初はむしろ > そっちだったのですから。I.Tak.さんの方法で考えると(=誤差という > 観点に立てば)、n8はリニアではありません。しかし、変換前後での数 > 値的な差という考えを捨てて、利用できる階調を変換に際して等分に配 > することがリニアな変換だと考えることもできて、その観点に立つと、 > n8こそリニアで、I.Tak.さんの方法は、その両側の色の利用機会を減ら > して、コントラストを抑えたものという風に見ることができます。どち > らが「本当」とか、そういうものではありません。 i8はRGB値の差を最小にすることではなく、単にリニア性を求めて作ら れています。基本の数式が線形なのです。最大値が0xc0だったら飽和させ よう、などという仮定の話は忘れてください。i8にそんな仕掛けはない からです。 では、入力と出力の差を無視してリニア性の観点に立ちます。しかし 依然i8はリニアです。利用できる階調を、パレットのある点から等分に 配しています。n8ではパレットの守備半径が場所によって異なる、とい うか偏心してます (昔同じことを主張した気が……)。 たしかに、相対的に見ればi8はn8よりもコントラストを抑えています (相対ですから、めりはりを*損なって*いるというのは違うと思います)。 しかし、コントラストを抑えても線形性は失われません (極端な場合を 除きます)。n8がリニアであるならi8もリニアです。そして、何度も言う ようですが、コントラストを上げると上下が飽和して線形でなくなります。 異質になるのです。したがってi8がリニアだからn8がリニアだとは限り ません。私は、i8のコントラストが限界で、n8はめりはりを損なっている と考えています。どちらが本当か、という問題なのです。 > I.Tak.さんが僕の視点に立って考えられないということなら、それは > それで構わないのです。僕はI.Tak.さんとは違って、この件に関して、 > 自分の支持しない方法を「品質が悪い」とか「けしからん」とは全く思 > っていません。それはそれでいいと思っています。ただ僕は気に入らな > いので、OSASKには組み入れないよ、というだけのことです。どっちの 「けしからん」と言われているとは思っていませんが、「気に入らない」 というのは誤解に基づいていると感じています。何に対する誤解なのかと いうと、理想の減色ルーチン、です。多分。 OSASKは川合さんのものですから組み入れがどうのとかいうのは最初から 考えていません。IPL4FFと同じことです。 > 変換系が好きなのかは、個人の好みに帰着するのではないでしょうか。 > RGB数値的な差が最小になることこそ美しいと思うか、全ての階調が同 > 等にまんべんなく使われることこそ美しいと思うか、の。 川合さんは、グラデーションパターンを減色したときの幾何学模様が 美しくなることに気を使っているのでしょうか。というのは、FUJI.JPGの 減色結果を見て「全ての階調が同等にまんべんなく使われ」ていることを 言い当てるのは困難だと思うからです。 > 僕は違いを強調したいのであって、どちらが客観的に優れているかと > いう認識はありません。I.Tak.さんは当初から(客観的に見て)itak法 > は高品位である、と感じさせる発言を繰り返しておられます。それに対 > 抗する意味で、主観的にn8の方がよい、ということは僕も書いています > が。 私は、いちいち断らないときは主観的に主張しています。 > 細かいことをいうと、僕が「一理ある」というとき、全面的に賛成し > ているわけではないが、その主張も筋が通っていることは十分に認めて > いる、というニュアンスなのです。それを分かってください。自分の主 > 張を取り下げてはいません。つまり、「コントラストをもとよりも強く > した」という解釈も可能だと思っているだけであって、僕はその解釈を > 支持してはいません。だからその先の話はかみ合っていません。 解釈の幅ではなく、紛れもなくコントラストを上げていると主張します。 ↓で川合さんもおっしゃるとおり、n8とi8は同じリニア変換ですが、n8 の方が係数が大きくなります。その係数は13/1020です。これは入力最大値 と出力 (パレットインデックス) 最大値が小数点以下を含めて一致する係数 3/255 (i8で採った値です。i8のコントラストが限界だと言うのはそういう 理由です) の 13/12倍であり、したがってn8は限界以上にコントラストを 高めて線形性を損ねています。 > リニアに関して言えば、I.Tak.さんも指摘の通り、結局は四捨五入か > 切り捨てかの差でしかないわけで、さらに四捨五入と切り捨ての差は、 > 誤差の違いでしかないと僕は考えています。だから、n8をリニアな変換 > であると主張するのは、数学的にも全く問題ないのです。しかしそのよ > うに考えた場合、itak8の変換係数と、n8の変換係数は少し違います。 そうです。誤差の違いでしかありません。*その点では*n8もリニアです が、i8の方がリニアに近いのです。なぜなら誤差が小さいのは四捨五入 の方だからです。 > > i8の実装は、「入力最大値と出力最大値を一致させるリニア変換」とも > >言えます。その点ではn8と同じです。 > > ちなみに、僕はk8もこの点では同じだと思っています。というのは結 > 果はどうあれ、みんな切り捨てなり四捨五入なりで、誤差を持っていま > す。k8も16階調を想定してリニアに変換したけど、実際は階調不足で、 > つぶれてしまっただけで、これも変換側としては意図しない不本意な結 > 果なのです。つまりこれらはすべて誤差の扱いの違いでしかないと僕は > 思っています。 k8は黒*だけ*がつぶれるので (部分的に誤差が大きいので) リニアでは ありません。明るい部分も同程度に潰れるならリニアっぽいと言えますが。 私はそう思います。 > > 画面モードが違うと同じRGB値でも違う値になるかもしれないと言って > >RGB値が変わってもいいやと最初から投げ出すのは問題がある姿勢だと思い > >ます。減色ルーチンに求められているのは「RGBで入力しRGBで精度良く出力 > >すること」なのではないのでしょうか。そうであるならパレットの設定を > >考慮して減色しなければなりません。 > > それは、「I.Tak.さんが」減色ルーチンに求めていることであって、 > 一般的なことではないと僕は思います。少なくとも、僕はI.Tak.さんのよ > うな意味での精度を求めていません。誤差のために、c0までしかパレット > が使えない状況下では(仮に0〜c0まではたくさんの階調が利用できたと > しても)、それ以上の輝度をあえてc0で飽和させるのをよしとするような > なのが多くの人に共通に求められているというのも、僕には全く信じがた > いです。 私が今までの人生で見てきた減色ツールはそういう風にできていたので てっきりそういうものだと思っていました。それらのツールは、パレットが 指定されているためにどうしても表現できない色については潰していました。 RGB表現での誤差が最小になる結果を良いと見ているのでしょう。逆に潰れを 回避するためにコントラストや明度を勝手に調節することは、ユーザの意図に 反すると考えているのでしょう。 全体のコントラストを落として潰れを防ぐには、画像全体の輝度分布を分析 して潰れるかどうか判断しなければいけませんから、しかたがないのかも知れ ません。しかし勝手に調節する機能があっても便利でしょうね。 > > 川合さんは基本発想がどうのとかパレットを変えたらどうのとか机上の > >空論を振り回している気がします。一体、画面モードによって発色が大い > >に変化するモニタがあるのですか。OSASKのパレット設定を毎回ころころ > >変えたりするのですか。 > > ええと、うちのTOWNSのモニタ(純正ではなく、今使っているモニタ、 > という意味です)は、大いに変化しています。黒の黒さも違いますし。 > だから画面モードによってパレットを調節する機能は、あったほうが便 > 利だろうなあと思っていました。画面モードを変えたら全体的に暗くな > るとか明るくなる、ということを経験しないほうが今は普通なんでしょ > うか(AT互換機でも、VGAモードと8bitカラーモードで多少の差を感じ > たりしませんか?うちでは、ちょっとVGAモードのほうが明るい気がし > ています。パレット値は同じはずなのに)。ちょっとうらやましいです > 。・・・だから机上の空論だって思ったのかなあ。・・・僕は水平垂直 > 周波数ごとにディスプレイの明るさやコントラストの設定などがあるの > は、てっきりそういう誤差をディスプレイ側で吸収するための高級機能 > だと思っていたのですが・・・。 VGAとVESAで発色が違うのはビデオカードの問題では…… たしかに、そういう場合は何らかの方法でコントラストを調節しないと いけませんね。そういうことなら直線性こそが全てです。そして減色 ルーチンに、部分的に飽和するような改造を施さなくて済みます(^_^ > 基本発想は僕には非常に重要に思えます。どういう意図で変換を考え > るかで、どのアルゴリズムがベストなのかということが決まると思いま > す。パレットで変換された後のRGB値との差を最小にすることを意図す > れば、必然的にI.Tak.さんのアルゴリズムがベストになるでしょう。ま > た僕のように、そんなことはどうでもよくて、00からffまでのグラデー > ションパターンに対して、変換後の面積が均等に出るような変換を意図 > すれば、n8のようなアルゴリズムがベストになるでしょう。 川合さんが「変換後の各パレットの占有面積が均等になる変換」を意図 した理由が私には理解できません。つまり、その変換が元画像に近い減色 結果をもたらすと考えられた理由が私には分かりません。 > I.Tak.さんは常に誤差のみで印象を評価する、という視点から抜けら > れないだけなのかもしれません。 全くその通りです。そして抜ける必要すら理解できません。印象がどれ ほど元の絵の印象に近いか、その評価に誤差を使うことが、私に考えられ る唯一の客観的評価です。というとまたRGB値に拘っていると思われるかも 知れませんが、直線性からの誤差を小さくするという意味です。 > たとえば僕は、減色処理をする以上、かならず変換前には存在しなか > った色境界が現われるということを前提にしています。その境界が、グ > ラデーションに対して、均等に存在していれば、それを見た人は、ああ > 、これはリニアなグラデーションなんだな、と理解することを想定して > います。むしろ、実際の色ではなく、色境界を等高線のように見立てて > て、色の差の程度を認識することもあると思うくらいです。だから、僕 > は階調数にこだわるのであって、実際の色だけを考えているわけではな > いのです(もちろん、実際の色も重要です。階調数だけ一致すればいい > とか言って、色を反転させたりはしません)。暗い色の活用に消極的な > のも、ここに起因します。 等高線の間隔だけで勾配の大きさを判断するのは誤りです。どの等高線 がどのくらいの高さを示すか知らなければ勾配はわかりません。もちろん 間隔だけで勾配を判断できるように作るのが普通ですが、込み入った地形 のところには等高線をたくさん書き込むこともありえます。「できる限り 詳細な等高線図」を意図すれば、部分的に高精度で計測できところも、 等高線をたくさん書き込めます。等高線の間隔だけで勾配を判断しようと する人はうっかりものです。そういう人に配慮していては詳細な"等高線図" を作ることはできません。 もちろん、川合さんがそういう"うっかりもの"に配慮すべきだと主張 されるならそれはそれでいいと思います。しかし「受ける印象を元の絵に 近づける」という目標に関しては妥協したと言わざるを得ません。 しかし"等高線"を見るために減色ルーチンを使うとは思ってもみません でした。 > 人間の目から受けるRGBの認識というのは、結局は周囲との相対的な > 比で決まるものだと、僕は思います(もちろん絶対的な明るさもある程 > 度認識できますが)。つまり、00-ffの絵を、00-7fしかないパレットで > 変換するとした場合、誤差を最小にするために、80以上を7fでつぶして > あとはリニア、にするのではなく、ffを半分の7fに変換するようなアル > ゴリズムを使うほうが、「受ける印象が元の絵に近い」と僕は思います > 。だから変換前後の値の誤差ではなく、変換後に使える階調をめいいっ > ぱい使うことを「僕は」意図するわけです。 n4アルゴリズムは"変換後に使える階調をめいいっぱい使"っていません。 i8アルゴリズムは、変換前後の誤差を無視して出力の直線性を重視する 場合でも最適です。つまりパレット最大値を0xc0に変えても「受ける印象 が元の絵に近い」のはn8よりもi8です。 > n系のアルゴリズムの場合、256階調の絵を、128階調に減色し、それ > をさらに64階調に減色し、それをさらに32階調に減色し・・・とやって > 仮に最終的に2階調に減色したとしましょう。この結果と、最初の256階 > 調の絵をいきなり2階調に減色した場合とで、全く差は生じません。 タイリングしないときはそうでしょう。 しかし、4個のパレットを使って減色する場合、13個の同じ大きさの タイルブロックに分割するのがn系アルゴリズムです。実用上、そのよう に差の生じない二段階変換があるのでしょうか。 > itak系のアルゴリズムでは、途中に他の変換を施してから最終結果に > 至っても、結果は不変、という変換の組み合わせは事実上ありません( > もちろん、最後に1階調にするなどの自明的なものはありますが)。 それは誤解です。4階調パレットで減色してから2階調パレットで減色 すると結果は不変です。i系には自己相似性があり、それ以上の階調でも 同じことです。 ちなみに2階調のi系変換を平面に四つ並べれば、4階調のi系変換になり ます。n系にはこうした自己相似性がありません。係数がタイリングの細か さ (n8では4段階) に左右される (i系では左右されません) ことと合わせ て、何か無理のあるアルゴリズムであることが暗示されていると思います。 > 僕はこういう性質が「一種の誤差の累積」のような気がするのです。 「誤差が大きいか小さいかも全く考えていません」とおっしゃったのに そういう「一種の誤差」を気にするとはどういうことでしょうか。 確かに、n8とi8では変換誤差に明確な違いがあります。それは、こう いう推論をして (誤解した結論から) 導き出すまでもなく、四捨五入と 切り捨て (正確には、ある値を足してから切り捨てる操作と、ある値を かけてから切り捨てる操作) の性質から分かることです。 I.Tak. <g240845 !Atmark! mail.ecc.u-tokyo.ac.jp> http://user.ecc.u-tokyo.ac.jp/~g240845/