6

私は現在、簡単なはずの画像認識の問題について疑問に思っていますが、これまで簡単な解決策を見つけることができませんでした。

入力は、明るい木の表面を示す約 1 メガピクセルの長方形の画像です。薄いが目に見えるグリッドがあります。グリッドは黒色で、規則的でほぼ正方形です (幅より約 8% 長い)。グリッド サイズは正確に 19x19 です。一般的なボードの色は「木」で、さまざまですが、明るい茶色がかった色になる傾向があります。(詳細)

表面には小さな丸い黒と白の石がたくさん置かれています。それらは常に交差点に配置されていますが、人的エラーにより、わずかにずれている可能性があります。彼らの色は純粋な黒と白です。

ボードは、0 から約 300 の石で覆われています (361 の交差点の 80%)。黒と白の石の数はほぼ同じです。

ボーダー (石が配置されていないボードの端) のサイズはさまざまですが、「小さい」ことが知られています。

光の加減で盤面に石の影が出る場合がございます。また、石の上に(光の方向に)単一の白い点が現れます。

ごばん

グリッド上の石の位置を検出したいと思います。

私の考えは、各ピクセルの明るさを見て、それらを 3 つのクラスに分類することです: 明るい (白い石)、中間 (ボード)、暗い (黒い石)。黒いピクセルが多い領域は、黒い石などと見なされます。

その後、黒と白の領域のサイズを使用して、実際のグリッド サイズを計算できます。

もう 1 つのアイデアは、グリッド ラインを認識し、それを使用してグリッドのサイズと位置を計算することです。線が非常に細い (石で覆われていることが多い) ため、どうすればよいかわかりません。

この問題に関するアイデアをぜひお聞かせください。適切と思われるアルゴリズムはありますか? 非常に役立つクールなトリックを思いつくことができますか? 私は気が狂っていて、この問題は解決できませんか? 私はC#で作業していますが、どの言語でも大歓迎です。

4

3 に答える 3

4

ここには、OpenCVプリミティブを含むいくつかの情報があります。

私はまた、OpenCVと小さな電子ボードを使ってインタラクティブな碁盤(認識用のOpenCV、対戦相手の動きを示すための標準LED)を作る道を進んでいます。開発を楽しんでください!

于 2012-03-15T08:57:02.197 に答える
0

これはブロブ分析と呼ばれます。基本的に、一致させたい色に基づいて画像を2値化し、次に2値画像にブロブ検出アルゴリズムを適用してブロブの座標を検出します。ご想像のとおり、各ブロブは石です。

いつものように、OpenCVにはこれを行うためのすべてがあると思います。

于 2011-04-21T09:33:53.620 に答える