roboforum.ru

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

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

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

Сообщение РЭНТ » 03 июн 2009, 23:03

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

Велосипед я наверное придумал шикарный..... :pardon:
Аватара пользователя
РЭНТ
 
Сообщения: 14
Зарегистрирован: 02 июн 2009, 21:56
Откуда: Воронеж
прог. языки: Pascal, C++, Max Scripting
ФИО: Артем Проскурин

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

Сообщение avr123.nm.ru » 03 июн 2009, 23:18

Наверняка на сайте MATLAB есть примеры.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

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

Сообщение MiBBiM » 04 июн 2009, 14:22

у наших гаишников такое есть, а у заграничных и подавно. если не секрет, то применительно к какой области разрабатываете, автомагистрали, стоянки, перекрестки или нечто другое?
Tomorrow will be. Better
Аватара пользователя
MiBBiM
 
Сообщения: 1866
Зарегистрирован: 29 окт 2007, 18:11
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript

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] - хорошая штука!
Аватара пользователя
РЭНТ
 
Сообщения: 14
Зарегистрирован: 02 июн 2009, 21:56
Откуда: Воронеж
прог. языки: Pascal, C++, Max Scripting
ФИО: Артем Проскурин

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

Сообщение MiBBiM » 04 июн 2009, 15:15

эм, имеет ввиду что с этими распознанными знаками делать? скорость подсчитывать и лихачей штрафовать или важно направление движения знака, для создания системы регистрации на стоянках?
Tomorrow will be. Better
Аватара пользователя
MiBBiM
 
Сообщения: 1866
Зарегистрирован: 29 окт 2007, 18:11
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript

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

Сообщение РЭНТ » 04 июн 2009, 15:38

Ды нет, таких задач я не ставил, просто распознавание номера и поиск его по БД)
Аватара пользователя
РЭНТ
 
Сообщения: 14
Зарегистрирован: 02 июн 2009, 21:56
Откуда: Воронеж
прог. языки: Pascal, C++, Max Scripting
ФИО: Артем Проскурин

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

Сообщение contr » 04 июн 2009, 15:59

Можно FineReader задействовать. Написать к нему батник для загрузки, распознавания и сохранения. Распознает он хорошо, а извлечь из распознанного номера - не проблема
contr
 
Сообщения: 987
Зарегистрирован: 17 апр 2009, 15:09
Откуда: Rostov-Don
Предупреждения: -1

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

Сообщение boez » 04 июн 2009, 16:16

Вот сильно я сомневаюсь, что файнридер с таким справится. Его задача - выделять картинки на фоне текста и потом текст распознавать, а картинки сохранять так. А тут надо выделить текст на фоне картинки...
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

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

Сообщение contr » 04 июн 2009, 19:22

Не, я пробовал. Текст на фоне картинки он тоже распознает. Как распознавалка, очень мощная прога.
contr
 
Сообщения: 987
Зарегистрирован: 17 апр 2009, 15:09
Откуда: Rostov-Don
Предупреждения: -1

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

Сообщение РЭНТ » 04 июн 2009, 21:07

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

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

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

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

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

З.Ы. 2Vooon спасибо, в следующий раз буду обязательно юзать [code=cpp] :)
Аватара пользователя
РЭНТ
 
Сообщения: 14
Зарегистрирован: 02 июн 2009, 21:56
Откуда: Воронеж
прог. языки: Pascal, C++, Max Scripting
ФИО: Артем Проскурин

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

Сообщение contr » 04 июн 2009, 22:58

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

предупреждать надо :(
contr
 
Сообщения: 987
Зарегистрирован: 17 апр 2009, 15:09
Откуда: Rostov-Don
Предупреждения: -1

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

Сообщение blindman » 05 июн 2009, 05:17

Читать не по диагонали надо
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

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
Аватара пользователя
РЭНТ
 
Сообщения: 14
Зарегистрирован: 02 июн 2009, 21:56
Откуда: Воронеж
прог. языки: Pascal, C++, Max Scripting
ФИО: Артем Проскурин

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

Сообщение =DeaD= » 05 июн 2009, 22:26

Чтобы такого избежать - не делайте в нескольких местах программы одинаковые строки. Сделайте переменную с этой строкой и пользуйте везде. Несовпадение переменной компилятор отловит, а постоянное значение обеспечится тем что это одна и та же переменная.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

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

Сообщение TrashVigor » 05 июн 2009, 22:49

РЭНТ, тема нужная развивай!
GIRUGAMESH!
Аватара пользователя
TrashVigor
 
Сообщения: 134
Зарегистрирован: 11 июл 2008, 22:43
Откуда: Воронежск
прог. языки: С, Delphi, Asm

След.

Вернуться в Алгоритмы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9