2011-01-15 16 views
3

イメージスキャンの目的で、私はピクセル(私はUIImageから得ることができます)をあらかじめ設定された色に一致させる(一定の割合で)ようにしたいと思います。ピクセルカラーマッチングの見積もり

ピンクと言ってください。ピンクのピクセルをイメージでスキャンすると、ピクセルのRGB値がプリセットされたRGB値のように見える割合を返す関数が必要になります。このようにして、ピンクのピクセル(すべて、大部分)が正確に一致するだけではなく、私に「見える」ようにしたいと思います。

このようなアプローチに慣れている人はいますか?このようなことをどうやってやりますか?

ありがとうございます。

更新日:これまでの回答はありがとうございます。私はDamien Polletの答えを受け入れてくれました。私はそれをさらに助けてくれました.2つのRGBカラーのベクトル差を計算すると、私にとって完璧になりました(今のところ)。それは時間をかけていくつかの調整が必要になる場合がありますが、今の私は(客観Cで)次のコマンドを使用します。

float difference = pow(pow((red1 - red2), 2) + pow((green1 - green2), 2) + pow((blue1 - blue2), 2), 0.5); 

この差が85以下であれば、私は私の目標色と色を受け入れます。私のアルゴリズムは精度を必要としないので、私はこのソリューションでOKだよ:)

UPDATE 2:あなたが探している場合はより多くのための私の検索の私はあなたのための便利な、非常に(控えめ)であるかもしれない、次のURLを見つけました似たような。

http://www.sunsetlakesoftware.com/2010/10/22/gpu-accelerated-video-processing-mac-and-ios

+0

「ピンク」の意味によって異なります。暗いピンクはまだピンクですか? – 6502

答えて

2

私は自分の目標色へのベクトル差を計算し、それのノルムがある閾値未満であることを確認してくださいと言うでしょう。私はいくつかのcolor spacesがこれで他のものよりも優れていると思われます。多分HSLかL * abです。なぜならそれらは色相自体から明るさを分離し、小さい色のベクトルで小さな知覚差を表現するかもしれないからです。

this related question

2

科学的回答:両方の色をLAB色空間に変換し、そこでの真理値の距離を計算する必要があります。その値はdeltaEとも呼ばれます。

LABスペースは、正確にその人のために開発されました。つまり、距離が等しい異なる色のペアが同じ知覚される色の違いに対応します。

しかし、特定の色と一致するのではなく、色の範囲(すべての肌の色合いを言う)を探しているように見えます。それはちょうど基準色+ deltaEのtolleranceよりユーザの入力を必要とするかもしれない:

  • 色相、彩度、明度の3はtollerancesと基準色

  • refence色サンプルの雲

  • ...