|
|
|||||
Регистрация: Apr 2011
Сообщений: 83
|
Узнавание рукописных символов
Привет Вот интересно. Я хочу сделать так что бы допустим я рисую символ мышкой на экране. А программа смогла бы опознать этот символ. То есть у нее есть уже в памяти некоторые символы, а она смогла бы считать мой нарисованный и сопоставить с уже имеющимся
|
|
|||||
|
|
|||||
Modus ponens
|
Это вообще очень интересная и обширная тема, не полностью изученая и по сей день. С биологической точки зрения наука еще не совсем понимает как работает глаз, и как именно это совмещается с памятью, и "узнаванием".
Есть несколько традиционных подходов к решению проблемы: в первую очередь ищите информацию про machine learning. Это под-группа вообще всего, что связано с искусственным интеллектом. Так вот, первый подход: через обучение. Т.е. компьютеру скармливается много образцов символов, каждый образец компьютер пытается распознать и отнести к какой-то категории, за что получает оценку, и на этом учится. Вариантов как создать такую обучающую систему, популярных есть два: нейронные сети (ищите проект fann - это реализация нейронных сетей с исходниками, изначально на Си, но есть и много переделок / обвязок для других языков). Или, есть еще подход называемый support vector machine. Такой вариант будет больше всего похожим на человека, в том смысле, что компьютер не только "заучивает" правильные ответы, а выстраивает целую систему распознавания. Можно, конечно и схитрить, и сделать часть работы вместо компьютера, это возможно будет даже проще изначально, но качество распознавания неизвестных ранее символов будет плохим.
__________________
Hell is the possibility of sanity |
|
|||||
Регистрация: Apr 2011
Сообщений: 83
|
Цитата:
|
|
|||||
Modus ponens
|
Ну, самый примитивный вариант: вы просто статистически подходите к решению задачи, не пытаясь вообще анализировать картинку. Просто уменшаете ее до, предположим, 32 на 32 пиксела, параллельно обрезая так, чтобы не оставалось "полей" по краям, и считаете примерно следующим образом:
если пиксел в х=0, у=0 черный, то это добавляет уверенности в том, что это буквы П, Б, Т, К, Х, Н и другие и которых верхний левый пиксел черный. И так по всем пикселам картинки. Далее, смотрите статистику, какие пикселы в большей степени помогают с большей уверенностью определить тип буквы. Например, для того, чтобы практически безошибочно определить букву Й вам нужно будет определить наличие заполненных пикселов вверху, но с промежутками по краям и т.п. Как правило, у каждой буквы будет по нескольку "опорных" точек, обнаружив которые вы сможете почти наверняка ее распознать. Ну и побочный еффект - используя ту же технику, сможете автозаполнять всякие самодельные каптчи народных зодчих
__________________
Hell is the possibility of sanity |
|
|||||
Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
|
Насколько я понимаю, предложенный вариант в сущности то же самое, что и нейросети, в которые "статистика" вшита в весовые коэффициенты в результате обучения. По сути, Вы просто предлагаете сделать всю работу по "обучению" заранее руками?
|
|
|||||
Modus ponens
|
Как бы не совсем, нерйронные сети - это стратегия как сделать. Но сделать можно разные вещи. Например, есть довольно серьезные основания считать, что "пиксли которые мы видим" не квадратные, а имеют направление, и мы, когда анализируем картинку, мы группируем ее части по схожему направлению - таким образом нам легче найти и "понять" линии или фигуры.
Сеть можно "научить" искать линии, а потом написать часть программы которая уже на основании найденных линий сможет узнавать, что нарисовано на картинке. Т.е. если мы уверены, что видим 3 горизонтальные линии - это скорее всего Е, но может быть и З или Э, добавив еще одну проверку вертикальной линии - точно узнаем Е. И тут как бы два подхода смешиваются, статистический и аналитический. Но если символов, которые нужно распознавать не много, и различия между ними очень большие, то их можно и не анализировать, а угадать по каким-то другим статистически заметным признакам.
__________________
Hell is the possibility of sanity |
Часовой пояс GMT +4, время: 00:35. |
|
« Предыдущая тема | Следующая тема » |
|
|