2011-03-09 23 views
0

できるだけ少ない労力で解決したい課題があります(QT & C++またはJavaが好ましい):Webcamビデオ入力を使用して、(またはそれ以上の)クレートがあるかどうかを検出したいカメラレンズの正面にあるかどうかを確認してください。シーンが「クリア」から「レンズの前にクレートがあります」に変化し、カムがそのビデオ信号をアプリケーションに供給している間に戻ることができます。プロトタイプのテスト/学習のために、私は「空の」シーンの2〜3の画像と、1つ以上のクレートの2〜3の画像を持っています。一般的なウェブカメラでのオブジェクト検出

このタスクにどのように取り組むべきか、わかりますか?私はOpenCVを見つけましたが、この単純なタスクではこのフレームワークが大きすぎるわけではありませんか?私はコンピュータビジョンの分野では初めてです。これは一般的に難しい課題ですか、ライブフィードのカムの前面に障害があるかどうかを検出するのは簡単で堅牢ですか?あなたの専門家の意見は深く感謝しています!

+0

幸運。この種のアプリケーションのほとんどは、大学でカスタム作成されています。企業で生成されるすべてのソフトウェアは、専有または販売のいずれかです。 Googleで「オブジェクト認識ライブラリのオープンソース」を検索します。 –

答えて

0

カメラの前に箱がないかどうかを検出するために、完全なコンピュータビジョンライブラリは必要ありません。スナップショットを撮り、カラーヒストグラムを作成するだけです(シンプル)。スナップショットをキャプチャするにはこちらを見てみましょう:周囲の照明と視野内の他のアクティビティのいずれかの変化の可能性を含め、ここでの変数の

http://msdn.microsoft.com/en-us/library/dd742882%28VS.85%29.aspx

0

たくさん。関心のある形状の輪郭を探すために、Cannyエッジ検出器(OpenCVとIntel Performance Primitivesもあります)を実装します。ボックスがどこにあるのかちょっと分かったら、おそらく関心領域のピクセルを合計することができます。視野のどこにでもボックスを表示することができれば、これはより困難です。

2

はここにいくつかの成功をもたらすことがあり、私が聞いたアプローチ、です:エッジが黒画素で示されていることにより、

  • は、黒と白のイメージに翻訳するためにあなたの画像にエッジ検出を実行します。
  • ヒストグラムを作成して、イメージ内のピクセルの各垂直列に黒いピクセルの頻度を記録します。ここでの理論は、1つのバケット内またはその周囲のヒストグラムにおける高い頻度の値が、木枠の端であり得る垂直の辺を示すことである。

また、画像の各行のピクセルを測定するために2番目のヒストグラムを考慮することもできます。

明らかに、これはかなり単純なアプローチであり、 "単純な"入力に大きく依存しています。空白の背景(好ましくはボックスと大きく対照的な背景)に対して「硬い」エッジを有するプレーンボックスである。

0

これはJavaで始める必要はありません。私がこのような問題を抱えていたときは、Matlab(OpenCVライブラリ)やそれに類するものから始めて、ソリューションがそこで動作してからJavaに移植できるかどうかを見てみましょう。

あなたの質問に答えるには、現在の画像と '参照'画像(あなたのケースではクレートなし)をXORすることによって同様のことをした後、ヒストグラム(右のクラスタ化されたピクセルは大きな差を意味する)可視画素を閾値と比較する。 XORは正確ではありませんが速いです。

私の主張は、Scilabとツールキットをインストールし、概念証明を書くのに2時間かかりました。 Javaで2日かかってしまい、最初の解決策がもう1つの数時間でMatte/Scilabで既に行われていたアルゴリズムを追加しても動かなかったとしたら、 IMHOあなたは間違った角度から問題に近づいています。

本当にJava/C++が問題ではないシンプルなツールのほんの一部で、Scilabやその他のMatlabクローンを使用すると、プロトタイピングと微調整がはるかに高速になるはずです。

0

オブジェクト検出には2つの部分があります。 1つは特徴抽出であり、もう1つは類似度計算である。クレートのいくつかの明白な特徴は、ジオメトリ、エッジ、テクスチャなどです。

あなたのクレートイメージからこれらの機能を抽出するアルゴリズムがあります。次に、これらの機能をトレーニングサンプル画像と比較します。

関連する問題