Простое распознавание изображений: черные и белые камни на сетке

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

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

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

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

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

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

goban

I ' Я хочу определять положение камней на сетке.

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

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

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

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

6
задан mafu 21 April 2011 в 09:28
поделиться