36

私がやりたいのは、シンプルなアプリの画像認識です。

  1. 与えられた画像(500 x 500)pxs(1色の背景)
  2. 画像には、(50x50)ピクセルの幾何学的図形(三角形または正方形またはsmaleyface :))が1つだけ含まれます。
  3. Pythonは図形の認識を行い、幾何学的図形が何であるかを表示します。

リンクはありますか?ヒントはありますか?APIはありますか?thxs :)

4

4 に答える 4

32

典型的なPythonツールチェーンは次のようになります。

形を区別する限り、背景の形を見ることでそのシルエットを得ることができます。次に、コーナー検出アルゴリズム(Harrisなど)を使用してコーナーの数を検出します。三角形には3つの角、正方形4、そしてスマイリーなしがあります。これは、Scipyを使用したHarrisコーナー検出のPython実装です。

編集:

コメントで述べたように、ブログ投稿では、アルゴリズムに必要なガウスカーネルを生成する関数は示されていませんでした。これがScipyクックブックのそのような関数の例です(素晴らしいリソースです):

def gauss_kern(size, sizey=None):
    """ Returns a normalized 2D gauss kernel array for convolutions """
        size = int(size)
        if not sizey:
            sizey = size
        else:
            sizey = int(sizey)
        x, y = mgrid[-size:size+1, -sizey:sizey+1]
        g = exp(-(x**2/float(size)+y**2/float(sizey)))
        return g / g.sum()
于 2009-10-21T22:50:48.993 に答える
10

OpenCVにはブロブ分析ツールがあり、お気に入りのパターン認識アルゴリズムにフィードできる形状に関するメトリックを提供します:)例:長方形の比率は、円の比率が約0.78の場合、面積/(高さ*幅)に対して1.0の比率になります。

于 2009-10-21T21:30:01.733 に答える
3

幾何学的図形が50x50ピクセルであることを示します。幾何学的図形のサイズと方向が固定されている場合、相関法に適した古典的なテンプレートマッチングの問題があります。テンプレートマッチングは、元の画像または境界検出出力に適用できます。

それ以外の場合、サイズ(スケール)および/または方向が任意である場合、フーリエ記述子を適用できます。これらの記述子は、回転とスケールの不変条件です。

これらのメソッドはすべて、OpenCV、NumPy、またはSciPyを使用してコーディングできます。

于 2009-11-06T17:37:36.467 に答える
2

データの状態空間がわかっている場合は、主成分分析を使用できます。PCAでは、すべてのオブジェクトを(画面の中央に)配置する必要があります。PCAは検出を行いませんが、オブジェクトを一意のレイヤーに分離し、三角形などとして識別できます。また、これはスケールや回転に不変ではないことに注意してください。

[この手法が何と呼ばれるかは思い出せませんが、郵便局が手書きのrecを行う方法と似ています]湾曲していない曲線のみを処理できる場合は、エッジ検出を実行してから、交差点でサンプリングを実行して、類似性。

于 2009-10-21T21:18:17.593 に答える