Простейший код программы для распознавания дорожных знаков. TSR – система распознавания дорожных знаков. Из чего состоит система

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

Что это такое?

Такая функция как распознавание дорожных знаков используется на автомобилях BMW, Opel, Mercedes-Benz и других. По сути дела, все базируется на работе видеокамеры, расположенной перед зеркалом обзора заднего вида и направленной по ходу движения. Работает такая система распознавания дорожных знаков следующим образом – видеокамера сканирует местность перед собой.

Полученное изображение передается в электронный блок, где распознается, и при его соответствии тем требованиям, которые заложены в устройство, на панели приборов высвечивается нужный символ, что порой сопровождается звуковым сигналом.


Чаще всего предметом анализа является ограничение скорости. При распознавании анализируется:

  • форма знака;
  • его цвет;
  • значение надписи (скорости);
  • содержание ограничения (вид ТС, на которое данное ограничение распространяется, время и зона действия);
  • фактическая скорость машины.

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

Чем это хорошо, и что в этом плохого?

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


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

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

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

Иван Ожиганов Июль 9, 2013

Будущее рынка программного обеспечения и мобильных приложений в частности тесно связано с прикладным использованием M2M-технологий, позволяющих реализовывать новые интересные идеи и внедрять более совершенные решения в самых различных областях: безопасности, удаленного видеонаблюдения, автоматизации производства, потребительской электроники и других.

В 2014 Apple планирует запустить iOS in the Car - мобильную платформу, позволяющую использовать iOS-устройства через интерфейс автомобиля, и сейчас наша команда работает над созданием прототипа приложения-помощника водителя для iOS-устройств.

Обзор проекта

Идея проекта - добавить к возможностям iOS-устройств функции штурмана, «умного видеорегистратора». Задача текущего этапа - разработать приложение-прототип, которое не только ведет запись дорожных событий, как обычный регистратор, но и распознает встречающиеся дорожные знаки, предупреждая о них водителя. Функция предупреждения важна, т. к. зачастую водители не успевают заметить знак или быстро забывают, какой последний знак или последовательность знаков они проехали.

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

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

Задачу можно условно разбить на два этапа:

  • Цветовая сегментация изображения
  • Распознавание знака

Этап 1. Цветовая сегментация изображения

Захват изображения. Поиск красного и белого цветов

Уникальной характеристикой запрещающих знаков является круг с преобладанием белого цвета и красным контуром, позволяющий идентифицировать эти знаки на изображениях. После того, как мы получили кадр с камеры в формате RGB, мы вырезаем изображение размером 512 на 512 (Рис. 1) и выделяем на нем красный и белый цвета, отбрасывая все остальные.

Для цветовой локализации - определения элементов конкретного цвета - формат RGB очень неудобен, потому что чистый красный цвет в природе встречается очень редко, но почти всегда идет с примесями других цветов. Кроме того, цвет изменяет оттенок и яркость в зависимости от освещения. Так, например, на восходе и закате солнца все предметы приобретаю красный оттенок; сумерки и полумрак тоже дают свои оттенки.

Рис. 1 . Изображение в формате RGB размером 512 х 512, поступающее на вход алгоритма.

Тем не менее, сначала мы попробовали решить задачу, используя исходный RGB-формат. Чтобы выделить красный цвет, мы устанавливали верхний и нижний пороги: R > 0,7, а G и B < 0,2. Но модель оказалась не очень удобной, т.к. значения цветовых каналов сильно зависели от освещенности и времени суток. Например, значения каналов RGB красного цвета в солнечный и пасмурный дни сильно отличаются.

Поэтому модель RGB мы перевели в цветовую модель HSV/B, в которой координатами цвета являются: цветовой тон (Hue), насыщенность (Saturation) и яркость (Value / Brightness).

Модель HSV/B обычно представляют цветовым цилиндром (Рис. 2). Она удобна тем, что оттенки цвета в ней являются лишь инвариантами различных типов освещения и теней, что естественным образом упрощает задачу выделения необходимого цвета на изображении вне зависимости от условий, таких как время суток, погода, тень, расположение солнца и др.

Код шейдера для перехода от RGB к HSV/B:

Varying highp vec2 textureCoordinate; precision highp float; uniform sampler2D Source; void main() { vec4 RGB = texture2D(Source, textureCoordinate); vec3 HSV = vec3(0); float M = min(RGB.r, min(RGB.g, RGB.b)); HSV.z = max(RGB.r, max(RGB.g, RGB.b)); float C = HSV.z - M; if (C != 0.0) { HSV.y = C / HSV.z; vec3 D = vec3((((HSV.z - RGB) / 6.0) + (C / 2.0)) / C); if (RGB.r == HSV.z) HSV.x = D.b - D.g; else if (RGB.g == HSV.z) HSV.x = (1.0/3.0) + D.r - D.b; else if (RGB.b == HSV.z) HSV.x = (2.0/3.0) + D.g - D.r; if (HSV.x < 0.0) { HSV.x += 1.0; } if (HSV.x > 1.0) { HSV.x -= 1.0; } } gl_FragColor = vec4(HSV, 1); }


Рис. 2
. Цветовой цилиндр HSV/B.

Для выделения красного цвета мы строим три пересекающиеся плоскости, которые образуют область в цветовом цилиндре HSV/B, соответствующую красному цвету. Задача выделения белого цвета является более простой, т.к. белый цвет расположен в центральной части цилиндра и нам достаточно указать порог по радиусу (ось S) и высоте (ось V) цилиндра, которые образуют область, соответствующую белому цвету.

Код шейдера, выполняющий эту операцию:

Varying highp vec2 textureCoordinate; precision highp float; uniform sampler2D Source; //parameters that define plane const float v12_1 = 0.7500; const float s21_1 = 0.2800; const float sv_1 = -0.3700; const float v12_2 = 0.1400; const float s21_2 = 0.6000; const float sv_2 = -0.2060; const float v12_w1 = -0.6; const float s21_w1 = 0.07; const float sv_w1 = 0.0260; const float v12_w2 = -0.3; const float s21_w2 = 0.0900; const float sv_w2 = -0.0090; void main() { vec4 valueHSV = texture2D(Source, textureCoordinate); float H = valueHSV.r; float S = valueHSV.g; float V = valueHSV.b; bool fR=(((H>=0.75 && -0.81*H-0.225*S+0.8325 <= 0.0) || (H <= 0.045 && -0.81*H+0.045*V-0.0045 >= 0.0)) && (v12_1*S + s21_1*V + sv_1 >= 0.0 && v12_2*S + s21_2*V + sv_2 >= 0.0)); float R = float(fR); float B = float(!fR && v12_w1*S + s21_w1*V + sv_w1 >= 0.0 && v12_w2*S + s21_w2*V + sv_w2 >= 0.0); gl_FragColor = vec4(R, 0.0, B, 1.0); }

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

Рис . 3. Красно-белое изображение.

Поиск окружностей на изображении

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

Работа алгоритма заключается в следующем:

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

Таким образом, у нас получается черно-белое изображение (256 х 256), в котором фон залит черным цветом, а предполагаемые окружности - белым (Рис. 4а).

Рис. 4а . Бинарное изображение, отображающее границы красного и белого цветов.

Для уменьшения количества ложных точек полезно применить морфологию (Рис. 4б).

Рис. 4б . То же изображение, но после применения морфологии.

Далее, на полученном бинарном изображении необходимо найти окружности. Сначала, мы решили использовать метод Хаффа для поиска окружностей (Hough Circles Transform), реализованный на CPU в библиотеке OpenCV. К сожалению, как показали вычислительные эксперименты, данный метод слишком нагружает CPU и снижает производительность до неприемлемого уровня.

Логичным выходом из данной ситуации служил бы перенос алгоритма на шейдеры GPU, однако, как и другие методы поиска окружностей на изображениях, метод Хаффа плохо соответствует парадигме шейдеров (shader-approach). Таким образом, нам пришлось обратиться к более экзотическому методу поисков окружностей - методу быстрого поиск кругов при помощи градиентных пар (Fast Circle Detection Using Gradient Pair Vectors) , который показывает более высокую производительность на CPU.

Основные этапы данного метода следующие:

1 . Для каждого пикселя бинарного изображения определяется вектор, характеризующий направление градиента яркости в данной точке. Данные вычисления выполняет шейдер, реализующий оператор Собеля (Sobel operator):

Varying highp vec2 textureCoordinate; precision highp float; uniform sampler2D Source; uniform float Offset; void main() { vec4 center = texture2D(Source, textureCoordinate); vec4 NE = texture2D(Source, textureCoordinate + vec2(Offset, Offset)); vec4 SW = texture2D(Source, textureCoordinate + vec2(-Offset, -Offset)); vec4 NW = texture2D(Source, textureCoordinate + vec2(-Offset, Offset)); vec4 SE = texture2D(Source, textureCoordinate + vec2(Offset, -Offset)); vec4 S = texture2D(Source, textureCoordinate + vec2(0, -Offset)); vec4 N = texture2D(Source, textureCoordinate + vec2(0, Offset)); vec4 E = texture2D(Source, textureCoordinate + vec2(Offset, 0)); vec4 W = texture2D(Source, textureCoordinate + vec2(-Offset, 0)); vec2 gradient; gradient.x = NE.r + 2.0*E.r + SE.r - NW.r - 2.0*W.r - SW.r; gradient.y = SW.r + 2.0*S.r + SE.r - NW.r - 2.0*N.r - NE.r; float gradMagnitude = length(gradient); float gradX = (gradient.x+4.0)/255.0; float gradY = (gradient.y+4.0)/255.0; gl_FragColor = vec4(gradMagnitude, gradX, gradY, 1.0); }

Все ненулевые векторы группируются по направлениям. В силу дискретности бинарного изображения всего получается 48 направлений, т. е. 48 групп.

2 . В группах ищутся пары противоположно направленных векторов V1 и V2, например, 45 градусов и 225. Для каждой найденной пары проверяются условия (Рис. 5):

  • угол бета меньше некоторого порога
  • расстояние между точками P1 и P2 меньше заданного максимального диаметра окружности и больше минимального.

Если данные условия выполняются, то считается, что точка С, являющаяся серединой отрезка P1P2, является предполагаемым центром окружности. Далее эта точка C помещается, в так называемый, аккумулятор.

3 . Аккумулятор представляет собой трехмерный массив размером 256 x 256 x 80. Первые два измерения (256 x 256 - высота и ширина бинарного изображения) соответствуют предполагаемым центрам окружностей, а третье измерение (80) представляет возможные радиусы окружностей (максимальный - 80 пикселей). Таким образом, каждая градиентная пара накапливает отклик в некоторой точке, соответствующей предполагаемому центру окружности с некоторым радиусом.


Рис. 5 . Пара векторов V1-V2 и предполагаемый центр окружности C.

4 . Далее, в аккумуляторе ищутся центры, в которых дали отклик как минимум 4 пары векторов с различными направлениями, например, пары 0 и 180, 45 и 225, 90 и 270, 135 и 315. Близкие друг к другу центры объединяются. Если в одной точке аккумулятора найдено несколько центров окружностей с разными радиусами, то эти центры также объединяются и берется максимальный радиус.

Результат работы алгоритма поиска окружностей показан на Рис. 6.

Рис. 6 . Локализованные окружности, соответствующие двум запрещающим знакам.

Этап 2. Распознавание локализованных знаков

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

О принципе работы нейросетей мы писали в одном из наших недавних проектов по распознаванию номеров банковских карт. Наша задача требовала работу с многослойными - сверточными - нейросетями. Когда сегментация знака завершена, мы получаем изображение, которое и передаем сверточной нейронной сети, построенной на основе работ Йэн ЛеКана, Леона Вотту, Йошуа Бенджио и Патрика Хаффнера. Для обучения нейросети была подготовлена небольшая база обучающих изображений.

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

Заключение

Прототип приложения-штурмана - наш пробный шар в использовании M2M-технологий, и мы планируем развивать это направление в дальнейшем. В ближайших планах - реализовать распознавание всех типов знаков и расширить диапазон яркости: день, сумерки, яркое солнце, закаты и др.

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

Достаточно нередко начинающие и уже бывалые водители сталкиваются с рядом
заморочек во время управления транспортным средством. Водителю нужно
успевать смотреть за разметкой на дороге и созидать все дорожные знаки, чтоб
избежать аварийных и неожиданных ситуаций. Для облегчения жизни автомобилистов
разработана система определения дорожных символов. В первый раз они были
установлены в2008 году на автомобилях Бмв 7 серии, а потом на Mersedes-Benz S-Class. Современные
системы, которые обнаруживают знаки ограничения скорости, можно отыскать по всей
Европе.

Как работает система определения
дорожных символов

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

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

Более продвинутые
системы, установленные в премиум-автомобилях, показывают наивысшую скорость
определенного типа дороги. Если шофер едет на автомобиле со скоростью 100 км в
час за пределами населенных пт, то после обнаружения знака «конец
ограничения скорости», система показывает на стандартное ограничение скорости.

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

Достоинства системы

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

Современная установка
в автомобилях может также признавать индикатор временных символов сообщения. Камера работает очень
накрепко и способна распознавать признаки в тяжелых критериях. В редчайших случаях нехороший видимости, к примеру, с замороженным
ветровым стеклом либо очень сильным дождиком шофер получает сигнал и воспринимает
надлежащие деяния. Для этой цели создано особое программное
обеспечение для оптической диагностики. Камера распознает более 90
процентов из поддерживаемых дорожных символов. Благодаря сочетанию функций камеры
в автомобиле с навигационной системой, особенности и достоинства отдельных устройств
существенно возросла. Навигационная система не
может сама по для себя показывать всякую значимую информацию. Не считая того, информация, хранящаяся на карте в навигационной
системе, устаревает со временем. К примеру,
знаки перемещения скорости либо ограничение скорости нужно поновой
отрегулировать. Система обеспечивает более
точную и своевременную информацию, конкретно там, где автомобиль проходит под
знаком.

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

По статистике превышение скорости является одной из весьма распространенных причин ДТП, которые могут закончиться тяжелыми последствиями для водителя и пассажиров. Разработанная TSR или система распознавания дорожных знаков (Traffic Sign Recognition) создана с тем, чтобы водитель не забывал придерживаться разрешенной скорости согласно правилам дорожного движения. Устройство считывает и распознает дорожные знаки, регламентирующие скорость, напоминая при этом водителю о максимальной разрешенной скорости на определенном участке дороги, если его автомобиль едет быстрее, чем допустимо.

Устанавливаемая на авто система распознавания дорожных знаков конструктивно состоит из видеокамеры, блока управления и устройства подачи информации.
Видеокамера закреплена на ветровое стекло и находится за зеркалом заднего вида. Камера осуществляет функцию фиксации участка дороги впереди движущегося транспортного средства в местах нахождения дорожных знаков сверху и справа по направлению движения, и посылает данные в электронный блок управления. Видеокамера также применяется и другими системами активной безопасности, таких как система помощи движения по полосе и система выявления пешеходов.

Электронный блок управления предназначен для осуществления следующих функций:

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

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

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

Введение

С каждым годом количество автомобилей в мире возрастает, соответственно возрастает и количество дорожно-транспортных происшествий. В связи с этим все больше внимания уделяется автомобильным системам интеллектуальной обработки информации и принятия решений. Инженерами разных стран мира разработано множество систем активной безопасности для автомобилей таких, как ABS (антиблокировочная система), EBD (система распределения тормозных усилий), ESP (система динамической стабилизации автомобиля) и многие другие. Одной из наиболее современных является система распознавания дорожных знаков и дорожной разметки, функциональные возможности которой заключаются в оповещении водителя о наличии дорожных знаков в поле зрения камеры и предупреждении о приближении к опасным участкам дороги.

Идентификация дорожных знаков относится к актуальной и сложной научно-практической задаче распознавания образов. В настоящее время в этой области ведутся интенсивные исследования. Результатом этих работ стало появление коммерческих интеллектуальных систем, основной особенностью которых является закрытость алгоритма функционирования. Серийные автомобили, оснащенные системой распознавания дорожных знаков и дорожной разметки, появились на рынке в 2010 – 2011 гг. Однако многие системы подобного рода основаны на алгоритмах с высокой ресурсоемкостью, что затрудняет их использование в системах реального времени.

Цель данной работы заключается в разработке алгоритма, осуществляющего распознавание дорожных знаков ограничения скорости, основной особенностью которого является высокая скорость обработки кадров (не менее 10 кадров/с). Достижение этой цели подразумевает решение следующих задач: преобразование цветового пространства; удаление шумов; выделение областей интереса; верификация объектов интереса; идентификация дорожного знака .

Преобразование цветового пространства кадров видеосигнала

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

Рис. 1. Дорожные знаки ограничения скорости

Входной видеосигнал состоит из последовательности изображений (кадров), каждое из которых представлено в цветовом пространстве RGB и фактически представляет собой матрицу размерностью M×N×3, состоящую из целых чисел в диапазоне , которые определяют цвет каждого пикселя изображения. В таком цветовом пространстве поиск областей красного цвета предполагает одновременный анализ трех составляющих, при этом изменение составляющей R будет влиять на допустимые значения составляющих G и B. Поэтому целесообразно использование цветового пространства HSV, в котором эффективность выделения красного цвета выше по сравнению с RGB пространством.

HSV (Hue, Saturation, Value - тон, насыщенность, значение) - цветовая модель, в которой координатами цвета являются:

  • Hue - цветовой тон , (например, красный , зелёный или сине-голубой). Варьируется в пределах 0-360°, однако иногда приводится к диапазону 0-100 или 0-1.
  • Saturation - насыщенность . Варьируется в пределах 0-100 или 0-1. Чем больше этот параметр, тем «чище» цвет, поэтому этот параметр иногда называют чистотой цвета . А чем ближе этот параметр к нулю , тем ближе цвет к нейтральному серому .
  • Value (значение цвета). Также задаётся в пределах 0-100 и 0-1.

Цветовая модель HSV наиболее близкая к человеческому восприятию цветов.

Преобразование изображения из цветовой модели RGB в цветовую модель HSV производится по следующим формулам :




Если H < 0, то H = H + 360.

После данных преобразований координаты цвета будут находиться в следующих диапазонах: .

Цвет дорожных знаков меняется в зависимости от освещения. Так пороговые значения цветового тона (Hue) для дорожных знаков с красным контуром в дневное время будут отличаться от пороговых значений цветового тона (Hue) для этих знаков в ночное время. В связи с эффектом отражения света от поверхности дорожных знаков, например, при свете автомобильных фар или уличного освещения в ночное время красный цвет на знаках может восприниматься как оранжевый. Поэтому нами экспериментально были подобраны пороговые значения координат цвета в различных погодных условиях и при различной освещенности (табл. 1).

Таблица 1. Пороговые значения координат цвета, используемые для выделения красного цвета

Цветовое пространство

Ясный день

Дождь/Влажность

Вечер

Ночь

129

0

0

129

0

0

156

0

0

100

0

0

YCbCr

40

100

140

30

100

150

60

77

170

27

70

156

30

15

0

15

15

0

15

15

0

15

15

0

300

0.7

0.5

300

0.7

0.5

300

0.7

0.5

22

0.7

0.5

Как видно из результатов таблицы 1 цветовое пространство HSV является наиболее подходящим для выделения красного цвета, т.к. пороговые значения координат цвета практически в любых условиях постоянны и только в ночное время пороговые значения цветового тона (Hue) отличны.

Выделение объектов красного цвета на кадрах видеосигнала после их конвертации в цветовое пространство HSV производится следующим образом:

    Суммарная матрица изображения размером M×N×3 разделяется на три матрицы размером M×N, которые соответствуют трем компонентам цвета H, S и V.

    Над каждой из матриц H, S, V производится пороговое преобразование в соответствии с пороговыми значениями из таблицы 1 такое, что если компонент матрицы попадает в интервал между пороговыми значениями, то яркость данного пикселя равна 1, в противном случае – 0. В результате данной операции получаются три матрицы со значениями компонентов 0 или 1.

    Модифицированные матрицы H*, S*, V* объединяются с помощью выполнения над ними операции логического И. В результате получается бинарное изображение, на котором белые области соответствуют объектам красного цвета, а черные – всему остальному.



Рис. 2. Функции пороговой обработки


Рис. 3. Выделение красного цвета на изображении: а – исходное изображение; б – результат порогового преобразования

Удаление шумов с помощью морфологической фильтрации изображения

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

Расширение - это свёртка некоторого изображения (или области изображения), которое мы будем называть A, с некоторым ядром, которое мы будем называть B. Ядро имеет точку привязки (якорь) и может быть любых форм и размеров. Чаще всего ядро имеет квадратную форму с точкой привязки в центре. Ядро может рассматриваться как шаблон или маска, и его эффект на расширение зависит от оператора локального максимума. Когда ядро “скользит” над изображением вычисляется максимальное значение пикселя перекрываемого B, и затем значение пикселя лежащего под опорной точкой заменяется этим максимальным значением. Это вызывает появление ярких областей на изображении.

Сужение - обратная операция. Действие оператора сужения заключается в вычислении локального минимума под ядром. Данный оператор создаёт новое изображение на основе исходного по следующему алгоритму: когда ядро “скользит” над изображением вычисляется минимальное значение пикселя перекрываемого B, и затем значение пикселя лежащего под опорной точкой заменяется этим минимальным значением.

Суть операции сужения в том, что вкрапления и шумы размываются, в то время как большие и соответственно более значимые регионы не затрагиваются. А идея операции расширения – найти регионы аналогичного цвета и интенсивности и попытаться их объединить. Полезность расширения возникает, потому что во многих случаях большая область разбита на несколько более мелких, шумами, тенями и т.д. Применение небольшого расширения должно привести к тому, что эти области “сплавятся” в одну.

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

Результаты морфологической фильтрации представлены на рис. 4. Из рисунка следует, что фильтрация эффективно удаляет шумы на изображении и способствует увеличению точности последующей верификации объектов интереса.

Рис. 4. Удаление шумов на изображении с помощью морфологической операции закрытие: а – изображение с шумом; б – изображение после фильтрации

Верификация объектов интереса

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

Для определения наличия эллипсов (кругов) в областях интереса целесообразно применять преобразование Хафа. Данный метод предназначен для поиска объектов, принадлежащих определённому классу фигур с использованием процедуры голосования. Процедура голосования применяется к пространству параметров, из которого и получаются объекты определённого класса фигур по локальному максимуму в, так называемом, накопительном пространстве (accumulator space), которое строится при вычислении трансформации Хафа.

Точки окружности можно представить формулой:

,

где (a, b) – координаты центра окружности, а R – ее радиус.

Таким образом, формула, задающая семейство окружностей, имеет вид:

Как видно из формулы, для нахождения окружностей нужно задавать 3 параметра - координаты центра окружности и её радиус. Это приводит к увеличению пространства Хафа на целое измерение, что в итоге сказывается на скорости работы. Поэтому для поиска окружностей применяется т.н. градиентный метод Хафа (Hough gradient method).

Эффективность использования преобразования Хафа резко падает при увеличении размерности фазового пространства, поэтому перед его применением желательно минимизировать каким-либо образом количество параметров кривой. Можно существенно снизить количество кривых, потенциально проходящих через данную точку изображения, если рассматривать только кривые, касательная которой перпендикулярна градиенту яркости изображения в рассматриваемой точке. Таким образом, можно, например, свести задачу выделения окружностей с неизвестным радиусом к двумерному фазовому пространству:

    Применить детектор границ Кенни для нахождения границ на изображении .

    Определить центры кругов.

    Относительно центра определить ненулевые точки, лежащие на одном расстоянии.

Идентификация дорожного знака

Для распознавания дорожных знаков на кадрах видеопоследовательности после определения областей интереса к данным изображениям необходимо применить алгоритмы идентификации объектов на растровом изображении с целью определения смысла дорожного знака.

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

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

Для увеличения скорости работы алгоритма необходимо сократить размер входного вектора признаков. В простейшем случае при размере входного изображения 30 × 30 пикселей входной вектор признаков будет состоять из 3 * 30 * 30 = 2700 компонентов – значения пикселей изображения по 3 компонентам цвета (RGB), что неприемлемо для работы системы в реальном времени.

Предлагается сократить количество компонентов входного вектора признаков следующим образом:




где – элементы матрицы A размера 90 × 30, составленной из значений пикселей входного изображения по 3 компонентам цвета (RGB).

    Преобразовать входное цветное изображение в изображение в градациях серого по формуле:

    C = 0.229R + 0.587G + 0.114B

    где C – интенсивность серого, R, G, B – красная, зеленая и синяя составляющие соответственно.

  1. Для изображения в градациях серого рассчитать 30 вертикальных (vh) и 30 горизонтальных параметров (hh) по формулам соответственно:



где – компоненты матрицы C, T – адаптивный порог, вычисляемый по формуле:

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

Архитектура, используемой в системе нейронной сети представлена на рисунке 5.


Рис. 5. Архитектура нейронной сети

Экспериментально было подобрано число нейронов в скрытом слое для классификации знаков ограничения скорости. Число нейронов в скрытом слое N равно 90.

Выходной слой нейронной сети состоит из 8 нейронов, каждый из которых соответствует своему дорожному знаку (таблица 2).

Таблица 2. Соответствие дорожных знаков и выходных нейронов

Результаты экспериментов применения разработанного алгоритма распознавания дорожных знаков ограничения скорости

Исследование точности и быстродействия разработанного алгоритма выполнялось в среде IDE Microsoft Visual Studio 2010 с использованием библиотеки Qt 4.7 на видеоролике участка трассы Саратов – Волгоград протяженностью 50 км. Видеоролик был снят смартфоном Samsung Galaxy S. В качестве аппаратной платформы использовался нетбук HP Mini 210 со следующими техническими характеристиками:

Процессор Intel Atom N455;

ОЗУ 2 Gb DDR2.

Все методы обработки изображений реализованы с использованием хорошо оптимизированной библиотеки OpenCV 2.3.

Результаты исследования алгоритма представлены в таблице 3.

Таблица 3. Результаты исследования точности и быстродействия разработанного алгоритма

Параметр

Результаты

Общее количество знаков
Количество правильно определенных знаков
Количество неправильно определенных знаков
Количество пропущенных знаков
Среднее время обработки кадра, мс

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

Выводы

Разработан алгоритм распознавания дорожных знаков ограничения скорости. В результате проведения экспериментального исследования в среде IDE Microsoft Visual Studio 2010 с использованием библиотеки Qt 4.7 и библиотеки OpenCV 2.3 установлено, что точность (около 91 %) и быстродействие (20 кадров/с) алгоритма позволяет создавать на его основе интеллектуальные системы технического зрения, способные в режиме реального времени оповещать водителя о наличии дорожных знаков ограничения скорости в поле зрения камеры.

В дальнейшем планируется адаптация данного алгоритма для работы на мобильном устройстве (смартфоне) на базе операционной системы Google Android.

Использованная литература

    Гонсалес Р., Вудс Р. Цифровая обработка изображений. – М.: Техносфера – 2005. – 1072 с.

    Bradski G., Kaehler A. Learning OpenCV. - Sebastopol: O’Reilly, 2008 . - 555 p.

    Brkic K. An overview of traffic sign detection methods.

    Canny J. A Computational Approach to Edge Detection // IEEE Transactions on Pattern Analysis and Machine Intelligence. - November 1986. - V. 8, N. 6. - P. 679 – 697.