Каков наилучший алгоритм и лучший метод сбора данных для распознавания нарисованных от руки геометрических фигур? - PullRequest
2 голосов
/ 29 февраля 2012

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

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

Интересно, какой алгоритм лучше для этого, а также как лучше собрать для него данные.

На данный момент я использую OpenCV, алгоритм - Машина опорных векторов. Я собираю данные, считая расстояние от центральной координаты до 10 точек изображения. Это не работает хорошо.

1 Ответ

2 голосов
/ 22 марта 2012

Звучит так, будто вам нужно извлечь вектор объектов, чтобы описать ваш «жест».В идеале функции должны быть масштабируемыми и переводными.То есть: они различают жест независимо от размера или угла его создания.

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

Или, если вы обрабатываете только готовую форму жеста, вы можете просто использовать методы на основе изображения, предоставляемые OpenCV .Возможно, вас особенно заинтересует метод matchShapes (), основанный на моментах Ху.

Если вы уже используете SVM, то это ваш контролируемый классификатор, в который вы подаете извлеченный вектор объектов для каждого жеста (с помощьюярлык), чтобы обучить его.Помимо выбора классификатора (PCA, Naive Bayes, ANN и т. Д. И т. Д.), Суть дела заключается в качестве ваших тренировочных данных.

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

...