Udostępnij za pośrednictwem


Разработка программы нахождения и распознавания игральных карт с помощью AForge.Net

Грэг Дункан

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

Распознавание лиц является писком моды. Но что если требуется распознать что-нибудь еще, например игральные карты? Например, вы собираетесь создать игру с расширенной реальностью, с использованием реальных карт, с которыми происходит что-то клёвое (вроде анимированного валета, поглядывающего по сторонам и т. п.)? Или захотите добавить пикантности и автоматизировать еженедельный покер? Или создать собственное шоу из криббиджа (все играют в покер…Улыбка)

Как сделать что-то подобное? Взять цветное изображение с камеры и вычислить какая там карта?

Есть один способ …

Распознавание игральных карт с помощью AForge.Net Framework

clip_image002

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

В этой статье рассматриваются алгоритмы преобразования в двоичный вид, определения краев, аффинные преобразования, обработка блобов, соответствия шаблону, которые реализованы в AForge .NET Framework.

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

...

Выявление карт

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

Сначала мы переводим изображение в полутоновое. Перевод в полутона преобразует цветное изображение в 8-разрядное серое. Нам необходимо преобразовать цветное изображение в полутоновое, чтобы затем можно было выполнить преобразование в двоичный (черно-белый) формат.

После преобразования цветного изображения в полутоновое, мы выполняем преобразование в двоичный формат. Бинаризация (выбор порога) – процесс, преобразующий полутоновое изображение в черно-белое. В этой статье для выбора общего порога используется метод Оцу.

clip_image004

clip_image006

Распознавание карт

Есть несколько способов распознавания. В этой системе распознавание основано на свойствах карт (таких как формы картинок на картах) и соответствии шаблону. Масть и ранг карты распознаются по отдельности. У нас есть следующие масти и ранги.

...

clip_image008

Распознавание ранга

Распознавание ранга похоже на распознавание масти карты. Мы распознавали фигурные и нефигурные карты по отдельности. Так как нефигурные карты можно узнать, считая количество символов масти на изображении карты, соответствия шаблону не требовалось, и эту работу можно выполнить с помощью простых фильтров изображения. Это делает процесс простым для нефигурных карт. В отличие от соответствия шаблону он не требует много процессорного времени.

...

clip_image010

...

Известные проблемы

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

Заключение

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

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

Если вы интересуетесь карточными играми, дополненной реальностью, выявлением и распознаванием объектов, просто загрузите этот проект.