Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Узнавание рукописных символов (http://www.flasher.ru/forum/showthread.php?t=185923)

pivnoibaron 24.10.2012 12:40

Узнавание рукописных символов
 
Привет Вот интересно. Я хочу сделать так что бы допустим я рисую символ мышкой на экране. А программа смогла бы опознать этот символ. То есть у нее есть уже в памяти некоторые символы, а она смогла бы считать мой нарисованный и сопоставить с уже имеющимся

Sevak 24.10.2012 13:02

http://www.bytearray.org/?p=91

wvxvw 24.10.2012 23:05

Это вообще очень интересная и обширная тема, не полностью изученая и по сей день. С биологической точки зрения наука еще не совсем понимает как работает глаз, и как именно это совмещается с памятью, и "узнаванием".
Есть несколько традиционных подходов к решению проблемы:
в первую очередь ищите информацию про machine learning. Это под-группа вообще всего, что связано с искусственным интеллектом.
Так вот, первый подход: через обучение. Т.е. компьютеру скармливается много образцов символов, каждый образец компьютер пытается распознать и отнести к какой-то категории, за что получает оценку, и на этом учится. Вариантов как создать такую обучающую систему, популярных есть два: нейронные сети (ищите проект fann - это реализация нейронных сетей с исходниками, изначально на Си, но есть и много переделок / обвязок для других языков). Или, есть еще подход называемый support vector machine.
Такой вариант будет больше всего похожим на человека, в том смысле, что компьютер не только "заучивает" правильные ответы, а выстраивает целую систему распознавания.
Можно, конечно и схитрить, и сделать часть работы вместо компьютера, это возможно будет даже проще изначально, но качество распознавания неизвестных ранее символов будет плохим.

pivnoibaron 25.10.2012 01:54

Цитата:

Это вообще очень интересная и обширная тема, не полностью изученая и по сей день. С биологической точки зрения наука еще не совсем понимает как работает глаз, и как именно это совмещается с памятью, и "узнаванием".
Есть несколько традиционных подходов к решению проблемы:
в первую очередь ищите информацию про machine learning. Это под-группа вообще всего, что связано с искусственным интеллектом.
Так вот, первый подход: через обучение. Т.е. компьютеру скармливается много образцов символов, каждый образец компьютер пытается распознать и отнести к какой-то категории, за что получает оценку, и на этом учится. Вариантов как создать такую обучающую систему, популярных есть два: нейронные сети (ищите проект fann - это реализация нейронных сетей с исходниками, изначально на Си, но есть и много переделок / обвязок для других языков). Или, есть еще подход называемый support vector machine.
Такой вариант будет больше всего похожим на человека, в том смысле, что компьютер не только "заучивает" правильные ответы, а выстраивает целую систему распознавания.
Можно, конечно и схитрить, и сделать часть работы вместо компьютера, это возможно будет даже проще изначально, но качество распознавания неизвестных ранее символов будет плохим.
:wacko:

wvxvw 25.10.2012 03:18

Ну, самый примитивный вариант: вы просто статистически подходите к решению задачи, не пытаясь вообще анализировать картинку. Просто уменшаете ее до, предположим, 32 на 32 пиксела, параллельно обрезая так, чтобы не оставалось "полей" по краям, и считаете примерно следующим образом:
если пиксел в х=0, у=0 черный, то это добавляет уверенности в том, что это буквы П, Б, Т, К, Х, Н и другие и которых верхний левый пиксел черный. И так по всем пикселам картинки. Далее, смотрите статистику, какие пикселы в большей степени помогают с большей уверенностью определить тип буквы. Например, для того, чтобы практически безошибочно определить букву Й вам нужно будет определить наличие заполненных пикселов вверху, но с промежутками по краям и т.п. Как правило, у каждой буквы будет по нескольку "опорных" точек, обнаружив которые вы сможете почти наверняка ее распознать.
Ну и побочный еффект - используя ту же технику, сможете автозаполнять всякие самодельные каптчи народных зодчих :)

Silicium 25.10.2012 11:27

Насколько я понимаю, предложенный вариант в сущности то же самое, что и нейросети, в которые "статистика" вшита в весовые коэффициенты в результате обучения. По сути, Вы просто предлагаете сделать всю работу по "обучению" заранее руками?

wvxvw 25.10.2012 15:18

Как бы не совсем, нерйронные сети - это стратегия как сделать. Но сделать можно разные вещи. Например, есть довольно серьезные основания считать, что "пиксли которые мы видим" не квадратные, а имеют направление, и мы, когда анализируем картинку, мы группируем ее части по схожему направлению - таким образом нам легче найти и "понять" линии или фигуры.
Сеть можно "научить" искать линии, а потом написать часть программы которая уже на основании найденных линий сможет узнавать, что нарисовано на картинке. Т.е. если мы уверены, что видим 3 горизонтальные линии - это скорее всего Е, но может быть и З или Э, добавив еще одну проверку вертикальной линии - точно узнаем Е. И тут как бы два подхода смешиваются, статистический и аналитический.
Но если символов, которые нужно распознавать не много, и различия между ними очень большие, то их можно и не анализировать, а угадать по каким-то другим статистически заметным признакам.


Часовой пояс GMT +4, время: 14:36.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.