ビジョンと画像処理で頻繁にHSV色空間を使用するのはなぜですか?


64

追跡、人間の検出などのために、あらゆる場所でHSV色空間が使用されているのがわかります。なぜだろうか。この色空間について、RGBを使用するよりも優れているのは何ですか?


3
これは非常に良い質問です。私の意見では、HSVとは何か、RGBとは何かというもう少し詳細な情報があれば有益でしょう。ほとんどの答えはHSVとRGBを比較しているので、タイトルを言い換えてこれら2つの色空間を比較することができます。
PhilMacKay

2
もう1つの良い質問は、「HSVではなくHSVが至る所で使用されているのはなぜですか?」
posfan12

回答:


60

単純な答えは、RGBとは異なり、HSV輝度または画像強度を彩度または色情報から分離するというものです。これは多くのアプリケーションで非常に便利です。たとえば、カラー画像のヒストグラム均等化を行う場合は、おそらく輝度成分のみでそれを行い、色成分はそのままにしておきます。そうしないと、非常に奇妙な色になります。

コンピュータービジョンでは、照明の変化に対する堅牢性や影の除去など、さまざまな理由で色成分を強度から分離することがよくあります。

ただし、HSVは色を強度から分離する多くの色空間の1つであることに注意してください(YCbCr、Labなどを参照)。HSVがよく使用されるのは、RGBとHSVを変換するコードが広く利用可能であり、簡単に実装できるためです。たとえば、MATLABのImage Processing Toolboxには関数rgb2hsvとが含まれていますhsv2rgb


42

通常、色情報はHSV情報よりもノイズが多くなります。

例を挙げましょう。私と何人かの友人は、実際のシーンのビデオ(ノイズ、影、時にはオクルージョンの存在)の交通標識の認識を扱うプロジェクトに参加しました。それはより大きなプロジェクトの一部であったため、この特定の問題に対するさまざまなアプローチを試してみる時間を与えました(そして古いアプローチを再利用します)。私は自分で色ベースのアプローチを試みませんでしたが、興味深い情報を覚えています:_一時停止標識の支配的なRGB成分はしばしば赤ではありませんでした!(主に影による)

通常、HSVカラースペースからより良い情報を取得できます。もう一度個人的な体験の例を試してみましょう。単色の飛行機に影のある画像があると想像してみてください。RGB色空間では、影の部分は影のない部分とは非常に異なる特性を持つ可能性が高いでしょう。HSV カラースペースでは、両方のパッチの色相コンポーネントが類似している可能性が高くなります。シャドウは主にまたは飽和コンポーネントに影響しますが色相は主な「色」を示します(白で明度と希釈度なし) / black)はそれほど変化しないはずです。

この説明が直観的に聞こえない場合は、以下をお勧めします。

  • HSV色空間で色を表現するために使用されるコンポーネントをよりよく理解し、RGBの知識を更新してください。
  • これらの種類の色表現が開発された理由を試してみてください:それは常に何らかの方法で、人間の色の解釈のいくつかのビューに基づいています

    例えば子供たちは実際には非常に好きではない == 大切オブジェクト、彼らは非常に好むsatuatedオブジェクトを、色が強烈であり、非希釈したオブジェクト

  • これを取得していくつかの直観を開発した後、画像で遊ぶ必要があります:RGBおよびHSVコンポーネントのさまざまな画像を分解してみてください

    あなたの目標は、影、強い照明、光の反射を含む画像のこれらの分解の違いを見て理解することです。

  • プレイしたい特定の種類の画像がある場合は、それらを分解してみてください。たぶん、HSVよりもRGBが本当にあなたのニーズに合っているかもしれません:)


1
影の場合、彩度ではなく、輝度のみを変更する必要があります。
アンドレイRubshtein

@Andreyが言ったように、私は自分で色ベースのアプローチに取り組みませんでしたが、影だけではない場合、おそらく周囲からの間接照明または同様のものが役割を果たしたと推測できます。
ペネロペ

1
あなたが正しいです。ただし、間接照明の場合、色相も変化する可能性があります。
アンドレイRubshtein

1
@Andreyしたがって、「より可能性が高い」、「類似する」、「主に影響する」という言い回しです。そして、あらゆるアプリケーションに最適な色空間を選択する最良の方法は、画像データベースと異なる色空間を
いじること

3
影にあり、したがって一次光源(太陽)によって照らされていないものはすべて、二次光源(空、巨大で明るく非常に青い光)によって照らされています。人間の目では、赤はまだ赤く見えます。なぜなら、私たちの目は絶対的な色ではなく相対的な色を測定しているからです。そして、私はあなたの実際の画像データベースをいじることについて絶対に同意しています。
ジョンロバートソン

8

Hueコンポーネントのみを使用すると、照明の変動に対するアルゴリズムの感度が低くなります(不変ではない場合)。

別の一般的なオプションはLAB色空間です。ABチャネルは色を表し、AB空間のユークリッド距離は人間の色の知覚によりよく一致します。繰り返しますが、Lチャンネル(輝度)を無視すると、アルゴリズムは照明の違いに対してより堅牢になります。


7

私が理解できる最良の答えは、RGBはRGBが色を表示する方法に関する「実装の詳細」と関係があり、HSVは「実際の色」コンポーネントと関係があるということです。これがRGBであると言う別の方法は、コンピューターが色を処理する方法であり、HSVは人間色を認識する方法のコンポーネントをキャプチャしようとします。

詳しく説明します。

色は電磁波に基づく知覚です。これらの波の自然な特性は、たとえば強度と周波数です。光波の周波数を赤外線から紫外線まで掃引すると、虹色に沿った色の変化が視覚的に認識されます。虹色は単一周波数の波で表されるため、「純粋な色」と見なすことができます。

現在、人間の目は、赤、緑、青の3つの主要な光周波数にのみ反応または「共鳴」することができます。事実、この応答は非線形であるため、網膜は3つの色成分を組み合わせた応答によって、指定された純粋な色(および暗黙的にその「周波数」)を区別できます

RGB色空間は、網膜の内部構造を模倣するためにのみ存在するため、大部分の色は、便利な(コンピューターの観点から)24ビット/ピクセルの色を使用してコンピューターディスプレイに表示できます。コーディング。RGB色空間は、自然な色特性と人間の色の解釈との本質的な関係はありません。

たとえば、RGB空間でチャネルごとに実行される算術演算(たとえば、カラーグラデーションの生成)は、非常に粗雑な、または明らかに「間違った」結果にさえなります。そのため、カラーストップをRGBから他の色空間(HLS、Labなど)に変換してカラーマップを作成し、補間を実行してから、補間された値をRGBに変換することをお勧めします。

お役に立てれば!


2
私は同意しません。2つのドメインではなく、3つのドメインがあります。人間、コンピューター、物理学です。RGBモデルは、3つの色受容体を持つ人間の目から派生しています。
–MSalters

@MSalters私たちは同じことについて話していると思います(おそらく私は完全に明確にしていないかもしれませんが)。RGBディスプレイは、色知覚システムに合わせて作られています。それらには、コンピュータの対応物である(R、G、B)「座標」があります。これらの座標はなく色の物理的、「真の自然」プロパティに実装にマップ、それらは例えば、知覚的に線形勾配補間、色補正、明度及び彩度OPS等、いくつかの数学的処理を実行するために適していないので
heltonbiker

2

HSVはHue-Saturation-Valueの略です。実際には、カラープレーン表現の一種です(RGB、YCbCrなど)。

これは、デバイスに依存しない色表現形式です。HSV色表現は、特定の色の種類(肌の色、火の色など)を検出するのに役立ちます。

MatlabRGB画像をHSVプレーンに変換する関数はrgb2hsv('/inputimage_name')です。


1

理解するための例を挙げます。手のように、手のひら、背中のひら、そしてその下に多くの部分があります。これらの領域で異なる色の変化を見ることができますが、これらのすべての領域の色相はそれほど変化しないため、色相値は手のセグメンテーションに役立ちます。


1

YUVやLABと比較してHSVの方が、特徴抽出や照明の不変性や視覚化により優れていることを特によく知っていることはありません。HSVは、慣習と連続性のために、より一般的に使用されていると思います。両方が同じ色空間を使用している場合、結果を比較し、互いに通信しやすくなります。

とはいえ、HSV(RGBとは対照的に)は、私が知っている2つの理由でコンピュータービジョンで使用されます。

  1. 可視化。画像に方向情報が密集している場合は常に、HSVは視覚化に適した色空間です。画像の上に小さなベクトルをプロットする代わりに(すべてが乱雑になります)、HS(ベクトル角度)とS(ベクトルの大きさ)にマップされた方向ベクトルを置くことで、HSVで色をプロットできます。これにより、Valueコンポーネントが残ります。これは、達成したい内容に応じてさまざまな方法で設定できます。ミドルベリーオプティカルフローデータセットの例を参照してください。HSVは、方向を密に表示するために使用されます。

オプティカルフローに関するMiddlebury DBの例

  1. 他の回答で説明されているように、特徴抽出と照明不変性

0

他の人が述べたように、輝度を彩度から分離することは有益です。ルミナンスは、オブジェクトに当たる光の量に基づいてシーン内で大きく異なります。一方、彩度はオブジェクトの固有のプロパティとよりよく相関し、適切にホワイトバランスがとれた画像では多かれ少なかれ不変です。

ただし、HSV、HSL、または実際にはクロマ平面の極パラメータ化を伴う色空間は、その目的には不適切な選択肢であることを付け加えたいと思います。それは、それらが灰色の線に特異性を導入し(色相は灰色ですか?)、ノイズとホワイトバランスに非常に敏感になるためです。さらに、極座標系で2つの色を比較するのは簡単ではありません。また、HSVの値もHSLの明度も、人間が知覚する明度やエネルギーの他の物理的測定値に対応しないことに注意してください。

線形性を維持しながら(YCbCr、YUV)、または人間の視覚を適切にモデル化(LUV、LAB)しながら、同じ輝度と彩度を分離する線形色空間がたくさんあります。それらを使用すると、色度でユークリッドL2ノルムを使用して2つの色を比較できるため、アルゴリズム全体がより堅牢になります。

なぜHSV / HSLがそれほど頻繁に使用されるのですか?客観的な答えを出すのは難しい。私の経験から、それは主にRGB-> HSV変換ルーチンの無知と可用性に起因しています。作成者がガンマ補正を理解していないコードを使用する必要がありました。さまざまな色空間は言うまでもありませんでした。RGBをHSVに変換したコードを見て、それがモジュラー量であるという事実を無視して、色相に基づいて画像をセグメント化しました。私たちは、それらが何らかの理由で裏付けられた意識的な決定ではなかったことに同意できると思います。


-1

HSVカラーモデルは、RGB、YUV、Labなどと比較して、人間が色付きオブジェクトをどのように見るかに相関しています。

オブジェクトの色(色相)、彩度(彩度)、白色光がどれだけ落ちているか(強度)を確認します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.