私がやりたいのは、シンプルなアプリの画像認識です。
リンクは?ヒントはありますか? API? thxs :)
典型的な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()
OpenCV にはblob分析ツールがあり、お気に入りのパターン認識アルゴリズムのためにフィードできる形状に関するメトリックスを提供します。長方形の面積の比率は1.0(高さ*幅)で、円の比率は約0.78です。
あなたは幾何学的図形が50x50 pxであることを指摘します。幾何学的図形のサイズと方向がfixedである場合、古典的なテンプレートマッチング問題相関法 に適しています。元の画像または境界検出出力にテンプレートマッチングを適用できます。
それ以外の場合、サイズ(スケール)や方向が任意である場合、Fourier記述子を適用できます。これらの記述子は、回転とスケールの不変条件です。
これらすべてのメソッドは、OpenCV、NumPy、またはSciPyを使用してコーディングできます。
データの状態空間がわかっている場合は、主成分分析を使用できます。 PCAでは、すべてのオブジェクトを(画面の中央に)配置する必要があります。 PCAは検出を行いませんが、オブジェクトを三角形などとして識別できる一意のレイヤーに分離します。また、これは縮尺や回転に不変ではありません。
[この手法が何と呼ばれるか思い出せませんが、ポストオフィスが手書きのrecを行う方法と似ています]カーブしていないカーブフェースのみを処理できる場合は、エッジ検出を行ってから、交差点でサンプリングを行い、近似値を取得できます。類似。