Hi unDEFER!!!
Sunday, October 19, 2003, 2:32:25 AM, you wrote:
u> Итак, проект программы для распознавания рукописного текста под
u> Linux.
Нет надо говорить не так, надо говорить под Kylix/XBuilder. Не знаю
что тебя так тянет к кайликсу (тяжелое наследие?). Кайликс - последнее
на что бы я посмотрел будучи под линуксом. Ты же сменил платформу?
смени и IDE - оставь борланд для виндоуса. Под линукс существует
много хороших ИДЕ - надо лишь зайти на поисковик и.. пока не поздно -
подумай. В идеале надо что бы твой проект собирался без всяких ИДЕ по
команде make (с борландом такого не получится).
u> Как я уже говорил, программа также позволит имитировать рукописный ввод.
u> Подробнее об этой имитации:
u> Каждый символ мы закодируем не в формате Bitmap, а в формате
u> чем-то сродни векторной графике: мы задаем как располагается каждая
u> последующая точка относительно предыдущей в формате: dx=-1..1 и
u> dy=-1..1, где dx- смещение по горизонтали, а dy - по вертикали.
А в чем преимущества перед битмапом?? помоему не стоит изобретать
велосипед, а разбить задачу на две: хранение примитивов и работа с
ними. примитивом задается некая область к примеру 32*32 - в которой
отрисовывается каждая буква (монохромно).
Для работы с такими примитивами необходима функция корректного
масштабирования.
В общем случае задача удаления ненужных и добавления сглаживающих
пикселов - весьма и весьма нетривиальна. Но на мой взгляд и первую и
вторую фичи (антиалиазинг как я понимаю) можно позаимствовать у других
открытых проектов.
u> Для
u> каждой буквы следует предусмотреть несколько вариантов прорисовки
u> (например, букву "д" иногда пишут с крючком вниз [как у "у"], а иногда с
u> хвостиком наверх) в том, числе печатный. Что нам это дает? Мы сможем
u> (если нужно :)) имитировать рукописный вывод текста в самом прямом
u> смысле, словно кто-то водит ручкой по экрану.
Если это уклон в сторону программы Graffiti (есть такая под PalmOS для
распознавания введенного текста), то обращаю ваше внимание на 2
особенности: 1. все данные программы не заморачиваются с различным
начертанием букв а выбирают максимально различные. 2. фактически
каждая из этих программ не подстраивается под пользователя, а наоборот
т.к. использует свое собственное начертание.
u> Если нужно увеличить
u> размер, то каждую точку с тем же смещением мы прорисуем несколько раз,
u> для уменьшения - обратно некоторые точки не будем учитывать.
Еще раз про велосипед. Исследования работы со шрифтами ведуться уже
давно. На них потрачено много миллионов долларов (если не миллиардов)
Поэтому, ИМХО, нецелесообразно отмахтиваться от общественно-доступных
наработок и изобретать велосипед.
u> Почерк,
u> конечно, не может быть идеальным, поэтому для каждого dx и dy будем
u> вводить случайную поправку, что приблизит наш машинный почерк к
u> человеческому. Может это все кажется не естественным, но даже при очень
u> малом количестве точек (20 по-моему) этот метод позволил мне выводить
u> достаточно естественные буквы.
u> Вот теперь задача распознавания - надо каким-то образом
u> представить линии на рисунке в том же формате, что и формат наших
u> символов и сравнить их.
Есть такой математический аппарат - называется нейронные сети.
Теоретически именно они должны использоваться для распознавания неких
контуров,очертаний ... вобщем смотреть туда.
u> Скажем, для начала на рисунке необходимо
u> отделить фон от букв: преобразовать рисунок в черно-белый одно-битный
u> формат (0-черное, это чернила, а 1-белое, бумага). Потом не зависимо от
u> толщины линий уже можно к переводу их в наш формат. Вот, у меня пока
u> есть две проги - одна для отдел........----cutedитого:
1. Рекомендую сменить IDE
2. Отношение к базовым алгоритмам и принципам должно быть более
осторожным что ли..
3. Удачи
From Russia with love
mailto:serge***@o*****.ru
-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Отписаться: http://subscribe.ru/member/unsub?grp=comp.soft.linux.discuss&email=
http://subscribe.ru/ mailto:ask@subscribe.ru