Как стать автором
Обновить

Комментарии 31

А сравнивать центральные моменты будет не проще? Ну или хью моменты, если нужна более высокая точность…
хороший вопрос, не работал с этим, но я обязательно поэкспериментирую.
Есть еще интересное решение определения нарисованных фигур, не зависимо от размера, ориентируясь на направления www.bytearray.org/?p=91
Мысль написать свою библиотеку пришла после того, как я увидел это решение.
Вот ток если ту же фигуру нарисовать «задом наперёд» то будет сбой. Это именно для конкретных жестов, а не фигур.
Не пробовали использовать нейронные сети?
Даже простой персептрон хорошо справится с такой задачкой
Нейронные сети в принципе интересная тема. Но, думаю, не для решения поставленной в статье задачи.
НЛО прилетело и опубликовало эту надпись здесь
Не обратил внимания сразу, повеселило :)
А тоже самое на java (adnroid)?
Допустим задача не сравнить фиггуры, а выпрямить линии поняв что за фигуры.
На java не пишу, но думаю не сложно будет реализовать на любом языке, т.к. в основе лежит базовая геометрия на плоскости.

Выпрямить линии — очень интересная тема, постараюсь написать библиотеку в ближайшее время.
Какая разница какой язык, имея базовые знания в любом С-подобном языке вы за полчаса портируете этот код. Без GUI, я имею в виду просто работу с массивами точек
Спасибо большое за статью! Великолепно, всегда была интересна эта тема, теперь вижу что никакой магии тут нет! Задам 2 вопроса:
1) Где во флэшке коэффициент «похожести» фигуры на заданную?
2) Сканируемые, например, finereader буквы тоже примерно по тем же алгоритмам определяются?
0) Спасибо за оценку :)
1) В обоих флешках наверху в правой части есть ползунки для определения точности. В радиальном алгоритме можно задать количество проверяющих лучей, и процент разности расстояний между точками пересечения луча с полигонами. В габаритном алгоритме можно изменить размеры габаритных полигонов, и процент точек не попавших в заданные габариты.
2) Не уверен на счет букв, думаю там алгоритм немного другой. Мне тоже очень интересно это узнать, если кто владеет информацией — поделитесь.
Спасибо большое за ответ!
Все же не понял немного про точность. Я так понимаю, ползунок определяет максимально допустимую погрешность, а как понять насколько фигура, которую я нарисовал, «похожа» на треугольник или квадрат?
На сколько фигуры похожи — это условные параметры, можно придумать по разному. Например если взять отношение среднего значения расстояний между точками пересечения луча и контуров и среднего значения размера фигуры, можно определить процент. Это в случае лучевого алгоритма.

А если брать габаритный алгоритм, то можно определить максимальный и минимальный шаблон, между которыми вплотную(с учетом заданной погрешности) вписывается нарисованная фигура. Далее можно посчитать на сколько получившиеся габариты отличаются от исходного шаблона.
Я где-то читал, что файнридер разбивает картинку буквы на отдельные примитивы — окружности, дуги, линии, и по библиотеке символов находит ближайшие похожие буквы.
Очень интересно, надо попробовать.
В джагернаут очень плохо распознаются фигуры. Очень часто они или распознаются или срабатывает другая фигура.
Вспомнилось Black&White сразу.
НЛО прилетело и опубликовало эту надпись здесь
Моя любимая формула, да… особенно 3^2+4^2=5^2 :)
Спасибо, весьма познавательно. Когда мне понадобилось распознавать движения использовал $1 Unistroke Recognizer. Работает весьма точно.
Нарисовал вроде бы круг, а он определил что это символ №6(caret), мало похожий на то что нарисовано…
Круг можно нарисовать только по часовой стрелке.
Аналогично, Звезду только с левого нижнего угла в направлении вверх.
Сложив в конце полученные расстояния между точками пересечения, мы получим некоторое значение. Чем меньше это значение, тем ближе нарисованная фигура к шаблону.

Думаю, математически более верно оперировать среднеквадратичным отклонением. (То, есть перед сложением возводить растояния в квадрат)

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