私がやりたいのは、シンプルなアプリの画像認識です。
- 与えられた画像(500 x 500)pxs(1色の背景)
- 画像には、(50x50)ピクセルの幾何学的図形(三角形または正方形またはsmaleyface :))が1つだけ含まれます。
- Pythonは図形の認識を行い、幾何学的図形が何であるかを表示します。
リンクはありますか?ヒントはありますか?APIはありますか?thxs :)
私がやりたいのは、シンプルなアプリの画像認識です。
リンクはありますか?ヒントはありますか?APIはありますか?thxs :)
典型的な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()
OpenCVにはブロブ分析ツールがあり、お気に入りのパターン認識アルゴリズムにフィードできる形状に関するメトリックを提供します:)例:長方形の比率は、円の比率が約0.78の場合、面積/(高さ*幅)に対して1.0の比率になります。
幾何学的図形が50x50ピクセルであることを示します。幾何学的図形のサイズと方向が固定されている場合、相関法に適した古典的なテンプレートマッチングの問題があります。テンプレートマッチングは、元の画像または境界検出出力に適用できます。
それ以外の場合、サイズ(スケール)および/または方向が任意である場合、フーリエ記述子を適用できます。これらの記述子は、回転とスケールの不変条件です。
これらのメソッドはすべて、OpenCV、NumPy、またはSciPyを使用してコーディングできます。
データの状態空間がわかっている場合は、主成分分析を使用できます。PCAでは、すべてのオブジェクトを(画面の中央に)配置する必要があります。PCAは検出を行いませんが、オブジェクトを一意のレイヤーに分離し、三角形などとして識別できます。また、これはスケールや回転に不変ではないことに注意してください。
[この手法が何と呼ばれるかは思い出せませんが、郵便局が手書きのrecを行う方法と似ています]湾曲していない曲線のみを処理できる場合は、エッジ検出を実行してから、交差点でサンプリングを実行して、類似性。