2010-07-28 3 views
5

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

+0

У вас есть решение? – PVCS

ответ

1

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

1.) Сгенерируйте изображение чертежа и «векторизовать» его, привязывая векторы к пути, который пользователь нарисовал.

2.) Вам нужны вспомогательные векторы для сравнения. Что бы я сделал, это реализовать «учебное приложение». Пусть некоторые дети рисуют (например, 10 раз в A, 10 раз в B, aso ...), помещают векторы в базу данных и используют их в качестве векторов поддержки.

3.) Вам нужен алгоритм оценки, который оценивает пользовательский чертеж, сравнивая его с векторами поддержки (это может быть самая интересная его часть). Я мог бы подумать о измерении расстояний начала и конца векторов поддержки к нарисованным векторам. Svm с самым низким расстоянием - это буква, которую вы берете. Затем вы можете ввести расстояние, которое является «границей», и считать все пользовательские чертежи выше этой границы непризнанными.

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

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

В любом случае звучит как пара недель работы.

EDIT: Поскольку это интересное поле, я провел некоторое исследование и нашел тезис о распознавании рукописного ввода. Посмотрите на это: http://risujin.org/cellwriter/. Он в основном описывает подход svm, о котором я упоминал, и дает некоторые алгоритмы, которые могут вам помочь.

+0

+1: крутой подход .. недели * полное время * работа :) – iwasrobbed

0

Вы всегда можете использовать Gesture Recognition ... но это довольно сложно для пользовательского сценария, подобного этому.

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

3

Using GLGestureRecognizer вы можете создать каталог, и он вычислит метрику между массивом входных точек против «алфавита», который вы предопределяете.

GLGestureRecognizer является Objective-C реализация $ 1 Unistroke распознавателя, простой жест алгоритм распознавания (см КРЕДИТАМ ниже). Это делается здесь в форме приложения iPhone . Он был реализован по курсу пару вечеров в конце Апрель 2009 года Адамом Преблемом.

Демо-проект iPhone (Жесты.xcodeproj); a Подкласс UIView принимает события касания и отправляет их классу GLGestureRecognizer , в то время как рисует тротуар в белом цвете. После того, как жест завершен, передискретизируется жест показан зеленым цвет, центра в красной точке, вместе с именем лучшего матча, счет (чем ниже, тем лучше), и жест ориентация. Образец размером 16 точек используется в примере, который представляется достаточным для очень простых форм .

+0

Удивительный материал !! – thatsdisgusting

+0

Очень круто, он воссоздает ваши жесты довольно хорошо. его можно легко использовать для алфавита – iwasrobbed

Смежные вопросы