71

Распознавание нарисованных фигур

В 2016 Google опубликовал игру-дудл Magic Cat Academy. Она напомнила мне  игру Гарри Поттер и Философский камень, где для изучения заклинания его нужно было максимально точно нарисовать. Вдохновившись этим геймплеем, я решил разработать собственный распознаватель жестов.


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


Изначально я сделал распознавание фигуры через приведение ее к прямым и диагональным линиям. Этот способ хорошо работает с фигурами типа V, ^, Z, W, но для распознавания округлых фигур необходимо поддерживать вариативность правил распознавания. На рисунке ниже изображены правила для распознавания фигуры pigtail (хвост свиньи). Секции с вопросительным знаком могут присутствовать или отсутствовать, в остальных блоках должна присутствовать хотя бы одна из указанных секций.

Для того, чтобы упростить работу с округлыми фигурами, я заменил ламанные линии на кривые Безье.  Это немного снизило скорость распознавания, но позволило распознавать более сложные фигуры.

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


Вот как теперь выглядят правила для распознавания pigtail:

Код библиотеки я выложил на github, надеюсь кому-то он пригодится :)

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции

- Выдавать чужой труд за свой

Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.


О РАЗМЕЩЕНИИ ССЫЛОК:

Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"

6
Автор поста оценил этот комментарий

На хабре лет 6-7 назад была статья о распознавании через приведение контура сначала к замкнутому, потом к вектору комплексных чисел. Сумма членов вектора ЕМНИП однозначно характеризовала фигуру вне зависимости от угла поворота, может полезно будет. Я по нейросетям лабу сделал именно на таком алгоритме - отлично и быстро работало

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

вот, кстати, пример упоротости, которая иногда бывает в $1 (в этом случае x вместо pigtail)

Иллюстрация к комментарию
2
Автор поста оценил этот комментарий
Иллюстрация к комментарию
раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Похоже, но такие фигуры, как и графический пароль смартфона, распознать крайне просто, посколько множество точек конечно и весьма мало

0
Автор поста оценил этот комментарий

по распознаванию образов довольно много всякого, мне понравилось использование комплексных чисел)

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

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

0
Автор поста оценил этот комментарий
Автор приступил к созданию Тургора, теперь нужно много голых женщин.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

йо-хо-хо и голые сиськи. а вообще никогда не видел эту игру

0
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

сверточные сети. на js. в браузере. на мобилке. месье знает толк в извращениях

показать ответы
2
Автор поста оценил этот комментарий

Перевода не нашел, но нашел оригинал - зацените, может пригодится https://www.codeproject.com/Articles/196168/Contour-Analysis...

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

https://habr.com/ru/post/208090/ вот в этой статье упоминается нечто похожее

показать ответы
6
Автор поста оценил этот комментарий

На хабре лет 6-7 назад была статья о распознавании через приведение контура сначала к замкнутому, потом к вектору комплексных чисел. Сумма членов вектора ЕМНИП однозначно характеризовала фигуру вне зависимости от угла поворота, может полезно будет. Я по нейросетям лабу сделал именно на таком алгоритме - отлично и быстро работало

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

не https://habr.com/ru/post/188390/ случайно?

показать ответы
6
Автор поста оценил этот комментарий

На хабре лет 6-7 назад была статья о распознавании через приведение контура сначала к замкнутому, потом к вектору комплексных чисел. Сумма членов вектора ЕМНИП однозначно характеризовала фигуру вне зависимости от угла поворота, может полезно будет. Я по нейросетям лабу сделал именно на таком алгоритме - отлично и быстро работало

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

спасибо) поищу. независимость от угла поворота может сыграть против разработчика, т.к. например <, >, ^ и v  отличаются только углом поворота.

показать ответы

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества