ARToolKitの物体認識 その① HSV色空間での色認識
新しいプログラムは「物体認識」とか凄そうな名前を付けましたが、
基本的にはtwoViewを使ったプログラムの延長です。
今回は、前回のプログラムの色認識を改良しました。
少しずつ純粋なARToolKitから離れてきています。
--- < HSV色空間について > ---
HSVなんて聞きなれない単語ですが、簡単に言うとRGBの親戚みたいなものです。
知っての通り、RGBは「赤・緑・青」の色を組み合わせて多くの色を表現しますが、
HSVでは代わりに「色相・彩度・明度」という属性を組み合わせることで色を作ります。
詳しくは、Wikiを参照してください。
なぜRGBじゃなくてHSVを使うのかというと、こっちの方が特定の色を見つけやすいからです。
Wikiを見てもらえば分かるように、HSVでは赤とか青とかの情報は色相を見れば大体分かります。
残りの彩度や明度は、言ってみれば明るさや暗さみたいなもので、ほとんど無視していいものです。
逆に言えば「明るい赤」も「暗い赤」も、同じ赤として認識してくれることになります。
実際には、物体の「影の部分」や「光が反射している部分」まで認識してくれる可能性がある、
ということです。
--- < 実行結果 > ---
今回は、このHSV色空間で画像を扱うために、OpenCVというフリーの画像処理ライブラリを使用しました。
また指定色の物体は綿棒ではなく、色風船の端を切って指にはめてみました。
HSV色系を用いる以外の処理は、今までと一緒です。
とりあえずはうまくいっているようです。
しかし、欠点もあります。
HSV色系はそのままだと感度が良すぎて、余計なものまで認識してしまいます。
上の画像では、閾値を狭くしたので指の先を正しく認識できていません。
そこで、閾値を広くすると下の画像のようになります。
閾値が広いと指の部分を正しく取得できますが、同時に関係ない部分まで誤認してしまっています。
このような結果にならないように、「彩度・明度」も考量しなくてはならず、
「色相」の閾値も、そのつど微調整が必要です。
またこれまで以上に、撮影環境に気を使わなくてはいけないかもしれません。
この辺は今後の課題です。
基本的にはtwoViewを使ったプログラムの延長です。
今回は、前回のプログラムの色認識を改良しました。
少しずつ純粋なARToolKitから離れてきています。
--- < HSV色空間について > ---
HSVなんて聞きなれない単語ですが、簡単に言うとRGBの親戚みたいなものです。
知っての通り、RGBは「赤・緑・青」の色を組み合わせて多くの色を表現しますが、
HSVでは代わりに「色相・彩度・明度」という属性を組み合わせることで色を作ります。
詳しくは、Wikiを参照してください。
なぜRGBじゃなくてHSVを使うのかというと、こっちの方が特定の色を見つけやすいからです。
Wikiを見てもらえば分かるように、HSVでは赤とか青とかの情報は色相を見れば大体分かります。
残りの彩度や明度は、言ってみれば明るさや暗さみたいなもので、ほとんど無視していいものです。
逆に言えば「明るい赤」も「暗い赤」も、同じ赤として認識してくれることになります。
実際には、物体の「影の部分」や「光が反射している部分」まで認識してくれる可能性がある、
ということです。
--- < 実行結果 > ---
今回は、このHSV色空間で画像を扱うために、OpenCVというフリーの画像処理ライブラリを使用しました。
また指定色の物体は綿棒ではなく、色風船の端を切って指にはめてみました。
HSV色系を用いる以外の処理は、今までと一緒です。
とりあえずはうまくいっているようです。
しかし、欠点もあります。
HSV色系はそのままだと感度が良すぎて、余計なものまで認識してしまいます。
上の画像では、閾値を狭くしたので指の先を正しく認識できていません。
そこで、閾値を広くすると下の画像のようになります。
閾値が広いと指の部分を正しく取得できますが、同時に関係ない部分まで誤認してしまっています。
このような結果にならないように、「彩度・明度」も考量しなくてはならず、
「色相」の閾値も、そのつど微調整が必要です。
またこれまで以上に、撮影環境に気を使わなくてはいけないかもしれません。
この辺は今後の課題です。
