環境: 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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# あまりわかりません。 複素数$c$を具体的に定めた複素写像写像$f_c(z)$に対して、原点を含む領 4 2022/10/25 09:17
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/01/11 08:33
- Visual Basic(VBA) マクロで最終行を取得したい 4 2023/05/28 12:14
- その他(プログラミング・Web制作) プログラミング 処理速度 1 2022/11/25 11:05
- Android(アンドロイド) 画面の割れたスマートフォンをテレビやパソコンに写す方法を知りたいです… 4 2022/07/19 04:46
- 高校 述語論理の基本的な質問 3 2022/04/23 10:35
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- 事件・犯罪 虚偽申告とは 以下の問題で抵触する可能性はありますか? 実際に起きた事です。 男性A(彼氏)と女性B 2 2023/05/17 02:26
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
cookieの保存について
-
5フレーム目で3秒止めて7フレー...
-
シーケンス番号の初期値
-
Kiss DN AFフレームを非表示に...
-
iframeはSEO的に不利になる?
-
VB6のスクロールバー付きフレー...
-
グリーティングカード
-
処理の速い当たり判定について[...
-
VBSでHTMLソースの取得方法で
-
2倍速を等速動画に(車載動画)
-
ドロップフレームの計算をエク...
-
imovie9の書き出し時間が長過ぎ...
-
可愛い無料写メフレームサイト
-
エクセルVBA読み込みアドレスの...
-
スライドプレゼンテーション機...
-
巻き戻しボタンを作りたいので...
-
Flashゲームのセーブ機能の作り方
-
suzuka rollOverで画像が徐々...
-
プリローダーで、画像を下から...
-
WEBブラウザの重複起動の禁止
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フレーム内に移動したい
-
ドロップフレームの計算をエク...
-
Access2010でサブフォームのフ...
-
フレーム内のオプションボタン...
-
VB6のスクロールバー付きフレー...
-
VBで動的に作成したパネルの上...
-
cisco catalystのトラブルシュ...
-
車の運転時のメガネ 縁なし(...
-
URLを隠す、または別アドレスな...
-
2Dゲーム作成する際、アニメー...
-
シーケンス番号の初期値
-
【C++】IDirect3DSurfaceのディ...
-
フレームでページ分かれていて...
-
フレームでのResponse.Redirect
-
キーフレームとはなんですか?
-
エクセルVBA フレーム内のイベ...
-
ソーラーパネルのアルミフレー...
-
B2ポスターフレームの自作
-
VBSでHTMLソースの取得方法で
-
HTMLのフレームとテーブル...
おすすめ情報