Простое распознавание изображений: черно-белые камни на сетке - PullRequest
6 голосов
/ 21 апреля 2011

В настоящее время меня интересует проблема распознавания изображений, которая должна быть простой, но пока не может найти легкого решения.

Ввод - это прямоугольное изображение размером около 1 мегапикселя с легкой деревянной поверхностью. У него тонкая, но видимая сетка. Сетка черного черного цвета, правильная и почти квадратная (примерно на 8% длиннее ширины). Размер сетки ровно 19х19. Основной цвет доски - «дерево», оно может быть разным, но обычно светло-коричневого цвета. ( подробнее )

На поверхности много маленьких круглых черных и белых камней. Они всегда размещаются на перекрестках, но из-за человеческой ошибки они могут быть немного не в порядке. Их цвет чисто черный и белый.

Доска покрыта от 0 до примерно 300 камнями (80% из 361 пересечений). Количество черных и белых камней примерно одинаково.

Размер границы (края доски, где камни никогда не размещаются) варьируется, но, как известно, «маленький».

Свет может вызвать появление на доске теней камней. Кроме того, это приводит к появлению единственной белой точки на камнях (в направлении света).

goban

Я бы хотел определить положение камней на сетке.

Моя идея заключается в том, чтобы посмотреть на яркость каждого пикселя и разбить их на 3 класса: светлый (белые камни), средний (доска) и темный (черные камни). Области с большим количеством черных пикселей считаются черными камнями и т. Д.

Впоследствии размер черно-белых областей можно использовать для расчета фактического размера сетки.

Другая идея состоит в том, чтобы распознавать линии сетки и использовать их для расчета размера и положения сетки. Поскольку линии очень тонкие (и часто покрыты камнями), я не уверен, как это сделать.

Мне бы очень хотелось услышать ваши идеи по этому вопросу. Есть ли алгоритмы, которые кажутся подходящими? Можете ли вы придумать классные трюки, которые очень помогают? Я сошел с ума, и эта проблема неразрешима? Я работаю в C #, но любой язык приветствуется.

Ответы [ 3 ]

4 голосов
/ 15 марта 2012

Вы найдете здесь некоторую информацию, включая некоторые примитивы OpenCV:

Я также готов сделать с помощью OpenCV и небольшой электронной доски интерактивный Goban (OpenCV для распознавания, стандартные светодиоды для индикации ходов противника). Веселитесь в своем развитии!

2 голосов
/ 26 августа 2013

Также не пропустите гокам.Он поставляется с исходным кодом и бумагой для объяснения алгоритмов: http://users.ics.aalto.fi/thirsima/gocam/

Вы найдете коллекцию ссылок и статей на веб-сайте kifu-snap: http://www.remi -coulom.fr / kifu-snap /

Очень хороший недавний результат - PhotoKifu: http://www.oipaz.net/PhotoKifu.html

0 голосов
/ 21 апреля 2011

Это называется анализ BLOB-объектов .По сути, вы преобразуете изображение в двоичную форму, основываясь на цвете того, что хотите сопоставить, а затем применяете алгоритм поиска блобов к двоичному изображению, чтобы найти координаты блобов.Вы правильно догадались, каждый шарик - это камень.

Как обычно, я считаю, что OpenCV имеет все для этого.

...