2

GO ボードを認識し、そのSGF ファイルを作成するAndroid アプリに取り組んでいます。

ボード全体をワープして、以下のような正しいラインと石を見つけることができるようにする必要があります。

埋め板
(出典:eightytwo.axc.nl

現在、Opencv RGB Mat を使用して、次のことを行っています。

  • チャンネルを分ける
  • 別々のチャンネルをキャニー

    Imgproc.Canny(channel, temp_canny, 30, 100);
    
  • すべてのチャネルを結合 (ビットごとの OR) します。

    Core.bitwise_or(temp_canny, canny, canny);
    
  • ボードの輪郭を見つける

下の写真でわかるように、いくつかの線が消える傾向にあり、ボード上の黒い線と石がはっきりと見えますが、ボードの端がいくつかの場所で欠けているため、まだボードを一貫して検出することはできません.

埋め板
(出典:eightytwo.axc.nl

この検出を改善するにはどうすればよいですか? または、それを検出し、失敗したときにそれらを切り替える複数の方法を実装する必要があります..

* 覚えておくべき重要なこと *

  • 碁盤は色によって異なります
  • 囲碁盤は空であるか、完全に石で満たされている可能性があります。
    これは、盤上の外側の黒い線の検出に頼ることができないことを意味します。
  • 背景は必ずしも真っ白ではありません

これは、私が検出したい囲碁盤の写真の小さなコレクションです

* 更新 * 2016 年 5 月 23 日

これを解決するためにopencvを使用してインスピレーションを使い果たしたので、新しいインスピレーションは大歓迎です!!! その間、私は機械学習を使い始めました。最初の結果は素晴らしく、引き続き投稿しますが、opencv の実装を作成することには大きな期待を寄せています。

4

1 に答える 1

1

私は同じ問題に取り組んでいます!

私のアプローチは、次の 2 つのことを前提としています。

  1. カメラは安定している
  2. 板は安定している

これにより、ボードがまだ空の場合 (再生前) に、1 つのフレームからワープ パラメータを推測できます。これらのパラメータを使用して、ボードの端を塞いでいる石の数に関係なく、すべてのフレームをワープします。

于 2016-11-10T12:33:08.763 に答える