Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
 Аватар для StaFox
2 / 2 / 1
Регистрация: 27.03.2009
Сообщений: 52

Трудность в реализации алгоритма распознавания подписи

30.11.2011, 13:42. Показов 3552. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую всех. Делаю курсовой проект на тему "Распознавание рукописной подписи".
Смысл таков:
Загружаю изображение подписи (фото\скан).
Произвожу перевод в полутоновое.
Далее из полутонового в бинарное (бинаризация)
После на некоторых изображениях остаются лишние пиксели (выделены красным)

Потом произвожу расширение исходного изображения.
После чего с помощью метода поиска в ширину, выделяют отдельные объекты (для данного изображения их 5: 4 объекста с лишними пикселями, и 1 объект - это сама подпись). Далее строим Bounding Rectangle для каждого из этих объектов. И удаляем те объекты, у которых число белых пикселей < числа черных.

Так вот, нужна помощь в реализации метода поиска в ширину.

Описание метода:
Метод поиска в ширину позволяет легко найти расстояние от данной вершины до других вершин графа, и значит, определить удалённость данной вершины. Применив его для всех вершин графа, получим удалённости всех вершин, зная которые, можно найти радиус, диаметр графа, а так же центры и периферийные центры.
Проиллюстрируем данный метод на следующем примере

Суть метода заключается в расстановке меток, которая осуществляется по следующему правилу. Предположим, нужно найти расстояние от вершины v1 до других вершин. Присвоим вершине v1 метку 0. Всем вершинам, смежным с v1, присвоим метку 1. Затем всем вершинам, смежным с вершинами имеющими метку 1 (которые ещё не имеют метки), присвоим метку 2 и т.д., пока все вершины не получат метки. Легко видеть, что метка вершины будет равна расстоянию от v 1 до данной вершины, а наибольшая из меток равна удалённости вершины v 1. Так, в рассматриваемом примере e(v1) = 4. Метод позволяет так же находить кратчайшие цепи между вершинами. Если, например, нужно найти кратчайшую цепь от v1 до v10, то после расстановки меток двигаемся в обратном порядке от вершины v10, переходя каждый раз к вершине с меньшей меткой (такая обязательно найдётся; если их несколько, то выбираем любую): v10 → v7 → v4 → v2 → v1. В результате, получаем кратчайшую (v1, v10)–цепь: (v1, v2, v4, v7, v10).
Подсчёты удалённостей остальных вершин в данном приводят к следующим результатам: e(v2)=3, e(v3)=3, e(v4)=3, e(v5)=3, e(v6)=3, e(v7)=3, e(v8)=3, e(v9)=4, e(v10)=4.
Таким образом, для данного графа G имеем: R(G)=3; D(G)=4; вершины v1, v9, v10 являются периферийными центрами, а все остальные вершины – центрами.
Также буду рад любому другому методу решения данной проблемы
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.11.2011, 13:42
Ответы с готовыми решениями:

Реализация алгоритма цифровой подписи ECDSA на основе эллиптической кривой в форме Эдвардса
Всем добрый вечер, пишу диплом и нужна помощь: Надо программу C# для формирования и проверки цифровой подписи. Формирование ЦП ...

Не могу найти ошибку в реализации алгоритма
Нужно перевести алгоритм в код. Вот мой код, но он не работает: double a = -10; double b = 10; ...

Нужен пример реализации алгоритма шифрования DES
Всем доброго времени суток =) Знаю, что во Framework'е есть встроенные средства для шифрования и там реализован DES. Может у кого есть...

9
 Аватар для sau
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,821
30.11.2011, 16:14
Чет мне кажется в корне ошибочный подход,учитывая что подпись может быть прерывистой, простой линией и т.п, особенно неверное решение с "удаляем те объекты, у которых число белых пикселей < числа черных".
Во первых должны быть образцы подписи, т.к иначе и точка - подпись.
Имея образец можно уже последовательно накладывать его на разные участки источника , и там уже применять алгоритмы сравнений изображения. Ну и поскольку подпись не бывает 100% одинаковой то можно говорить только о процентном совпадении. - т.е будет несколько вариантов удовлетворяющих заданной точности.
0
 Аватар для StaFox
2 / 2 / 1
Регистрация: 27.03.2009
Сообщений: 52
30.11.2011, 18:24  [ТС]
У меня проблемы с подготовкой подписи к распознаванию. Проверяться работа программы будет на нескольких вариантах двух подписей, фото одной есть на скрине, вторая тоже всяких разрывов. распознавать планирую по углу наклона дуг и по их количеству.

А почему ошибочный подход, впринципе всё логично выглядит:

Подпись нарисована для примера
0
 Аватар для sau
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,821
30.11.2011, 19:57
Ну потому что подпись это не сплошная линия, это может быть что угодно, например простой набор символов. Поэтому никакие графы тут не помогут. К тому же у одной и той-же подписи могут быть разные размеры и очертания. Поэтому берем образец (а лучше целый перечень образцов для более точного поиска), последовательно накладываем его на разные участки отсканированного изображения, применяем алгоритмы сравнения пиксельных изображений с учетом погрешности, сдвигаемся на следующий участок и тд., если не нашли - масштабируем образец и повторяем операцию. , до тех пор пока не выйдем за определенные пределы или не найдем подходящий образец.
1
 Аватар для StaFox
2 / 2 / 1
Регистрация: 27.03.2009
Сообщений: 52
02.12.2011, 11:34  [ТС]
Ладно, с этим потом. Как от лишних пикселей(шумов) посоветуете избавится?
0
 Аватар для sau
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,821
02.12.2011, 18:01
А кто сказал что этот пиксель лишний ? ) - может это подпись такая разбросанная...
поэтому опять же на основе образцов., если 80% совпадает то можно считать что подпись, остальное шум.
0
 Аватар для StaFox
2 / 2 / 1
Регистрация: 27.03.2009
Сообщений: 52
02.12.2011, 19:32  [ТС]
Образцов будет 5, 10, 20. Суть в том что нужно программу сначала обучить (реализовав алгоритм персептрона), а после только распознавать. Я же не могу перебирать все образцы. Т.к. каждый имеет размер к примеру 1024х768, потом смещать по 1 пикселю, потом маштабировать... уж оч много времени уйдт по циклам бегать.

Да и пробинаризировать изображение может по разному. В одном случае шумов не будет вообще, в другом они будут приличными в двух нижних углах. И что тогда процент при совмещении явно уменьшится.

Я знаю конкретно, что подпись будет в центре. По бокам - могут быть шумы.

Даже если я обрежу точку (которая может быть частью подписи) ничего страшного, т.к. в качестве информативных объектов буду использовать количество дуг в подписи, и угол наклона между первой и последней дугой.
0
2741 / 1667 / 268
Регистрация: 19.02.2010
Сообщений: 4,411
03.12.2011, 22:34
StaFox, Как от лишних пикселей(шумов) посоветуете избавится?

Эрозия (операция морфологической фильтрации) как самое простое.

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

На курсовой - пойдёт
В реальной работе или в науке - за такое убиваю особо садистским способом. Дофига ПРОСТЫХ способов обеспечить распознавание, инвариантное к сдвигам объекта на изображении - например, использование сдвиговых автокорреляторов, использование квадратов двумерных спектров (Фурье, Радона,..),... В каждом втором учебнике по распознаванию изображений...

ужно программу сначала обучить (реализовав алгоритм персептрона)

Вот только у Вас параметров (коэффициентов) в персептроне будет больше, чем эталонных картинок с подписями. При 1024х768, грубо говоря, будет почти 2 миллиона коэффициентов - и несколько десятков образцов подписей. Недоопределенная система уравнений получается
Правда, на курсовой - сойдёт
1
 Аватар для StaFox
2 / 2 / 1
Регистрация: 27.03.2009
Сообщений: 52
04.12.2011, 13:17  [ТС]
VTsaregorodtsev, тоже решил фильтрацию с помощью эрозии делать.
Спасибо. Буду пробывать.
0
 Аватар для StaFox
2 / 2 / 1
Регистрация: 27.03.2009
Сообщений: 52
12.12.2011, 20:27  [ТС]
Здравствуйте, не могли бы Вы мне помочь разобраться в реализации алгоритма персептрона, который будет использоваться для распознавания подписи. До этого реализовывал персептрон для распознавания однопиксельных букв.

Допустим А-элементов будет 40. Число классов - 2.
Подаваемое изображение для распознавания будет размером 1024х768. В качестве признаков использую соотношение высоты к ширине подписи, число дуг и число перегибов
Т.е. мне нужно сформировать таблицу T взаимосвязи размером 40 на 786432 элементов. Где в каждой строке один элемент будет равен 1 или -1, остальные 0. Всё верно?
Далее я суммирую всё элементы (T[i,j]*Img[i,j]), и т.д. и т.п. Только в качестве весовых коэффициентов буду использовать свои признаки, так?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.12.2011, 20:27
Помогаю со студенческими работами здесь

Зачем в реализации алгоритма Rijndael сравнение с 0x80?
Приветсвую всех форумчанинов! Имеется проект {}, который является примером шифрования Rijndael (в целях лабораторной работы меня...

Программа реализации алгоритма нахождения определителя 3го порялка
Ребят очень нужна помощь) прошу помогите как делать....=(суть как бэ знаю и теоритически , а на практике не получается(((( язык С#

Нужен пример реализации алгоритма шифрования AES-128
Всем доброго времени суток =) Знаю, что во Framework'е есть встроенные средства для шифрования и там реализован AES. Может у кого есть...

Алгоритм распознавания подписи
Очень нужна помощь с задачей. Нужно составить алгоритм распознавания подписи. Задача должна выглядеть так: по мере рисования подписи,...

[Статья] Проверка электронной цифровой подписи Authenticode. Часть 2. Описание реализации
Это продолжение. См. также другие части этой статьи: Часть 1. Кусочек теории. Часть 3. Программа проверки Authenticode ЭЦП ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru