2011-07-14 2 views
1

で二つの成分を比較し、彼らが 等しいかそうでない場合、私は、以下のアルゴリズムを実行しますは、私が彼らの満たされた色で構成部品に比較したいその色

   double avg1 =(comp[0].Red+comp[0].Blue+comp[0].Green)/3; 
       double avg2 =(comp[1].Red+comp[1].Blue+comp[1].Green)/3; 

を以下のように、私は、RGBのために平均化しますし、それらを比較しますこの方法は、検索した後、すべての

で正確ではありません

     double ratio = avg1/avg2 ; 
         if(ratio > 0.8 && ratio < 1.2){} //then they are supposed to be equal 

を以下のようしかし、私は最善の方法は、HSLのSPACに画像を変換していることがわかりましたeと比較する しかし、私は2色を比較する方法を得ることができないのですか? here

他の言葉で言えば、画像をHSL空間に変換した後、何ができるのですか。

お願いします!

変形 iは、成分(点列)と平均ので、平均化ステップで実際に私は、各画素のRGBの平均値の和を計算するすべての点を再検討次いでにわたって平均かより明確 ための質問へ総ポイント数

+0

あなたはどんな比較をしたいのですか? "十分近い"?あなたのユースケースは何ですか? –

+0

実際に私は2つのコンポーネントが同じ色を持っている場合は取得したいですか?それらをまとめてグループ化する – user690069

答えて

1

HSLに変換し、H(色相)の違いを使用して色をグループ化します。

1

あなたの質問が「イメージをHSLスペースに変換した後に何をすることができますか!そして、ここに行く:

  1. あなたはCV_RGB2HLSフラグでcvCvtColor()を使ってHSLにロードされてきたRGB画像を変換
  2. が同じの(3つのシングルチャンネル画像を作る(HSLイメージが自然に3チャンネル、する必要があります) HSLイメージをチャネルに分割するために、H、L、Sチャネルがそれぞれ
  3. cvSplit(hls, h, l, s, 0)に分割されます。
  4. これで、h_imageはシングルチャネルグレースケールイメージと同様になります。したがって、成分を抽出した後(RGB画像を閾値処理することから、色相チャンネル画像が奇妙に見えることがあります:P)、単に色相画像の色をその座標に対応する色と比較します。

これが役に立ちます。

関連する問題