roboforum.ru

Технический форум по робототехнике.

Робот - картежник

Наше хобби — конструировать и программировать.
Демонстрация готовых роботов и устройств построенных своими руками.

Робот - картежник

Сообщение Scorpio » 10 апр 2010, 01:54

Задумал я обучить своего шашечного манипулятора какой-нибудь несложной карточной игре, типа «в очко». Для начала думаю над системой распознавания карт роботом. Понятно, что логичнее всего использовать для этого WEB-камеру, которая всегда под рукой. Проще всего было бы крапить карты каким-нибудь цветным кодом. Но это не очень эстетично и трудоемко. Другой вариант – распознавать буквы и цифры в уголке карты. Порылся в и-нете, с целью найти готовый ActiveX для распознавания символов. Но кроме громоздких приложений, для распознавания сканированных текстов, ничего не нашел. Вариант попроще– сравнивать изображение с образцами картинок. Но, опять же, ничего удобного в использовании не нашел. Поискал алгоритмы – предлагают в основном попиксельное сравнение, что мне кажется, в условиях меняющегося освещения, не даст нужного результата. Думаю, что надо делать как-то так:
- полученное с камеры изображение преобразовать в ч/б низкого разрешения ориентируясь на яркость пикселей (пока тоже не знаю, как попроще это сделать),
- получить массив данных,
- сравнить с массивами образцов, используя какую-то оценочную функцию,
- выбрать наиболее совпавшее.
Если у кого есть такой опыт, буду признателен за советы.
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: Робот - картежник

Сообщение =DeaD= » 10 апр 2010, 08:07

Надо образцы кадров на которых что-то распознавать потом, без этого разговор о сферическом коне. Будут там видны цифры и буквы, не будут - фиг знает, может даже человек не различит на кадре.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Робот - картежник

Сообщение Levsha128 » 10 апр 2010, 14:11

Тут, в принципе, ничего хитрого нет.

Сначала нужно определить(найти) карту, для этого желательно играть на однородном фоне.
*Потом нужно трансформировать участок изображения с картой.
А потом пройтись ИНС. Профит.

*Обратный вариант: хранить образец высоком разрешении и трансформировать уже его, только нейросеть уже не прокатит.
Смотри в корень!
Аватара пользователя
Levsha128
 
Сообщения: 22
Зарегистрирован: 08 мар 2010, 20:19
Откуда: Херсон
прог. языки: C++, Delphi, ASM, Си
ФИО: Шульга Алексей

Re: Робот - картежник

Сообщение Angel71 » 10 апр 2010, 14:59

Scorpio, активикс вам еще зачем, исходники и библиотеки в виде dll`ок вам чем не угодили?
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: Робот - картежник

Сообщение citizen » 10 апр 2010, 22:49

А RoboRealm не подходит?
OpenSimpleLidar - проект простого самодельного лидара.
Аватара пользователя
citizen
 
Сообщения: 369
Зарегистрирован: 12 окт 2008, 12:40
Откуда: Красногорск, Подмосковье

Re: Робот - картежник

Сообщение Scorpio » 13 апр 2010, 02:06

Извиняюсь, был в отъезде...
=DeaD= писал(а):Надо образцы кадров на которых что-то распознавать потом, без этого разговор о сферическом коне.

Для облегчения задачи, решил, что буду распознавать карты не на столе, а уже во время раздачи. Сделаю эдакий контейнер для колоды, который будет выплевывать по одной нижней карте из колоды игроку или роботу. Несведущему игроку, будет и невдомек, что на дне черного ящика спрятано подглядывающее устройство. Преимущество очевидно – карта всегда в одном и том-же положении, масштабе и можно использовать подсветку. Т.е. робот получая карту, уже будет знать ее достоинство. А за игроком можно и не подглядывать.
Levsha128 писал(а):Тут, в принципе, ничего хитрого нет...

При слове нейросети меня бросает в дрожь. Никогда ими не занимался.
Angel71 писал(а):Scorpio, активикс вам еще зачем, исходники и библиотеки в виде dll`ок вам чем не угодили?

Вы будете смеяться, но на ПК я по старой привычке пишу на VB6. DLL-ки можно, но не все. VB6, например, не поддерживает вызов обратных функций. Но DLL-к я тоже по конкретной теме (сравнение 2-х изображений) пока не нашел.
citizen писал(а):А RoboRealm не подходит?

Реалм распознаванием символов не занимается, сравнением картинок вроде как тоже. Хотя он умеет массу полезных для робостроителя вещей.
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: Робот - картежник

Сообщение Angel71 » 13 апр 2010, 02:32

:) нет желания устраивать диспут, но беглый поиск по "VB6 callback" говорит немного о другом. вникать ошибаюсь или нет желания тоже нет. в любом случае, искать нужный activex затея сомнительная.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: Робот - картежник

Сообщение citizen » 13 апр 2010, 17:43

В roborealm есть такая вещь:
http://www.roborealm.com/help/Fiducial.php
картинки вроде распознает(там внизу пример есть).
OpenSimpleLidar - проект простого самодельного лидара.
Аватара пользователя
citizen
 
Сообщения: 369
Зарегистрирован: 12 окт 2008, 12:40
Откуда: Красногорск, Подмосковье

Re: Робот - картежник

Сообщение Scorpio » 15 апр 2010, 01:16

На практике оказалось все не так просто. Несмотря на то, что карты в контейнере будут располагаться одинаково, малейшее смещение изображения существенно усложняет анализ. Нашел таки библиотеки, сделанные для этих целей профессионалами на http://www.elphotox.com. Но, даже они не могут отличить 6-ку от 8-ки той-же масти (если фоткать только уголок карты), либо путаются при смещении той-же карты. К тому-же они сильно платные и все время выскакивает мерзкое окошко, призывающее к регистрации. Видимо всеже прийдется крапить карты цветным кодом.
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: Робот - картежник

Сообщение EdGull » 15 апр 2010, 07:04

а вот такое видел?
http://aimatrix.nm.ru/aichip2/AITest02.htm
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: Робот - картежник

Сообщение Alt333 » 15 апр 2010, 08:23

Я сейчас занимаюсь разработкой робота сортировщика. Это что то типа подъемного крана, работающего в 3 осях. Вот там тоже применяю распознавание. Картинка с веб камеры берется, перебирается попиксельно, находя нужную деталь, оттаскивает ее в определенное место. Для того чтобы не было проблем с освещенностью, нужно сделать в программе функцию автокорректировки. Тоесть программа сканирует изображение определяет освещенность и сравнивает ее с какой нибудь эталонной таблицей. В которой находятся диапазоны цветов для каждой освещенности.

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

Вот пример видео как это работает:

http://www.youtube.com/watch?v=gQ_IR071mhM
Alt333
 
Сообщения: 30
Зарегистрирован: 24 мар 2010, 19:45
Откуда: Пермь
Skype: skype.ieremeev
прог. языки: С++, PHP, Delphi,
ФИО: Еремеев Игорь Михайлович

Re: Робот - картежник

Сообщение tsrodger » 15 апр 2010, 15:29

Вы вроде на VB пишите - почему бы не попробовать EmguCV (порт OpenCV под .Net)
Аватара пользователя
tsrodger
 
Сообщения: 134
Зарегистрирован: 18 сен 2008, 17:31
Skype: tsrodger
прог. языки: VB.Net, C, PHP

Re: Робот - картежник

Сообщение Angel71 » 15 апр 2010, 15:43

покажите реальную картинку того, что нужно распознавать
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: Робот - картежник

Сообщение Scorpio » 16 апр 2010, 18:43

Angel71 писал(а):покажите реальную картинку того, что нужно распознавать

Вот к примеру определить, что карты по горизонтали одинаковые,а по вертикали разные.
proba.jpg
картинки полученные с камеры
proba1.jpg
преобразованные в ч/б
proba2.jpg
с укрупнением пикселей

Смещение в контейнере м.б. и больше.
Пока что думаю сравнивать так:
1.Распознавать отдельно область масти и область значения карты, красные и черные сразу разделить.
2. Распознаваемую область вписать в прямоугольник эталонного размера,
3. Сравнить с эталоном по трем параметрам: количество черных пикселей, количество ЧП на своих местах, количество ЧП не на своих местах.
Посмотрю, что из этого получится.
Спасибо всем за советы. В выходные изучу их повнимательнее.
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: Робот - картежник

Сообщение Angel71 » 16 апр 2010, 21:25

:angel: уууух, да тут всё просто идеально. :oops: нейронка легко с такой задачей справиться. единственно "укрупнение пикселей" немного не понравилось.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

След.

Вернуться в Наши проекты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 27