RGBA 色空間で 2 つの色の類似性を計算する方法は? (もちろん背景色は不明です)
画像内の各ピクセルに最適なパレット エントリを見つけて、RGBA 画像を RGBA 色のパレットに再マッピングする必要があります*。
RGB 色空間では、最も類似した色は、最小のユークリッド距離を持つ色であると見なすことができます。ただし、このアプローチは RGBA では機能しません。たとえば、 から へのユークリッド距離は からrgba(0,0,0,0)
よりrgba(0,0,0,50%)
も小さいですrgba(100%,100%,100%,1%)
が、後者の方がはるかに優れています。
事前に乗算された RGBA 色空間を使用しています。
r = r×a
g = g×a
b = b×a
そして、私はこの式を試しました(編集: より良い式については、以下の回答を参照してください):
Δr² + Δg² + Δb² + 3 × Δa²
しかし、それは最適に見えません— 半透明のグラデーションを持つ画像では、不連続性/鋭いエッジを引き起こす間違った色を見つけます. 不透明な色とアルファの間の直線的な比率は怪しいように見えます。
最適な式は何ですか?
*) この質問を簡単にするために、誤差拡散、ガンマ、心理視覚色空間は無視しています。
少し関連しています。この非ユークリッド RGBA 空間で最も近い色を見つけたい場合は、vp ツリーが最適です。