Распознавание дорожных знаков (ограничение скорости)

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


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


Как видим, области белого цвета достаточно хорошо выделились (для этого мы взяли диапазон белого цвета с запасом). После этого используем функцию выделения контуров (OpenCV – cvFindContours) и перебираем контуры-кандидаты, размеры которых примерно подходят для знака (cvBoundingRect). В обоих случаях мы выделили правильные кандидаты (были и ложные, но они были отброшены после распознавания цифр и здесь не приводятся).


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


- +1
-
chip
- Поделиться
Комментарии (16)