- PVSM.RU - https://www.pvsm.ru -
Здравствуйте форумчани. Это моя первая публикация. Написал программу по одному datasheetу.
Теперь раскажу по подробнее. Распознавание автомобильных номеров заключается в следующем:
1) Нахождение границ автомобильного номера;
2) Распознавание цифр и букв.
1) Берем изображение.
2) Вычисляем оператор Собеля по горизонтали и вертикали и получаем изображение.
3) Высчитываем для каждой горизонтали, разность соседних яркостей пикселей и рисуем кривую (бирюзовая линия — среднее значение всех яркостей пикселей по горизонтали).
4) Затем ищем Максимумы этой кривой, за средней линии максмумы не ищем
5) После этого вырезаем «горизонтальные» линии из изображения, вычисляем оператор Собеля, также считаем по вертикали яркостную кривую.
6) Затем выясняем по прямоугольникам, вырезанной области, символы являются ли они автомобильным номером — поиском служит прямая зеленного цвета-находятся ли они рядом с прямой (Автомобильный номер). В конце бинаризируем.
Нашел в OpenCv функцию AvgSdv — вычисляет среднее значение и стандартное отклонение элементов множества, независимо для каждого канала.
public double Value2(Image<Gray, byte> im, Image<Gray, byte> sample)
{
MCvScalar m1, m2;
Gray gray;
im.AvgSdv(out gray, out m1);
Image<Gray, byte> f = im;
sample.AvgSdv(out gray, out m2);
return Math.Abs((m1.v0 - m2.v0) + (m1.v1 - m2.v1) + (m1.v2 - m2.v2) + +(m1.v3 - m2.v3));
}
И этой функции высчитываем для каждого изображения (символа) с эталоном каждой буквы или цифры.
Вот ссылка на программу и исходный код [1].
Автор: человек со стажем
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/net/274725
Ссылки в тексте:
[1] ссылка на программу и исходный код: http://depositfiles.com/files/99ofkbnfz
[2] Источник: http://habrahabr.ru/sandbox/114480/
Нажмите здесь для печати.