none
【OpenCV】BGRからHSVへの画像変換 RRS feed

回答

すべての返信

  • まず、

    1.メモリー上の色は基本的にRGB形式で保持されている。
    2.RGBからHSVへの変換は、一意の値が算定できる(算法を固定できる)。
    3.HSVからRGBへの変換は、複数のHSV値が同じRGBに算定可能な場合がある。

    という事実から

    4.HSVを用いて、メモリー上の一意の色を指定することは、
     4.1 一般に近似値となる。
     4.2 範囲のあるRGB値になる場合もあり得る。
     などが考えられるため困難であると思える。

    上から、

    5.メモリー上の色の判定ではRGBを使用すべきだと思われる。
    6.これは、UI等で取得したHSV値に一致する色を求める場合でも、
     HSV値を一旦RGBの範囲値に変換して判定すべき。

    ではないかと思うのですが、どうでしょう。

    本質的に、HSV値は人間に対する便法にすぎないのでUIでの使用にとどめ、
    算定などに用いるべきではないと考えます。
    (参考)http://ja.wikipedia.org/wiki/HSV%E8%89%B2%E7%A9%BA%E9%96%93

    2014年9月24日 5:32
  • 5.メモリー上の色の判定ではRGBを使用すべきだと思われる。>思い込みかもしれないのですが、

    RGBで色を抽出しようとした場合R250 G230 B22のプラスマイナス10でぐらいでとろうと思うのですが色んなノイズを拾ってしまします。HSVで範囲を絞った方が綺麗に抽出ができるのですが、きのせいでしょうか?

    2014年9月24日 6:57
  • RGB=(250, 230, 22)がH=90というのは、BとRが逆だとそうなりますね。
    CV_BGR2HSVをつかってみては。

    というか、cvLoadImageの戻りはBGR順ですネ...
    http://stackoverflow.com/questions/9196813/byte-order-for-opencv-2-1-cvloadimage


    jzkey


    • 編集済み jzkey 2014年9月24日 7:25 原因追加
    • 回答としてマーク kirua777 2014年9月25日 2:21
    2014年9月24日 7:06
  • HSVで望む結果が得られるのならそれで良いと思います。
    黒の近傍と白色の近傍では、原理的に数値上の厳密さが怪しくなることに
    注意すべきかもしれません。
    2014年9月24日 7:19
  • ありがとうございます。

    おかけで解決しました。

    2014年9月25日 2:21