Статья опубликована в рамках: Научного журнала «Студенческий» № 13(99)
Рубрика журнала: Информационные технологии
Скачать книгу(-и): скачать журнал часть 1, скачать журнал часть 2, скачать журнал часть 3
РАСПОЗНАВАНИЕ ЛИНИЙ ДОРОЖНОЙ РАЗМЕТКИ И ОПРЕДЕЛЕНИЕ ПОЛОЖЕНИЯ АВТОНОМНОГО АВТОМОБИЛЯ ОТНОСИТЕЛЬНО ПОЛОСЫ ДВИЖЕНИЯ
АННОТАЦИЯ
В данной статье рассмотрен метод определения положения автономного автомобиля относительно полосы движения и расчёта радиуса кривизны участка пути на основе видеоряда.
Ключевые слова: автономные автомобили, компьютерное зрение, локализация автомобиля, системы навигации
Решение задачи локализации является неотъемлемым атрбибутом системы навигации и реагирования автономного автомобиля. На сегодняшний день существуют многочисленные подходы к решению данной задачи, во многом зависящей от источника данных. Значительное число методик использует данные видеорегистраторов и встроенных камер, LIDAR-ов, радаров и прочих средств получения информации о внешнем мире. Подходы, базирующиеся на видеоданных получили особое распространение в силу простоты получения исходных данных и широкого спектра инструментов доступных для обработки видеопотока и отдельных кадров в частности.
Для распознавания линий дорожной разметки и определения положения автономного автомобиля относительно полосы движения на основе данных видеорегистратора необходимо решить несколько задач:
– Откалибровать камеру видеорегистратора для того, чтобы избежать пространственных искажений, обусловленных выпуклостью линзы (убрать эффект «рыбьего глаза»);
– Применить корректирующие операции в отношении изображения, получаемого с видеорегистратора для того, чтобы максимально повысить качество изображения;
– Применить пространственную трансформацию изображения, для того, чтобы получить развертку изображения дороги (вид сверху);
– Распознать линии дорожной разметки для того, чтобы определить границы полосы движения;
– На основе данных о направлении линий дорожной разметки рассчитать кривизну дороги и радиус поворота на заданном участке пути;
– Спроецировать полученную информацию на исходное изображение для презентации результата работы алгоритма в удобном формате.
На этапе калибровки камеры требуется выявить и исправить присущие конкретной модели камеры неточности в отношении формирования изображения. Эти неточности обусловлены тем, что свет, падающий на светочувствительный элемент, притерпевает искажения проходя через круглую линзу. В связи с этим изображение получает эффект «рыбьего глаза», когда по мере удаления от центра изображения все прямые линии приобретают дополнительную кривизну.
Для калибровки камеры необходимо рассчитать коэффициенты трансформации и применить их к выходному изображению. Коэффициенты рассчитываются путем расчёта кривизны линий на различных участках изображения при фотографировании объектов с заведомо прямыми линиями. Используемая в сфере компьютерного зрения программная библиотека OpenCV [1] позволяет выполнять такие операции максимально просто: для этого необходимо:
– Распечатать предложенный шаблон с изображением шахматного узора.
– Сделать серию фотографий распечатки на целевое фотоустройство под разными углами и с разными перспективными проекциями.
– Рассчитать положение линий, образуемых шахматным узором при помощи метода библиотеки cv2.findChessboardCorners.
– Передать полученные данные в метод cv2.getOptimalNewCameraMatrix для получения матрицы трансформации, валидной для конкретной камеры.
– Выполнить метод cv2.calibrateCamera, предоставив данные матрицы трансформации.
– Поступающие изображения трансфорировать посредством вызова метода применения сохраненных коэффициентов.
Рисунок 1. Обработка тестовых снимков в процессе калибровки
Используя рассчитанные коэффициенты и параметры калибровки камеры, мы можем применить аналогичные преобразования к реальным изображениям, полученным с видеорегистратора автомобиля. Это позволит избавиться от искажений и позволит более точно анализировать кривизну дороги на участке пути и положение автомобиля относительно полосы движения.
Рисунок 2. Преобразование реального изображения
Следующим этапом является подготовка изображения к процессу распознавания линий дорожной разметки, определение полосы движения и последующему анализу данной информации для получения сведений о расположении автомобиля относительно дороги [2].
Для того, чтобы максимально точно выявить линии дорожной разметки воспользуемся подходом, основанным на знаниях о том, что линии дорожной разметки являются относительно прямыми и протяженными. Следовательно, если рассматривать подобные элементы на изображениях, они будут представлять собой протяженные участки резких градиентов.
Таким образом, распознав устойчивые паттерны изменения градиента мы получим среди прочих контуры линий дорожной разметки. Для проверки устойчивости паттерна будем использовать поиск градиентов для горизонтального направления, вертикального направления, направления, близкого к 45° (135°), а также для нормализованной велчинины, представляющий величину градиента по обоим направлениям сразу. Поиск градиентов будем выполнять с помощью метода .Sobel библиотеки OpenCV [3] на черно-белом изображении, для того, чтобы получить сведения о контурах видимых объектов.
В то же время, для того, чтобы учесть контуры объектов различающихся по цвету, произведем поиск градиентов в пространстве HSL (Hue-Saturation-Lightness) по компонентам H и S, т.к. именно они отвечает за различия оттенков цветов и их насыщенности, в то время, как компонента L может варьироваться в зависимости от условий освещенности объекта, что будет слабо коррелировать с, непосредственно, контурами искомых объектов.
Применим фильтры со следующими параметрами, показавшими наилучший результат на тестовых изображениях:
Таблица 1.
Характеристики фильтров
Фильтр |
Нижний порог |
Верхний порог |
Размер ядра |
Sobel X |
50 |
150 |
15 |
Sobel Y |
50 |
150 |
15 |
Sobel XY |
50 |
150 |
9 |
Sobel (угол) |
0,8 |
1,2 |
9 |
HLS – H |
15 |
35 |
- |
HLS – S |
150 |
230 |
- |
Спроецировав все точки, прошедшие фильтры, получим картину, отражающую большинство конвидимых контуров объектов. Применив цветовую кодировку для подсветки точек прошедших конкретный фильтр, можно заметить, насколько эффективно использование нескольких типов фильтров для одного и того же изображения, т.к. особенности видимых границ объектов воспринимаются разными фильтрами по-разному. Объединение результатов способствует уменьшению общего количества шума в результатах:
Рисунок 4. Результат работы градиентных фильтров изображения
Следующим этапом является обработка изображения с точки зрения перспективной развёртки, с целью получения «вида сверху» участка дороги, обозримого в поле зрения видеорегистратора. Для этого необходимо с учётом местоположения видеорегистратора в автомобиле произвести преобразование на основе трапеции перспективы. Для получения конкретных координат удобно воспользоваться имеющимся снимком прямолинейного участка пути. Тогда, сопоставив ребра трапеции с линиями дорожной разметки можно получить достаточно точные координаты требуемой проекции:
Рисунок 5. Получение вида дороги сверху
Использовав впоследствии полученную матрицу трансформации для участков пути с изгибом, мы можем извлекать сведения о радиусе поворота на основе данных о кривизне дорожной разметки.
Применив данную развёртку наряду с объединенными фильтрами изображений, мы получим множество точек, которые можно аппроксимировать в кривую на основе данных об их распределении. Метод основан на технике фреймов, когда для каждого горизонтального сегмента изображения выполняется поиск точки с пиковым распределением количества видимых точек. В случае, если несколько фреймов расположено рядом, то это будет оказывать влияние на последующий поиск фреймов, повышая коэффициент вероятности для близлежащих участков. Для реализации данного алгоритма были задействован метод polyfit библиотеки numpy.
Полученная кривая достаточно репрезентативно позволяет судить о радиусе кривизны дороги и смещении автомобиля относительно центра полосы движения.
Рисунок 6. Этапы получения кривой из преобразованного изображения
Зная стандарт ширины полосы движения для автомобильных дорог и ширину видимого участка полосы движения в пикселях на полученном изображении, можно рассчитать соотношение, определяющее, сколько метров реального пространства приходится на видимые пиксели. Для данных тестового видеоряда соотношение получилось равным 0,0052 м/пиксель для горизонтального направления и 0,0414 для вертикального.
Эти данные позволяют рассчитать смещение автомобиля относительно центра полосы движения, а также радиус кривизны поворота текущего участка пути.
Используя эти данные, можно обеспечить практически в режиме реального времени автономный автомобиль сведениями о его локализации относительно дороги и элементов дорожной разметки.
Рисунок 7. Проецирование результатов моделирования на исходное изображение
Таким образом мы выяснили, что на основе данных видеорегистратора и техник компьютерного зрения, существует реальная возможность частичного решения задачи локализации автономного автомобиля. Дальнейшее развитие данной модели может лежать в плоскости адаптации алгоритма к различным условиям освещенности местности и обработки прочих объектов, попадающих в поле зрения видеорегистратора.
Список литературы:
- Camera Calibration // OpenCV portal [Электронный ресурс]. URL: https://docs.opencv.org/2.4/doc/tutorials/calib3d/camera_calibration/camera_calibration.html (дата обращения 06.04.2020)
- Advanced Lane Finding Project // Lane Finding Project [Электронный ресурс]. URL: https://github.com/kav137/CarND-Advanced-Lane-Lines
- Sobel Derivatives // OpenCV portal [Электронный ресурс]. URL: https://docs.opencv.org/2.4/doc/tutorials/imgproc/imgtrans/sobel_derivatives/sobel_derivatives.html
Оставить комментарий