環境: Visual C++ 2010 Express, OpenCV2.1-0
VC++において、OpenCVを通してwebカメラの情報を取得しています。
更にそこからある範囲のHSV領域を抜き出すという処理を行なっているのですが、
照明などが変わると、被写体のHSVコードを正しく認識しなくなる事が起きるのです。
その補正を行いたいのですが、手法がわかりません。
C++で扱えるライブラリや、webカメラの調整を行えるソフトウェアは無いものでしょうか。
OpenCVでは、明度輝度など画像データの編集が出来るので(あまり複雑でなければ)僕自身が実装する事も可能です。
何を目的としているかは、以下のURLを見て頂ければ判ると思います。
URL: http://www.nicovideo.jp/watch/sm17425165
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
こんにちは.
いろいろな照明環境において,画像自体を単一に補正するのは難しいと思いますよ.
人工光でも蛍光灯・LED灯・白熱電球で変わりますし,太陽光もまた変化の仕方が違います.
その他では,4通りくらいの対処方法が考えられます.
1.色キャリブレーションを入れる.
プログラム起動前にスクリーンの中央にマレットを保持しておく.
プログラムの起動時に,中心の画素値(HSV値)を読み取り,その環境でのHSVコードを作成する.
(マウスクリックで画素値を取得して,随時キャリブレーション出来る様にしてもいいですね)
2.SVの判定に幅を持たせる.
照明変動環境下では,主に彩度と明度が変動してしまうので,
これらはかなりの幅を持たせて判定します.
色相(H)で絞り込みましょう.
(ただし,イルミネーションの様に光に色が付いていると厳しいですが)
3.色の他にパターンを組み合わせる.
2で判定に幅を持たせると,マレット以外の部分も検出してしまう場合があります.
これを防ぐために,パターンを組み合わせます.
a.2色パターン
マレットを2色で半分半分に塗ります.(出来ればH色相環で遠い色同士)
今までの判定を2回,2色で行い,ある程度の大きさを持ちつつ近い位置で
検出された組合せをマレットとします.
b.図形パターン
丸などの図形をマレットに書いておきます.今まで通り1色で位置を決めた後,
その場所に図形があるか判定します.
4.追跡情報を活用する.
初期位置を決めておき,座標を次のフレームまで保持しておきます.
次のフレームでは,前のフレームでの位置に近い位置しか検出処理しない事により,
位置精度を高めます.
(左端(もしくは右端)からマレットが動かないなら,単純に左端の縦1ラインを
上から下に走査して,何であれHSV値がある程度変化したら,そこがマレットの位置,
としてもこのアプリなら成立しそうな気はします)
以上,参考になりましたら幸いです.
今後、色付きのツナギを着て色領域を取らせる、複数プレイヤーでやらせる、事を考えています。
ですので最後の補足、色パターンは実装が難しそうですが、
それ以外は是非やってみたいと思います。
適切な回答をありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フレームでページ分かれていて...
-
静止画をmov形式で保存する方法
-
cisco catalystのトラブルシュ...
-
フレーム内に移動したい
-
ドロップフレームの計算をエク...
-
flashのアクションについて教え...
-
簡単な連打ゲームを作りたい。
-
短時間フーリエ変換
-
キーフレームついて
-
ビルダーでのフレームって縦幅...
-
フレーム外型寸法の15mmとはフ...
-
2倍速を等速動画に(車載動画)
-
車の運転時のメガネ 縁なし(...
-
フレーム内のオプションボタン...
-
phpで音を鳴らす
-
GetPrivateProfileString変値
-
WEBブラウザの重複起動の禁止
-
Excel VBA SetFocus
-
WebBrowserでgoogle検索するには?
-
AVIファイルを読み込む方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フレーム内に移動したい
-
Access2010でサブフォームのフ...
-
フレーム内のオプションボタン...
-
車の運転時のメガネ 縁なし(...
-
ソーラーパネルのアルミフレー...
-
ドロップフレームの計算をエク...
-
ボタンクリックで本のページを...
-
動画の遅延再生プログラム
-
トグルボタンの排他制御でご教...
-
フレームでのResponse.Redirect
-
B2ポスターフレームの自作
-
2Dゲーム作成する際、アニメー...
-
cisco catalystのトラブルシュ...
-
リンク設定時の「ターゲット」...
-
エクセルVBA フレーム内のイベ...
-
Directshowを使って動画を画像...
-
#1009: null のオブジェクト参...
-
フレーム内でのリダイレクトに...
-
2倍速を等速動画に(車載動画)
-
ActionScript 3.0についての質...
おすすめ情報