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