1

私は現在、私の学校でロボット工学クラブの画像認識ソフトウェアに取り組んでいますが、一部は本当に困惑しています。それは形状認識です。アリーナの形状を検出する前に、この画像の正方形を検出できる必要があります。

JavaCVのようなライブラリをいくつか調べましたが、自分の好みに合ったものが見つかりませんでした。参考までに、これが私が形を決定しようとしている画像です

チェックするファイル

4

2 に答える 2

2

ハフ変換を適用してみましたか?

あなたの正方形はまっすぐなエッジを持っているので、それはあなたが必要とするもののようです。

于 2012-12-23T12:35:42.713 に答える
1

私はあなたの仕事に似たようなことをしていましたが、オブジェクトのクラス(抵抗、コンデンサなど)と、実際の白黒写真でのそれらの境界を認識する必要がありました。

白黒写真

基本的に、メソッドは次のようなものでした。

  1. 前処理-正しいコントラスト、明るさ、侵食、膨張、中央値など-このステップは、写真の全体/一部に適応させることができます。
  2. セグメンテーション-面積、ピクセル強度などのしきい値を持つ「何か」が存在する可能性のある写真の部分を見つけます。
  3. 特性化-見つかった潜在的なセグメントごとに、いくつかの特性を計算します-最大長、面積、W、M-行列式など。
  4. 分類-与えられた特性がこのクラスに属することができるかどうかをチェックするいくつかの分類子があり、答えがイエスである場合-理想的なモデル特性に対する与えられた特性の「距離」は何ですか。分類はファジー論理推論を使用して行われました。
  5. そしてもちろん、分類が成功するたびに、それらが存在する場合は最良の一致を取ります。

あなたの場合-正方形の最も簡単な特徴は、その面積と、見つかったセグメントに属する2点間の最大距離を見つけることです。そしてその前に、 「閉じる」操作(拡張->侵食)で画像を前処理する必要があります

また、正方形が線で切断されているかどうかを認識し(そして、その線を削除してから再度認識し)、正方形が他の正方形と重なっていないかどうかを確認するための優れたアルゴリズムを作成することもできます。


個人的には、のような複雑なことをするライブラリは知りませんlibrary.recognizeSquaresOnImage(params)。認識のために画像を準備するためのいくつかの便利な方法が提供されます-あなたのタスクのコア-あなたは自分でしなければなりません。

すべての認識問題には、「認識パイプリー」のすべてのステップで不確実な結果を絞り込むために使用できる独自の機能があります。たとえば、私のタスクでは、オブジェクトがかなり白い背景に黒く、多かれ少なかれ互いに分離されていることなどを知っていました。

私のプロジェクトはOpenCVライブラリを使用してC++で記述されており、画像の読み取り/書き込みとウィンドウへの表示のみにOpenCVライブラリを使用していました。ライブラリの他のメソッドを使用することは許可されていませんでした。

参考までに、どのようにそれを行うことができるか-ここにプロジェクト全体があります。今でも完全には機能しません。分類器のキャリブレーションが必要です。

それがより高いレベルでどのように機能するかをよりよく理解するには、main.cppファイルを見てください。

于 2012-12-23T12:29:33.037 に答える