Модераторы: Rickert
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Распознование ситуации на шахматной доске, Помогите придумать 
:(
    Опции темы
Bitter
Дата 4.4.2008, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 5
Всего: 27



В данный момент стоит задача распознования ситуации на шахматной доске. То есть определить пуста или не пуста каждая клетка. Не более.

Есть мысль посчитать "коэффициент равномерности". То есть насколько клетка равномерна. Если коэффициент низкий, значит на ней что-то находится. Но вот как его посчитать? Ничего в голову не лезет.

Пробовал считать "коэффициент отклонения", то есть насколько в текущий момент клетка отличается от начального. Но при изменении освещения всё падает...

Просто есть куча ньюансов, например, тень от соседней фигуры. Или высокая фигура смотрится в камере "залазящей" на соседнюю клетку.

Вид сверху. Освещение яркое. Веб камера (низкие помехи)

Можете предложить другие решения?
PM MAIL ICQ Skype   Вверх
Mayk
Дата 5.4.2008, 05:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 1
Всего: 134



Скинул бы несколько кадров c камеры, чтоб понятнее было как что выглядит в реале.


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Bitter
Дата 5.4.2008, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 5
Всего: 27



А, ну да, заработался совсем. Вот: 

Тут красным я обозначил места, где находятся фигуры, а синим - артефакты, мешающие нормальному распознованию

Это сообщение отредактировал(а) Bitter - 5.4.2008, 14:18

Присоединённый файл ( Кол-во скачиваний: 62 )
Присоединённый файл  1.jpg 66,00 Kb
PM MAIL ICQ Skype   Вверх
Mazzi
Дата 8.4.2008, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Правильный
**


Профиль
Группа: Комодератор
Сообщений: 825
Регистрация: 3.4.2003

Репутация: 4
Всего: 21



В таком виде задача очень сложная.

Если это можно, поменяй фигуры объёмные и вертикальные на плоские и горизонтальные, как в книгах по шахматам. Избавишься от теней и легче распознать.


--------------------
Мне нужны помощники.
PM MAIL WWW   Вверх
ksnk
Дата 8.4.2008, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 2
Всего: 386



А это все качество, которое может выдать веб-камера? К примеру, черное-на-черном непросто увидеть даже человеку, не то, что программе...


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
maxim1000
Дата 8.4.2008, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 2
Всего: 110



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


--------------------
qqq
PM WWW   Вверх
Bitter
Дата 10.4.2008, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 5
Всего: 27



Цитата(ksnk @  8.4.2008,  15:06 Найти цитируемый пост)
А это все качество, которое может выдать веб-камера?


Не, она может выдать и цветное. Это я так её настроил, чтобы обрабатывать по оттенкам. Всё в принципе получилось. Черное на черном анализируется по блику от лампы, тени фильтрую (они серые), а чтобы найти белые на белом, надо повизиться с контрастом, чтобы фигуры стали ярче клетки. Но это всё дело случая: а что если фигуры другого цвета или матовые? 

Цитата(maxim1000 @  8.4.2008,  18:22 Найти цитируемый пост)
можно пытаться анализировать равномерность закраски клеточки


Эта мысль меня посетила первой. Я в вопросе так и написал
Цитата(Bitter @  4.4.2008,  23:38 Найти цитируемый пост)
Есть мысль посчитать "коэффициент равномерности". То есть насколько клетка равномерна. Если коэффициент низкий, значит на ней что-то находится. Но вот как его посчитать? Ничего в голову не лезет


Не пойму как его считать.


Цитата(Mazzi @  8.4.2008,  12:48 Найти цитируемый пост)
Если это можно, поменяй фигуры объёмные и вертикальные на плоские и горизонтальные


Не, фигуры настоящие должны быть. Это не учебная программа. Она должна без ошибок работать с настоящими шахматами.
PM MAIL ICQ Skype   Вверх
maxim1000
Дата 10.4.2008, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 2
Всего: 110



Цитата(Bitter @  10.4.2008,  23:15 Найти цитируемый пост)
Не пойму как его считать.


Цитата(maxim1000 @  8.4.2008,  18:22 Найти цитируемый пост)
(для начала можно дисперсию посмотреть)


т.е. сначала просто считаем среднее значение цвета
потом считаем в каждой точке квадрат отклонения от этого среднего
и уже считаем среднее этой новой величины

только нужно учитывать, что дисперсия учитывает все точки независимо
а это значит, что если у нас есть точечный шум, у него будут "равные права" с реальной неравномерностью
однако, точечный шум может не иметь таких больших отклонений, и не быть таким многочисленным

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


--------------------
qqq
PM WWW   Вверх
Bitter
Дата 11.4.2008, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 5
Всего: 27



Цитата(maxim1000 @  10.4.2008,  23:47 Найти цитируемый пост)
считаем среднее этой новой величины


Ок, а какие выводы уже делать на основе этой величины? На сколько она отклоняется от среднего? Или как?

Просто я на данный момент считаю "коэффициент отклонения" по такому алгоритму:
1. В начала запоминаем состояние клеток без фигур.
2. Когда нужно распознать занятость, вычисляю разность текущих пикселей от запомненых, предварительно сглаживая с соседними. (То есть считаю отклонение для сглаженной клетки).
3. Считаю коэффициент - кол-во отклонившихся пикселей делим на общее кол-во пикселей в клетке. Отклонившимися считаются те, разность которых превысила заданный порог.
4. В итоге получаем значение от 0 до 1. Где 0 - Абсолютно не изменившаяся клетка.

В принципе похоже на то, что ты предложил или нет?

Недостаток этого в том, что тени и прочая фигня тоже делают коэффициент высоким. Приходится применять всякие фильтры... 

Кстати я вот только что придумал: может можно как-то разбивать клетку на группы изменившихся пикселей. Тогда в случае с тенью групп будет 2-3, а в случае с фигурой больше.
Что-то не очень, да?
PM MAIL ICQ Skype   Вверх
maxim1000
Дата 11.4.2008, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 2
Всего: 110



в принципе, похоже

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

впрочем, всё это сильно базируется на равномерности закраски пустой клетки, что не совсем точно (частенько там бывает "деревянная" текстура), но попробовать можно


--------------------
qqq
PM WWW   Вверх
Bitter
Дата 11.4.2008, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 5
Всего: 27



Цитата(maxim1000 @  11.4.2008,  14:29 Найти цитируемый пост)
частенько там бывает "деревянная" текстура


У меня как раз такая на белых клетках. Если присмотреться, то на более тёмных белых видно. Это я просто яркость повысил...

Я вот подумал. Если взять шахматную доску в целом, то есть как чередование черных и белых клеток, то её тоже можно назвать равномерной, так как рисуно равномерно повторяется. А если вычислять по дисперсии, то результат будет плохим. Ведь среднее между черным и белым - серое, а каждая клетка отличается ровно на половину.

 То есть я хочу сказать, что надо найти способ избежать таких промашек. Напимер: найти наибольшее количество "одинаковых" пикселей. А потом определить насколько равномерно они распределены по клетке. Тогда можно считать что это и есть равномерность клетки.

Есть мысли как это сделать? То есть как определить степень распределения по заданному пространству?
PM MAIL ICQ Skype   Вверх
Dzo
Дата 22.4.2008, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 22.4.2008

Репутация: нет
Всего: 1



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

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

Происходит перемещение. Делаем новую фотографию новой ситуации, накладываем сетку, сравниваем с первоначальным.

Упрощения:
* ясное дело не все так просто, например программа вычисляет так называемые "возможные ходы", чтобы облегчить анализ.
* чтобы определить какая именно фигура была перемещена (если есть все-таки несколько возможных вариантов), пользуюсь алгоритмом Canny на локальном квадрате, для определения краев, а затем сравниваю с исходной базой изображений. Так как фигуры одной шахматной доски постоянны, то это не очень сложно.
* важным критерием является освещение. Проблема решалась созданием освещения, которое при включении в любом месте максимально убирало тени.

Результатами пока похвастаться не могу, не все еще готово.

Кстати, могу вот ссылку дать в помощь
http://courses.graphicon.ru/main/vision/lections

Если трудно придумать алгоритм, читаете все подряд и пытаетесь мысленно применить каждый. Фишка в том, чтобы дойти примерно до конца. То есть если даже кажется, что этот алгоритм тут ну вообще никак не катит, то попробуйте с допущениями и через Владивосток все-таки применить его. В этом процессе будут появляться, казалось бы, бредовые связки, но они зачастую становиться ключами к решению проблемы.

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

Удачи!
PM MAIL   Вверх
Bitter
Дата 22.4.2008, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 5
Всего: 27



Dzo, интересно, но чё-то я кое что не понял.

1. Что значит "накладываем сетку"?  И как Вы потом эти сетки сравниваете?

2. Что значит "затем сравниваю с исходной базой изображений". Что сравниваете? клетку с фигурой? И какая у Вас база изображений? А если фигуру повернуть?, Например, конь носом смотрел на север, а теперь на восток? И к тому же одна и та же фигура на разных клетках выглядит абсолютно по разному. 

Вот с освещением полностью согласен. Именно так я и сделал неделю назад. Но появилась новая проблема. Я видео получаю веб-камерой. А у них есть жуткая функция "автонастройка яркости". Не знаю как ее отключить, весь алгоритм ломается из-за этого.

Кстати, я перемещение отслеживаю так: 
1. Определяем занятость клеток
2. Определяем цвета фигур
3. Смотрим какая фигура передвинулась.

Есть две проблемы в этом. 

1. Рокировка. Но она тоже заметна, так как меняются сразу 4 клетки
2. Замена пешки на ферзя, при достижении противоположного края доски. Но это тоже не проблема, если предположить, что пешка меняется только на ферзя.


PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.

  • Литературу, связанную с программированием графики, обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы связанные с программированием графики и мультимедии на языках С++ и Delphi
  • Вопросы по реализации алгоритмов рассматриваются здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема »


 




[ Время генерации скрипта: 0.0555 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.