Автор работы: Пользователь скрыл имя, 25 Апреля 2012 в 22:59, научная работа
Целью проекта является - программа для распознавания автомобильных номеров методом сравнения с шаблонами. Программа должна выводить результат распознавания картинки с автомобильным номером, анализировать его и оценивать правильность(количество неверно распознанных символов). Картинки с номерами заведомо сгенерированы. Необходимо распознать 50 «чистых» и 50 «грязных»(имеют шумы, подобные грязи или дефектам на настоящих номерах) номеров, оценить эффективность разработанной программы.
Постановка задачи………………………………………………………………………..3
Алгоритмическое обоснование метода. ………………………………………………...4
Программная реализация………………………………………………………………..5
Вывод……………………………………………………………………………………..7
ПЕТРОЗАВОДСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
МАТЕМАТИЧЕСКИЙ ФАКУЛЬТЕТ
Интеллектуальные системы
Распознавание образов
Распознавание автомобильных номеров методом сравнения с шаблонами
Выполнили:
студенты 5 курса, группа 22506
Уколов А. С. __________
подпись
Смирнова Е. А. __________
подпись
Петрозаводск
2009
Постановка задачи………………………………………………………………
Алгоритмическое обоснование метода. ………………………………………………...4
Целью проекта является - программа для распознавания автомобильных номеров методом сравнения с шаблонами. Программа должна выводить результат распознавания картинки с автомобильным номером, анализировать его и оценивать правильность(количество неверно распознанных символов). Картинки с номерами заведомо сгенерированы. Необходимо распознать 50 «чистых» и 50 «грязных»(имеют шумы, подобные грязи или дефектам на настоящих номерах) номеров, оценить эффективность разработанной программы.
Программа состоит из следующих основных функций:
mono(bmp) – перевод картинки в черно-белый цвет;
prepare(bmp) – функция удаляет шумы с номера;
GetImageChars(bmp) – функция распознавания номера;
GetChar(bmp) – функция вырезание символа с номера;
GetDifferents(char, temple) – сравнение вырезанного символа с шаблоном
Для начала загруженное изображение номера переводится в черно-белый цвет при помощи функции mono(bmp), где bmp сам номер, т.к. дальше программа работает с картинкой, как с матрицей из 0 и 1.
Далее необходимо проверить, есть ли на изображении шумы. Вызывается функция prepare(bmp), где bmp – картинка с номером. Находятся не связные объекты с минимальной площадью черного цвета и переводятся в белый цвет.
После удаления шумов, на номере поочередно вырезаются символы функцией GetChar(bmp), где bmp – это номер. Т.е. каждая буква вписывается в прямоугольник, для последующего сравнения с шаблоном. Шаблоны генерируются при каждом старте программы. По такой формуле высчитывается размер шрифта шаблона:
SizeBegin:=Round(Bmp.Height*0.
SizeEnd:=Round(bmp.Height*1.
bmp.Height - это высота вырезанного символа с номера.
В цикле от SizeBegin до SizeEnd с шагом 1 генерируется шаблон соответственного размера, далее вызывается функция GetDifferents(char, pattern), где char – это вырезанный символ с номера, а pattern – это сгенерированный шаблон. Происходит построчное сравнение картинки с символом с картинкой шаблоном, и выявляется коэффициент соответствия, чем коэффициент выше, тем больше вероятность, что это тот символ. Такую процедуру проходит каждый вырезанный символ с номера.
Программная реализация
Для реализации программы был выбран язык Delphi.
В главном окне программы пользователю предлагается выбрать изображение с номером (Рис. 1). Изображение должно быть в формате .PNG, либо .BMP. Ширина равна 235 пикселей, высота 50 пикселей.
Рис. 1
После загрузки файла появляется его изображение. (Рис. 2). Далее необходимо нажать кнопку «Распознать» для начала распознавания номера.
Рис. 2
В результате распознавания в поле «Результат» будет записан распознанный номер в текстовом виде. Ниже будет выведено количество неверно распознанных символов.
Рис. 3
Выборка состояла из 50 «чистых» номеров и 50 «грязных» номеров (изображение с шумами). В среднем процент верного распознавания на «чистых» номерах равен 81%, на «грязных» 77%. В ходе анализа работы программы выявлены следующие погрешности:
Символ «М» воспринимается как символ «Н»
Символ «Е» воспринимается как символ «В»
Символ «С» воспринимается как символ «О»
Символ «О» воспринимается как символ «0»
Символ «6» воспринимается как символ «8»
Метод уникален тем, что можно распознавать символы на картинке практически любого размера, с неплохой точностью. Т.е. не важно, будет ли это автомобильный номер или просто строка с текстом, программа будет распознавать оба варианта.
Возникновение погрешности обуславливается тем, что при построчном сравнении картинки шаблона с символом, получаются очень схожие коэффициенты соответствия, визуально видно, что символы с погрешностью, довольно-таки мало имеют различий, всего пару пикселей. Для человеческого глаза различия очевидны, но для программы эти отличия малопонятны.
Чистый номер | Распознанный номер | Кол-во ошибок | Запачканный номер | Распознанный номер | Кол-во ошибок |
A459YB47 | 1 | A459YB47 | 1 | ||
K188T070 | 2 | K1?8TO70
| 1 | ||
K183BB97 | 1 | K18TBB97 | 2 | ||
K273HY71 | 1 | K273H771 | 2 | ||
K384OB85 | 3 | K384OB85 | 3 | ||
K727AK10 | 0 | K727AK10
| 0 | ||
K805PB83 | 2 | K805PE83 | 1 | ||
K853HH80 | 2 | K85?HH80
| 3 | ||
H057HT28
| 3 | H057HT28 | 3 | ||
H270PB47 | 1 | H270PB47 | 1 | ||
H400HY37 | 1 | H400H737 | 2 | ||
H482BH01 | 4 | H482BH01 | 4 | ||
H770HH70 | 3 | H770HH70 | 3 | ||
H8900X23 | 2 | H8?00X23 | 3 | ||
H908KP03 | 1 | H903KP3 | 4 | ||
0118HB72 | 2 | O118H872
| 2 | ||
0188HT41 | 3 | CT88HT4T | 5 | ||
0335HY58 | 2 | OT?5H75? | 4 | ||
0348TH89 | 3 | O?48TH89 | 3 | ||
0444KB25 | 2 | O444KE25
| 0 | ||
0784TK91 | 2 | 0784TK91 | 2 | ||
P0320B80 | 2 | P0T20960
| 3 | ||
P138A018 | 1 | P438AC18 | 2 | ||
P195HP48 | 1 | P195HP46 | 0 | ||
P248YK80
| 1 | P2487K80 | 2 | ||
P777BH85 | 3 | P777EH65
| 1 | ||
P958HY34 | 2 | P958H734 | 3 | ||
P9990T17 | 1 | P999OT17 | 0 | ||
T237PB33
| 1 | T237PE33
| 0 | ||
T280HY183
| 3 | T280H7183 | 4 | ||
T2850Y152 | 1 | T2850Y152 | 1 | ||
T317HX125 | 0 | T317HX125 | 0 | ||
T358HK75 | 0 | TT58HK75 | 1 | ||
T4380Y93 | 2 | T438C793 | 3 | ||
T983BO55 | 3 | T98TBO55 | 4 | ||
X387HY35 | 0 | X387HY35 | 0 | ||
X404HH44 | 2 | X404HH44 | 2 | ||
X452HT58 | 0 | Y452HT58 | 1 | ||
X473PY14 | 0 | X47?PY14
| 1 | ||
X493OB83 | 3 | X49TOE83 | 3 | ||
X7120P88 | 1 | X7120P88 | 1 | ||
X872HH53 | 0 | X872HH53 | 0 | ||
X918YP15 | 1 | X918YP15 | 1 | ||
Y308BH82 | 1 | 7308BH82 | 0 | ||
Y385H0150 | 3 | YT85HO150 | 3 | ||
Y378HP01 | 1 | Y378HP01 | 1 | ||
Y418KB53
| 0 | 74T8KB53 | 2 | ||
Y539HX173 | 0 | Y539HX173 | 0 | ||
Y5970B94 | 2 | 75970B94 | 3 | ||
Y839AA01 | 0 | Y8?9AA01 | 1 |
Информация о работе Распознавание автомобильных номеров методом сравнения с шаблонами