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

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

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

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

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

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

Обновление:

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

Обновление:
Все еще борьба, не может заставить CV Emgu работать.

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

13
задан Jakob Gade 21 April 2010 в 05:36
поделиться

6 ответов

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

3
ответ дан 1 December 2019 в 22:56
поделиться

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

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

2
ответ дан 1 December 2019 в 22:56
поделиться

Хорошо,

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

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

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

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

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

3
ответ дан 1 December 2019 в 22:56
поделиться

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

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

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

2
ответ дан 1 December 2019 в 22:56
поделиться

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

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

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

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

9
ответ дан 1 December 2019 в 22:56
поделиться

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

1
ответ дан 1 December 2019 в 22:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: