Исследование алгоритмов распознавания регистрационных номеров автомобилей

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



Вµтся обрезанное исходное изображение (рисунок 2.5,в).

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

Рисунок 2.5 ? Результат обрезания темной части, а) исходное изображение, б) обрезание бинарного изображения, в) обрезанное исходное изображение

Обрезанное исходное изображение бинаризуется. Теперь символы становятся отчетливее, и появляется возможность найти горизонтальные линии, между которыми стоят символы (рисунок 2.6) и обрезать по ним изображение.

Рисунок 2.6 ? Дополнительное обрезание

Алгоритм поиска нижней границы символов:

.Исходная горизонтальная линия пикселей проходит через середину изображения.

.Подсчитывается число слитных групп черных пикселей в линии s.

.1.Начинаем с самого левого пикселя линии, s равно нулю.

.2.Двигаемся влево, пока не встретим черный пиксель, s увеличиваем на единицу. При достижении правой границы изображения переходим на шаг 3.

.3.Продолжаем движение влево до первого встретившегося белого пикселя, переходим на шаг b. Если достигнем правого края изображения, то переходим на следующий шаг алгоритма

.Если линия пересекает символы, то s будет порядка десяти, текущей становится следующая линия изображения по направлению вниз, переходим на шаг 2. Иначе, алгоритм добрался до светлой полосы и s резко падает до 0-3, завершаем работу алгоритма.

Аналогично находим верхнюю границу символов и вырезаем полученный номер из исходного изображения. В итоге удаления обрамления получаем изображение (рисунок 2.7), готовое к обработке фильтром подчеркивания границ и сегментации.

Рисунок 2.7 ? а) исходное изображение, б) вырезанная номерная пластина

Изображение подвергается фильтрации. Фильтр подчеркивания границ накладывается на каждый пиксель изображения, вычисляется сумма произведений значений матрицы и уровней яркости изображения.

Полученное число является яркостью соответствующего пикселя в новом изображении (рисунок 2.8).

Рисунок 2.8 ? Фильтрация

Пример фильтрации приведен на рисунке 2.9.

Рисунок 2.9 ? а) исходное изображение, б) обработанное фильтром подчеркивания границ изображение

Профильтрованное изображение подвергается процедуре бинаризации (рисунок 2.10) и передается на сегментацию.

Рисунок 2.10 ? Изображение, готовое к сегментации

2.2.3 Сегментация символов

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

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

Рисунок 2.11. Поиск подозрительной точки

Алгоритм поиска точки, подозрительной на принадлежность символу:

. Стартовой становится самая левая вертикальная линия пикселей.

. Начиная от верхнего пикселя, спускаемся вниз, пока не встретим белый пиксель. Так мы получаем верхнюю границу области поиска.

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

. В выделенной области поиска ищем первую попавшуюся черную точку. Если таковой не найдется, то текущей становится следующая линия по направлению вправо. Переходим на шаг 2.

. Найденная точка передается алгоритму выделения символа.

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

Рекурсивный алгоритм выделения символа:

.Точка помечается как принадлежащая символу.

.Если верхняя соседняя точка является черной, то переход на шаг 1.

.Если нижняя соседняя точка является черной, то переход на шаг 1.

.Определяем возможность рассмотрения соседних точек слева и справа. Для этого исследуется вертикальная линия пикселей, в которой находится текущая точка.

.1.Если верхний пиксель является белым, то переход на шаг 5.

.2.Спускаемся вниз по линии, пока не встретим белую точку, если таковой не найдется, то переходим на шаг 5

.3.Продолжаем движение вниз, пока не встретим черную точку, если таковой не найдется, то переходим на шаг 5

.4.Если нижний пиксель является белым, то переход на шаг 5.

.5.Поднимаемся вверх по линии, пока не встретим белую точку, если таковой не найдется, то переходим на шаг 5

.6.Продолжаем движение вверх, пока не встретим черную точку, если таковой не найдется, то переходим на шаг 5

.7.Если левая соседняя точка яв?/p>