回答:
単純な答えは、RGBとは異なり、HSVは輝度または画像強度を彩度または色情報から分離するというものです。これは多くのアプリケーションで非常に便利です。たとえば、カラー画像のヒストグラム均等化を行う場合は、おそらく輝度成分のみでそれを行い、色成分はそのままにしておきます。そうしないと、非常に奇妙な色になります。
コンピュータービジョンでは、照明の変化に対する堅牢性や影の除去など、さまざまな理由で色成分を強度から分離することがよくあります。
ただし、HSVは色を強度から分離する多くの色空間の1つであることに注意してください(YCbCr、Labなどを参照)。HSVがよく使用されるのは、RGBとHSVを変換するコードが広く利用可能であり、簡単に実装できるためです。たとえば、MATLABのImage Processing Toolboxには関数rgb2hsv
とが含まれていますhsv2rgb
。
通常、色情報はHSV情報よりもノイズが多くなります。
例を挙げましょう。私と何人かの友人は、実際のシーンのビデオ(ノイズ、影、時にはオクルージョンの存在)の交通標識の認識を扱うプロジェクトに参加しました。それはより大きなプロジェクトの一部であったため、この特定の問題に対するさまざまなアプローチを試してみる時間を与えました(そして古いアプローチを再利用します)。私は自分で色ベースのアプローチを試みませんでしたが、興味深い情報を覚えています:_一時停止標識の支配的なRGB成分はしばしば赤ではありませんでした!(主に影による)
通常、HSVカラースペースからより良い情報を取得できます。もう一度個人的な体験の例を試してみましょう。単色の飛行機に影のある画像があると想像してみてください。RGB色空間では、影の部分は影のない部分とは非常に異なる特性を持つ可能性が高いでしょう。HSV カラースペースでは、両方のパッチの色相コンポーネントが類似している可能性が高くなります。シャドウは主に値または飽和コンポーネントに影響しますが、色相は主な「色」を示します(白で明度と希釈度なし) / black)はそれほど変化しないはずです。
この説明が直観的に聞こえない場合は、以下をお勧めします。
これらの種類の色表現が開発された理由を試してみてください:それは常に何らかの方法で、人間の色の解釈のいくつかのビューに基づいています
例えば子供たちは実際には非常に好きではない色 == 大切オブジェクト、彼らは非常に好むsatuatedオブジェクトを、色が強烈であり、非希釈したオブジェクト
これを取得していくつかの直観を開発した後、画像で遊ぶ必要があります:RGBおよびHSVコンポーネントのさまざまな画像を分解してみてください
あなたの目標は、影、強い照明、光の反射を含む画像のこれらの分解の違いを見て理解することです。
プレイしたい特定の種類の画像がある場合は、それらを分解してみてください。たぶん、HSVよりもRGBが本当にあなたのニーズに合っているかもしれません:)
私が理解できる最良の答えは、RGBはRGBが色を表示する方法に関する「実装の詳細」と関係があり、HSVは「実際の色」コンポーネントと関係があるということです。これがRGBであると言う別の方法は、コンピューターが色を処理する方法であり、HSVは人間が色を認識する方法のコンポーネントをキャプチャしようとします。
詳しく説明します。
色は電磁波に基づく知覚です。これらの波の自然な特性は、たとえば強度と周波数です。光波の周波数を赤外線から紫外線まで掃引すると、虹色に沿った色の変化が視覚的に認識されます。虹色は単一周波数の波で表されるため、「純粋な色」と見なすことができます。
現在、人間の目は、赤、緑、青の3つの主要な光周波数にのみ反応または「共鳴」することができます。事実、この応答は非線形であるため、網膜は3つの色成分を組み合わせた応答によって、指定された純粋な色(および暗黙的にその「周波数」)を区別できます。
RGB色空間は、網膜の内部構造を模倣するためにのみ存在するため、大部分の色は、便利な(コンピューターの観点から)24ビット/ピクセルの色を使用してコンピューターディスプレイに表示できます。コーディング。RGB色空間は、自然な色特性と人間の色の解釈との本質的な関係はありません。
たとえば、RGB空間でチャネルごとに実行される算術演算(たとえば、カラーグラデーションの生成)は、非常に粗雑な、または明らかに「間違った」結果にさえなります。そのため、カラーストップをRGBから他の色空間(HLS、Labなど)に変換してカラーマップを作成し、補間を実行してから、補間された値をRGBに変換することをお勧めします。
お役に立てれば!
理解するための例を挙げます。手のように、手のひら、背中のひら、そしてその下に多くの部分があります。これらの領域で異なる色の変化を見ることができますが、これらのすべての領域の色相はそれほど変化しないため、色相値は手のセグメンテーションに役立ちます。
YUVやLABと比較してHSVの方が、特徴抽出や照明の不変性や視覚化により優れていることを特によく知っていることはありません。HSVは、慣習と連続性のために、より一般的に使用されていると思います。両方が同じ色空間を使用している場合、結果を比較し、互いに通信しやすくなります。
とはいえ、HSV(RGBとは対照的に)は、私が知っている2つの理由でコンピュータービジョンで使用されます。
他の人が述べたように、輝度を彩度から分離することは有益です。ルミナンスは、オブジェクトに当たる光の量に基づいてシーン内で大きく異なります。一方、彩度はオブジェクトの固有のプロパティとよりよく相関し、適切にホワイトバランスがとれた画像では多かれ少なかれ不変です。
ただし、HSV、HSL、または実際にはクロマ平面の極パラメータ化を伴う色空間は、その目的には不適切な選択肢であることを付け加えたいと思います。それは、それらが灰色の線に特異性を導入し(色相は灰色ですか?)、ノイズとホワイトバランスに非常に敏感になるためです。さらに、極座標系で2つの色を比較するのは簡単ではありません。また、HSVの値もHSLの明度も、人間が知覚する明度やエネルギーの他の物理的測定値に対応しないことに注意してください。
線形性を維持しながら(YCbCr、YUV)、または人間の視覚を適切にモデル化(LUV、LAB)しながら、同じ輝度と彩度を分離する線形色空間がたくさんあります。それらを使用すると、色度でユークリッドL2ノルムを使用して2つの色を比較できるため、アルゴリズム全体がより堅牢になります。
なぜHSV / HSLがそれほど頻繁に使用されるのですか?客観的な答えを出すのは難しい。私の経験から、それは主にRGB-> HSV変換ルーチンの無知と可用性に起因しています。作成者がガンマ補正を理解していないコードを使用する必要がありました。さまざまな色空間は言うまでもありませんでした。RGBをHSVに変換したコードを見て、それがモジュラー量であるという事実を無視して、色相に基づいて画像をセグメント化しました。私たちは、それらが何らかの理由で裏付けられた意識的な決定ではなかったことに同意できると思います。