2019年11月11日月曜日

棋譜OCRプログラムの軌跡(4)石の座標を求める(ピクセル)

石の座標は、OpenCvのハフ変換:HoughCircles関数を使って円を検出することで求めました。
(Cv2はOpenCvSharpのクラスです)
            CircleSegment[] circles = Cv2.HoughCircles(gray, HoughMethods.Gradient,
                                      1, 1, 50, 20, (int)(dx * 0.5 - 4), (int)(dx * 0.5) + 1);

ここで
 gray:電子本から取り込んだ画像をモノクロ化した画像(ここを参照)
 dx   :盤面のマス目の大きさ
    前回求めた、盤面輪郭の縦罫線のx座標をもとに
    (右罫線のx座標 - 左罫線のx座標)÷ 18
 (int)(dx * 0.5 - 4):検出する円の半径の最小値
    (int)(dx * 0.5+ 1):検出する円の半径の最大値

上記検出処理の結果を図示すると、

                        元の画像

        赤が検出した円

HoughCircles関数の各パラメータは、特にチューニングは特に行わず、エイヤーと決め打ちしていますが、それなりの結果が得られました。(苦笑)



参考にしたサイト
opencv 2.2 documentation »特徴検出 



開発環境
 OS:Windows10
 言語:C#(WPF使用)
 IDE:VisualStudio2019
 仕様Tool:OpenCvSharp v4.0.0.20181129
      Tesseract v3.3.0.0
 使用電子本:電子書店パピレスのNHK 囲碁講座 テキスト

0 件のコメント:

コメントを投稿