Подтвердить что ты не робот

Распознавание номинальной стоимости кости

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

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

Dice http://www.freeimagehosting.net/uploads/9160bdd073.jpg
(не лучший пример, поверхность будет более четким цветом и тени исчезнут)

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

Я надеюсь, что описанный сценарий настолько прост (читайте: обычный), что его можно даже использовать в качестве "вводного упражнения" для разработчиков, работающих с технологиями OCR или аналогичными компьютерными задачами.

Update:

Я сделал еще один поисковик и наткнулся на это видео, которое, как ни странно, точно, что я ищу, Также кажется, что проект OpenCV - мой лучший выбор, я попытаюсь использовать его с этим другой проект, OpenCVDotNet или Emgu CV.

Update:
Все еще борясь, не может заставить Эмгу CV работать.

Идеи, указатели, мысли и т.д. по-прежнему очень приветствуются!

4b9b3361

Ответ 1

Хотя обучение изображения является "нетривиальным", как сказал @Brian, на самом деле это будет довольно простая программа для записи. Что вам нужно сделать, так это разработать классификаторы хара для кубиков. Вам понадобится всего 6 классификаторов. Классификаторы являются ключом к хорошему обращению с изображениями, а классификаторы хара являются лучшими, которые есть сейчас. Они занимают много времени. Вот несколько хороших ссылок, чтобы познакомить вас с каскадами хара:

http://www.computer-vision-software.com/blog/2009/11/faq-opencv-haartraining/

http://www.cognotics.com/opencv/docs/1.0/haartraining.htm

http://note.sonots.com/SciSoftware/haartraining.html

Посмотрите это видео с ребятами youtube, а затем загрузите его источник по ссылке, которую он предоставляет в видео, чтобы посмотреть, как он применил каскадные файлы в EmguCV. Это будет чем-то для вас.

http://www.youtube.com/watch?v=07QAhRJmcKQ

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

http://sandarenu.blogspot.com/2009/03/opencv-haar-training-resources.html

Ответ 2

Пока у меня мало технической поддержки, вы можете помочь разработчику Dice-O-Matic mark II.

Ответ 3

Хорошо,

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

Я бы предложил две возможные стратегии для выполнения вашей задачи:

В первую стратегию входит использование стороннего программного обеспечения, которое может предварительно обрабатывать ваше изображение и возвращать данные о низкоуровневых компонентах изображения. У меня есть опыт использования программного обеспечения под названием pixcavator, у которого есть SDK . Pixavator выполнит ваше изображение и изучит расхождение между значениями цвета каждого из пикселей, чтобы вернуть границы различных компонентов изображения. Программное обеспечение, такое как pixcavator, должно быть в состоянии легко определить границы для comopents на вашем снимке и, самое главное, каждый из пипсов. Затем ваша работа будет доступна на основе данных, которые стороннее программное обеспечение вернет вам, и найдите компоненты, которые соответствуют описанию небольших круговых разделов, которые являются либо белыми, либо черными. Вы сможете подсчитать, сколько из этих компонентов изображения было разделено и использовать это, чтобы вернуть количество пикселей в вашем изображении.

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

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

Ответ 4

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

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

Ответ 5

Это знакомый вопрос Распознавание объектов из шаблонов, на который я предоставил ответ, который, по моему мнению, может быть полезен.

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

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

Ответ 6

Другая возможность - сначала использовать более общий алгоритм манипуляции/распознавания изображений, чтобы выровнять позиции костей, затем повернуть и масштабировать изображение до некоторой стандартной (например, изображения в пикселях полутоновых изображений размером 512x512 пикселей, которые были повернуты, чтобы быть Прямо). Затем попытайтесь обучить 6 различных нейронных сетей, чтобы распознать различное количество кубиков на экране. AForge.Net - хорошая библиотека искусственного интеллекта (в том числе нейронных сетей), и вы должны получить от вас справедливую битту.

Ответ 7

В это видео, я думаю, вы можете видеть в значительной степени поведение, которое вы хотите. Автор использует несколько белых кубиков, но он предоставляет код (python/opencv), и, возможно, вы можете построить свой проект на этом.