1

-fuzzImageMagickのオプションで行われているのと同様の色の「距離」(または「許容範囲」または「分散」)を使用する画像検索を一緒にハックしようとしています:http: //www.imagemagick.org/Usage/color_basics/ #fuzz_distance

私が取得したいと思っているのは、データベース内の比較ポイントと照合するために使用できる、単一の初期ピクセルからのいくつかのRGB値の範囲または配列です。

明らかに、何が起こって-fuzzいるのかは、RGBキューブ内の球を表すユークリッド距離の公式ですが、数学を見つける場所や、これを実現するためにImageMagick(または他のライブラリ)を使用する方法がわかりません。

考え?

4

1 に答える 1

3

MageMagick のフォーラムでここに記載されているように、ユークリッド距離が R よりも小さい場合、色は色Bのファズ範囲内にあります。RA

sqrt((B.r - A.r)^2 + (B.g - A.g)^2 + (B.b - A.b)^2) < R

r、色のそれぞれの赤、青、緑の値を表しますgb

透明性がない場合は、それだけです。透明度を考慮する必要がある場合は、数式で使用する前に、色にそれぞれのアルファ チャネル値を掛ける必要があります。

3 次元 RGB 色空間では、特定の色のファズ範囲内の色は実際に (半径 のR) 球を形成します。

データベース内のポイントを再確認するには、それらが球の内側にあるかどうかを式で確認するだけです。

色の範囲について: 1 つの次元の「あいまいな」(= あいまいな範囲内 :-) ) 色の範囲は、他の 2 つの次元の位置に依存するため、生成できる唯一のものは、あいまいな球の周りを囲む立方体です。これでは適切な色は得られませんが、立方体の外側にあるすべての色を拒否するために使用できます。このキューブの範囲は次のとおりです。

(A.r - R) <= B.r <= (A.r + R)
(A.g - R) <= B.g <= (A.g + R)
(A.b - R) <= B.b <= (A.b + R)

アップデート:

計算用のコードリファレンスは次のとおりです。少し複雑に見えますが、それは CMYK カラーも処理する必要があるためです。RGBの場合、上記のケースに還元されます。

于 2012-11-13T12:28:47.467 に答える