Самый простой метод - "осыпание" всех пикселей цифры на две перпендикулярные оси. Заморочек - две: цифра должна быть достаточно большой и хотя бы приблизительно выровнена по вертикали.
Clerk Там немного хитрее. Если нам надо распознать текст. То цифры имеют известные размеры. Поэтому применяется сдвиг окна. На размер этой цифры или на половину. Пробуется распознать. Двигается дальше на пол окна проверят былли мальчик т.е цифра вообщем выбирает лучшее положение окна. Конечно можно еще связанные компоненты искать. Собственно само распознавание цифр там хотя и построено на брутфорсе но оно в усеченном варианте. Так это из названия видно. Просто перебор позиции можно свести к 15*w*h операциям сложения. А там еще сравнивается не со всеми эталоннами, а только с 30 специальным образом составленным.
Добавлю немного ссылочек вам (хороших ссылок): http://habrahabr.ru/blogs/artificial_intelligence/64535/ http://cgm.computergraphics.ru/issues/issue17/invariant_features
n0name Распознаёт, если написано более-менее разборчиво. Если осыпать на вертикальную ось, разница весьма существенная.
Размышлял. Имеем бумажный лист, на нём нарисована большая цифра. Сверху лежит есчо один не прозрачный лист, имеющий небольшое отверстие. Перемещать верхний лист можно как угодно. Как определить что под ним нарисовано ?
Clerk Каким бы способ мы не выполняли анализ изображения, всё равно требуется чать собственно его распознающая: 0.Изображение 1.Образ(массив координат переходов, etc.)(не обязательный пункт это только помогает пункту 2) Реализация: один из или оба сразу(см. attach), или иной незвестный мне. 2.Распозноваение Реализация: Сравение с шаблонами, нейросети, "анализ масс", etc. 3.ASCI Пункты 1 и 2 могут быть совмещены(например выполение сравения с шаблоном после кажлого прохода скнирования до достиженя уверености что "цифра именно та"), как бы там нибыло реализация зависит от конкретной задачи(требуемого качества, скорости и тп.). Какова ваша задача?
Забейте. Люди не могут прочитать, что сами написали, а вы хотите примитивным алгоритмом. Эта задача нерешаема в общем случае. Довольствуйтесь тем, что есть.
Как определить что под ним нарисовано ? Непонятно. Имецца в виду наложение малого фрейма (размер << размера описывающего прямоугольника)? По малому фрейму. Если я вижу окончание линии (как это будет у цифер 1,2,3,... но вообще нет у 8 или 0), то это индикатор. Если я нашел 3 окончания линий ("4" в написании как почтовый индекс), то это точно не 2 или 5 (по два окончания). "Осыпание," предложенное CyberManiac, выглядит также неплохо (надо смотреть), но я не понимаю как решается проблема поворота. Интересно, бывают ли более сложные искажения? Например, "турбулентность" (если это подходящий термин) - имею в виду что точки слегка поворачиваются по окружностям вокруг центра (масс) но поворот зависит от радиуса.
возможно сработает если получить минимальную по ширине проекцию на ось. Если ось строго горизонтальна то проекция на нее по идее минимальна ... не уверен что во всех шрифтах так и что будет при сильных искажениях.
AlexCab V2 это наиболее эффективный способ, ум так символы и распознаёт #26. Только я не могу понять пока некоторые моменты.
Метод сравнения по шаблону http://dign.narod.ru/articles/recognition/ http://www.xakep.ru/magazine/xa/088/108/1.asp тоже самое только в PDF http://www.xakep.ru/magazine/xa/088/xa_088.pdf исходники к статье прикрепил
tester3000 Бегло прочитал статью и программу на ксакепе. Вы делаете сравнение по шаблону, перебор. Рассмотрено вращение а также борьба с помехами (это наверное вообще можно рассматривать как отдельную проблему). Если есть желание, можно обсудить что еще можно сделать (часть идей выше).
Clerk А вот и этап коммерциализации, наши поздравления. Звенящего шеккеля звук ждем в хеккерских форматах .mod и .xm (но можно и MP3)
PSR1257 Хочу заметить это не мои статьи просто сам на Delphi недавно распознавалку капчи писал очень помогли эти статьи для простенькой капчи шаблонный метод как раз подходит да и разбираться с нейронными сетями вломы было ))
Clerk, если не сложно, напишите потом о пути, по которому вы пошли. Дело в том, что тоже интересна данная тема, не ради комерса а ради знаний и опыта вообще. Я не прошу исходники или статью для домохозяек - просто, вкратце. Спасибо.
Читал много про тему лучше чем тут не нашел информации с примерами на СИ http://mechanoid.narod.ru/misc/segmentator/index.html - алго разбиение на строки http://mechanoid.narod.ru/
Clerk если распознавать на основе образов, то например в качестве эталонов было бы здорово использовать файлы со шрифтами