web-dev-qa-db-ja.com

python画像認識

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

  1. 指定された画像(500 x 500)px(1色の背景)
  2. 画像には、(50x50)pxの幾何学的図形(三角形、正方形、またはsmaleyface :)が1つだけ含まれます。
  3. pythonは図形の認識を行い、幾何図形とは何かを表示します。

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

36
panchicore

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

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

編集:

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

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()
32
Ivan

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

10
Harriv

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

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

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

3
TH.

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

[この手法が何と呼ばれるか思い出せませんが、ポストオフィスが手書きのrecを行う方法と似ています]カーブしていないカーブフェースのみを処理できる場合は、エッジ検出を行ってから、交差点でサンプリングを行い、近似値を取得できます。類似。

2
monksy