10

このようなスコアシートを自動的に読み取るプログラムをPythonで作成しました 傾き補正後のシート

現時点では、次の基本戦略を使用しています。

  • ImageMagick を使用して画像の傾きを補正する
  • PIL を使用して Python に読み込み、画像を白黒に変換します
  • 行と列のピクセルの合計を計算します
  • これらの合計でピークを見つける
  • これらのピークによって示される交点をチェックして、塗りつぶしを確認します。

プログラムを実行した結果は、次の図に示されています。 処理後の画像

左上に表示されている画像の下と右側にピーク プロットが表示されます。左上の画像の線は列の位置で、赤い点は識別されたスコアを示しています。右下のヒストグラムは、各円の塗りつぶしレベルと分類線を示しています。

この方法の問題点は、慎重な調整が必要であり、スキャン設定の違いに敏感であることです。アプリオリな情報を必要とせず (現時点ではドットの数に関する知識を使用しています)、シートに他の形状を描く人々に対してより堅牢な、グリッドを認識するより堅牢な方法はありますか? 2D フーリエ変換を使用すると可能かもしれないと思いますが、方法がわかりません。

私は EPD を使用しているので、かなりの数のライブラリを自由に使用できます。

4

2 に答える 2

2

これを行う正しい方法は、画像に対して連結成分分析を使用して、画像を「オブジェクト」に分割することです。次に、高レベルのアルゴリズム (コンポーネント重心のハフ変換など) を使用してグリッドを検出し、含まれるアクティブなピクセルの数を調べることで、各セルのオン/オフを判断することもできます。

于 2013-05-16T06:00:45.697 に答える