7

RGBでは256^3の組み合わせ=16,777,216色を表すことができ、人間の目では約10,000,000しか区別できないため、色彩的に対応する色と区別できない6,777,216のRGBの組み合わせが明らかに余剰になります。

圧縮アルゴリズムは、私が信じるフレーム全体の色範囲の空間的な違いを概算するときに、これに基づいて機能します。それを念頭に置いて、特定の色が別の色との「類似性」の範囲内にあるかどうかを確実に計算するにはどうすればよいでしょうか。

もちろん、「類似性」は微調整可能な任意の/調整可能なパラメータの一種ですが、これはとにかく近似値です。それで、そのような関数をモデル化するのに役立つポインタ、擬似コード、直感的なコードサンプル、リソースはありますか?

助けてくれて本当にありがとうございます

4

3 に答える 3

12

色間の距離を計算する方法はたくさんありますが、最も単純な方法は、任意の色空間の色成分で定義されます。これらは、RGBカラー(r1、g1、b1)と(r2、g2、b2)の間の一般的な「距離」またはメトリックです。

  • L 1:abs(r1-r2)+ abs(g1-g2)+ abs(b1-b2)
  • L 2:sqrt((r1-r2)²+(g1-g2)²+(b1-b2)²)
  • L∞ </sub>:max(abs(r1-r2)、abs(g1-g2)、abs(b1-b2))

ただし、これらは、人間の視覚が明るさよりも色に敏感でないという事実を考慮していません。最適な結果を得るには、RGBから明るさと色を別々にエンコードする色空間に変換する必要があります。次に、新しい色空間で上記のメトリックの1つを使用します。おそらく、明るさのコンポーネントにより多くの重みを与え、色のコンポーネントにはあまり重みを与えません。

互いに区別できない色の領域は、マクアダム楕円と呼ばれます。CIELUVおよびCIELAB色空間では楕円がほぼ円形になります。これは計算に最適ですが、残念ながらRGBからこれらの色空間に移行するのはそれほど簡単ではありません。

JPEGは色をYCbC rに変換します。ここで、Yは明るさで、2つのCは色をエンコードし、Cコンポーネントの解像度を半分にします。同じことを行ってから、上記のメトリックのいずれかの加重バージョンを使用できます。次に例を示します。

diff = sqrt(1.4*sqr(y1-y2) + .8*sqr(cb1-cb2) + .8*sqr(cr1-cr2)) 

ウィキペディアの色差に関する記事には、さまざまな色空間の例がさらにあります。

于 2012-08-22T10:15:40.673 に答える
6

知覚的な色差は、 CIEDE2000色差式を使用して計算できます。CIEDE2000の式は、LCH色空間(Luminosity、Chroma、およびHue)に基づいています。LCH色空間は円柱として表されます(ここの画像を参照)。

精度が低い(ただし管理しやすい)モデルは、ラボ色空間(L * a * b *)に基づくCIE76色差式です。RGBおよびCMYKカラーモデルはデバイスに依存するため、RGBまたはCMYK値とL * a *b*の間の変換の簡単な式はありません。RGBまたはCMYK値は、最初にsRGBやAdobeRGBなどの特定の絶対色空間に変換する必要があります。この調整はデバイスに依存しますが、変換から得られるデータはデバイスに依存しないため、データをCIE 1931色空間に変換してから、L * a *b*に変換できます。この記事では、手順と式について説明します。

于 2012-08-22T10:04:42.663 に答える
1

RGBカラーシステムは、2つの色の値が互いに近い場合、色も知覚的に近いように設計されています。

例:

RGB =(100、100、100)で定義される色は、知覚的にはRGB =(101、101、100)、RGB =(98、100、99)などの色とほぼ同じです。

于 2012-08-22T09:57:11.377 に答える