roboforum.ru

Технический форум по робототехнике.

Выделение и распознавание автомобильного номерного знака

Выделение и распознавание автомобильного номерного знака

РЭНТ » 03 июн 2009, 23:03

Привет народ!)
Начал разбираться в OpenCV но знаний пока недостаточно для реализации данной программы. Может быть подскажите в каком примерно направлении двигаться, какие функции удобнее использовать для решения данной проблемы...в общем буду рад любой помощи)
До того как начал разбираться с OpenCV пытался реализовать все это стандартными WinApi функциями...но производительность даже при попиксельном переводе в двухцветное изображение оставляет желать лучшего(
Сам думал реализовать это так:
1. Перевести фотографию в двухцветное ч/б изобразение
2. Разбить изображение на небольшие квадраты и каждый просканировать на наличие чего-то похожего на символы (используя заранее обученную нейросеть, методом обратного распространения ошибки) отметить все квадраты в которых символы есть
3. В отмеченных квадратах выделить прямоугольную область(номерной знак)
4. Распознавание символов в квадрате

Велосипед я наверное придумал шикарный..... :pardon:

Re: Выделение и распознавание автомобильного номерного знака

avr123.nm.ru » 03 июн 2009, 23:18

Наверняка на сайте MATLAB есть примеры.

Re: Выделение и распознавание автомобильного номерного знака

MiBBiM » 04 июн 2009, 14:22

у наших гаишников такое есть, а у заграничных и подавно. если не секрет, то применительно к какой области разрабатываете, автомагистрали, стоянки, перекрестки или нечто другое?

Re: Выделение и распознавание автомобильного номерного знака

РЭНТ » 04 июн 2009, 15:02

Конечно не секрет) Просто робототехникой давно увлекаюсь, сейчас подоспело время дипломов и я решил взять себе тему по распознаванию изображений, долго ломал себе голову применительно к какой области можно сделать пример, программную разработку, ну и пришел к данной теме) И востребованность на защите будет легко доказать и мне интересно с такой работой возиться, как говорится лишний грамм мозгов никогда не помешает :)

2avr123.nm.ru Большое спасибо за подсказку, там действительно много полезной информации, изучаю) Но конкретно под мою задачу пока не нашел...

Кстати, народ подскажите, вродь все компилится...к примеру вот такой код:

Код: Выделить всёРазвернуть
#include "stdafx.h"
#include "highgui.h"

int _tmain(int argc, _TCHAR* argv[])
{
   IplImage* img = cvLoadImage("BlonD.jpg",1);
   cvNamedWindow("Example1", CV_WINDOW_AUTOSIZE);
   cvShowImage("Exemple1",img);
   printf("FUUUFUUFUFUFUUFUUFUFUU\n");
   cvWaitKey(0);
   cvReleaseImage(&img);
   cvDestroyWindow("Example1");
   return 0;
}


Но окно почему-то не отображает загружаемый рисунок...просто серым закрашивает и всё...((( Может подскажите как быть?

Модератор vooon:А еще лучше указывать язык для тега [code=cpp]
автоопределение отвалилось...
Последний раз редактировалось Vooon 04 июн 2009, 18:03, всего редактировалось 2 раз(а).
Причина: тег [CODE] - хорошая штука!

Re: Выделение и распознавание автомобильного номерного знака

MiBBiM » 04 июн 2009, 15:15

эм, имеет ввиду что с этими распознанными знаками делать? скорость подсчитывать и лихачей штрафовать или важно направление движения знака, для создания системы регистрации на стоянках?

Re: Выделение и распознавание автомобильного номерного знака

РЭНТ » 04 июн 2009, 15:38

Ды нет, таких задач я не ставил, просто распознавание номера и поиск его по БД)

Re: Выделение и распознавание автомобильного номерного знака

contr » 04 июн 2009, 15:59

Можно FineReader задействовать. Написать к нему батник для загрузки, распознавания и сохранения. Распознает он хорошо, а извлечь из распознанного номера - не проблема

Re: Выделение и распознавание автомобильного номерного знака

boez » 04 июн 2009, 16:16

Вот сильно я сомневаюсь, что файнридер с таким справится. Его задача - выделять картинки на фоне текста и потом текст распознавать, а картинки сохранять так. А тут надо выделить текст на фоне картинки...

Re: Выделение и распознавание автомобильного номерного знака

contr » 04 июн 2009, 19:22

Не, я пробовал. Текст на фоне картинки он тоже распознает. Как распознавалка, очень мощная прога.

Re: Выделение и распознавание автомобильного номерного знака

РЭНТ » 04 июн 2009, 21:07

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

А распознавание символов шаблонным методом выбрал по следующим причинам:

1. этот метод устойчив к искажению данных, что нередко наблюдается на номерных пластинах в виде теней и грязи;
2. шаблонный метод имеет высокую скорость обработки данных;
3. имеется априорная информация о единственном возможном шрифте;

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

Кстать, моя проблема с выводом рисунка в OpenCV так и не решена...(((Подскажите что делать люди добрые... :cry:

З.Ы. 2Vooon спасибо, в следующий раз буду обязательно юзать [code=cpp] :)

Re: Выделение и распознавание автомобильного номерного знака

contr » 04 июн 2009, 22:58

приду на защиту диплома и...

предупреждать надо :(

Re: Выделение и распознавание автомобильного номерного знака

blindman » 05 июн 2009, 05:17

Читать не по диагонали надо

Re: Выделение и распознавание автомобильного номерного знака

РЭНТ » 05 июн 2009, 22:16

Нашел ошибку из за которого не получалось вывести изображение...ппц...

Код: Выделить всёРазвернуть
#include "stdafx.h"
#include "highgui.h"

int _tmain(int argc, _TCHAR* argv[])
{
   IplImage* img = cvLoadImage("BlonD.jpg",1);
   cvNamedWindow("Example1", CV_WINDOW_AUTOSIZE); //ExAmple1!!!!
   cvShowImage("Exemple1",img);                   //ExEmple1!!!!   A!=E    (((((
   printf("FUUUFUUFUFUFUUFUUFUFUU\n");
   cvWaitKey(0);
   cvReleaseImage(&img);
   cvDestroyWindow("Example1");
   return 0;
}


Я даже и не думал что ошибка может быть такой глупой! :( Просто вместо "ExAmple1" написал "ExEmple1" через Е ... Бывает же такое... :D

Re: Выделение и распознавание автомобильного номерного знака

=DeaD= » 05 июн 2009, 22:26

Чтобы такого избежать - не делайте в нескольких местах программы одинаковые строки. Сделайте переменную с этой строкой и пользуйте везде. Несовпадение переменной компилятор отловит, а постоянное значение обеспечится тем что это одна и та же переменная.

Re: Выделение и распознавание автомобильного номерного знака

TrashVigor » 05 июн 2009, 22:49

РЭНТ, тема нужная развивай!


cron
Rambler\'s Top100 Mail.ru counter