Matlab — это один из мощнейших на сегодняшний день пакетов прикладных программ, предназначенных для решения задач и технических вычислений
Введение
Каждый день огромное количество людей используют автомобиль в качестве средства постоянного передвижения, будь то такси или личный транспорт. Число владельцев автомобилей постоянно увеличивается. По статистике каждый час на дорогах появляется новый водитель на новой машине. Для идентификации автомобилей они оборудуются двумя номерными знаками, расположенными спереди и сзади.
Не является секретом и тот факт, что число дорожно-транспортных происшествий (ДТП), вызванных нарушением правил дорожного движения, возрастает пропорционально количеству автотранспорта. Наиболее часто, ДТП случаются по следующим причинам:
- Управление автомобилем в нетрезвом виде,
- Несоблюдение скоростного режима.
- Выезд на полосу встречного движения.
Если проблему езды в нетрезвом виде разрешить каким-либо автоматическим комплексом пока невозможно, то контроль рядности и скоростного режима уже сегодня по всему миру осуществляется при помощи автоматических комплексов. Такие комплексы функционируют по следующему алгоритму:
- Выполняют фиксацию нарушения при помощи камеры.
- Осуществляют распознавание номера машины.
- Выпускают постановление об административном правонарушении.
Далее уполномоченный инспектор проверяет все материалы и принимает решение о привлечении автовладельцев к ответственности.
Системы распознавания номеров не являются безупречными. Известно немало инцидентов, когда случалось ошибочное определение номерных знаков, и хотя их количество постоянно уменьшается, однако улучшать алгоритмы распознавания номеров всё-таки нужно.
Машинное зрение считается одной из наиболее быстро развивающихся технологий. В общем, процесс распознавания автомобильных номеров включает в свой состав следующие этапы:
- Определение номерного знака на изображении.
- Выполнение нормализации и сегментации номерного знака на символы.
- Осуществление распознавания символов.
Распознавание номерных знаков в Matlab
Изначально есть изображение автомобиля, которое снято под каким-либо углом, нередко загрязненное, а бывает, что и смазанное. Сначала исходное изображение из цветного переводится в оттенки серого. Далее нужно выделить контуры регистрационных номеров. Известны следующие основные способы выделения контуров:
- Оператор Собеля.
- Оператор Кэнни.
- Оператор Робертса.
- Оператор Превитта.
Оператор Собеля является дифференциальным оператором, результатом работы которого в точке с постоянной яркостью является нулевой вектор. А если же точка принадлежит границе областей с разной яркостью, то итогом работы оператора будет вектор, который пересекает границу и направлен в сторону увеличения яркости. На рисунке ниже показан итог работы оператора Собеля.
Рисунок 1. Иитог работы оператора Собеля. Автор24 — интернет-биржа студенческих работ
Как видно из этого рисунка, оператор осуществил выделение границ. Необходимо заметить, что на изображении автомобиля чётко виден контур автомобильного номера и даже входящие в него символы.
Работа оператора Кэнни состоит из следующих этапов:
- Этап сглаживания, на котором изображение размывается для устранения шума.
- Этап поиска градиентов, на котором контуры определяются там, где перепад яркости является максимальным.
- Этап подавления не максимумов, на котором только локальные максимумы определяются как границы.
- Этап двойной пороговой фильтрации, на котором потенциальные границы задаются как пороги.
- Этап трассировки области неоднозначности, на котором все границы, не связанные с уже установленными границами, подлежат удалению.
Оператор Робертса способен работать быстрее оператора Собеля, но если машина покрыта грязью, то скорость вычисления играет не в пользу определения номерной рамки. Ведь по дорогам часто передвигаются запыленные автомобили с плохо различимыми номерами. Для задачи определения номера этот оператор подходит только при наличии изображения высокого качества с чистым номером.
Оператор Превитта в общем почти идентичен оператору Собеля, с той лишь разницей, что у оператора Собеля центральные веса увеличены вдвое. Границы номера будут также хорошо выделены, как и у оператора Собеля. Но если изображение более низкого качества, причём лобовая поверхность машины изображена под углом, то может быть не видно таких же ярких силуэтов у номерной рамки.
В среде разработки Matlab все, рассмотренные выше методы, уже сформированы:
>>I=imread('test.jpg');
>>imshow(I);
>>I=rgb2gray(I);
>>BW1=edge(I,'Roberts');
>> BW2=edge(I,'Sobel');
>> BW3=edge(I,'Prewitt');
>> BW4=edge(I,'Canny');
>> imshow(BWl)
>> figure, imshow(BW2)
>> figure, imshow(BW3)
>> figure, imshow(BW4)
Далее возможно выполнить гистограммный анализ регионов. Эта методика основана на том, что символы на номере, фон и рамка являются контрастными. Проще говоря, после определения границ для изображения формируется гистограмма. И номер расположен там, где зафиксировано максимальное количество белых точек.
Затем, когда известны пропорции номера, можно сделать предположение о длине рамки. После чего, осуществляется поиск кандидата на номер, а именно вертикальная линия, после которой идут частые изменения яркости.
Размеры номера, согласно ГОСТу, равняются 520 миллиметров в длину и 112 миллиметров в ширину. Изображение номера по ГОСТу показано на рисунке ниже.
Рисунок 2. Изображение номера по ГОСТу. Автор24 — интернет-биржа студенческих работ
Необходимо отметить, что этот алгоритм неустойчив к шумам и грязи. Помимо этого, в случае большой перспективы, то есть большого угла наклона камеры при фотосъемке или маленьким изображением машины по сравнению с окружающими объектами, выделить максимум проекции будет достаточно трудно, а иногда и невозможно. В итоге можно сделать вывод, что данный алгоритм является простым в понимании и реализации, но может использоваться только в случае фотографирования машины как главного объекта фотографии.
В 2001 году Паул Виола и Майкл Джонс разработали алгоритм для нахождения лиц с использованием примитивов Хаара, который стал успешно применяться и для распознавания номерных знаков.