exponenta event banner

insertLaneBoundary

Вставка границы полосы движения в изображение

Описание

пример

rgb = insertLaneBoundary(I,boundaries,sensor,xVehicle) вставляет разметку границ полосы в изображение с цветами. Полосы движения накладываются на изображение входной дороги, I. Это изображение поступает от датчика, указанного в sensor объект. xVehicle указывает координаты X, в которых будут прорисовываться маркеры полосы движения. Координаты y рассчитываются на основе параметров граничных моделей в boundaries.

пример

rgb = insertLaneBoundary(___,Name,Value) вставляет разметку границ полосы движения с дополнительными опциями, заданными одним или несколькими Name,Value пары аргументов, используя предыдущие входные аргументы.

Примеры

свернуть все

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

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

I = imread('road.png');

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

bevSensor = load('birdsEyeConfig');
birdsEyeImage = transformImage(bevSensor.birdsEyeConfig,I);
imshow(birdsEyeImage)

Figure contains an axes. The axes contains an object of type image.

Установите приблизительную ширину маркера полосы движения в мировых единицах (метрах).

approxBoundaryWidth = 0.25;

Обнаружение элементов полосы движения и отображение их в виде черно-белого изображения.

birdsEyeBW = segmentLaneMarkerRidge(im2gray(birdsEyeImage), ...
    bevSensor.birdsEyeConfig,approxBoundaryWidth);
imshow(birdsEyeBW)

Figure contains an axes. The axes contains an object of type image.

Получение точек-кандидатов полосы движения в мировых координатах.

[imageX,imageY] = find(birdsEyeBW);
xyBoundaryPoints = imageToVehicle(bevSensor.birdsEyeConfig,[imageY,imageX]);

Поиск границ полосы движения на изображении с помощью findParabolicLaneBoundaries функция. По умолчанию функция возвращает максимум две границы полосы движения. Границы хранятся в массиве parabolicLaneBoundary объекты.

boundaries = findParabolicLaneBoundaries(xyBoundaryPoints,approxBoundaryWidth);

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

XPoints = 3:30;

figure
sensor = bevSensor.birdsEyeConfig.Sensor;
lanesI = insertLaneBoundary(I,boundaries(1),sensor,XPoints);
lanesI = insertLaneBoundary(lanesI,boundaries(2),sensor,XPoints,'Color','green');
imshow(lanesI)

Figure contains an axes. The axes contains an object of type image.

Просмотрите полосы движения на изображении с видом на птицу.

figure
BEconfig = bevSensor.birdsEyeConfig;
lanesBEI = insertLaneBoundary(birdsEyeImage,boundaries(1),BEconfig,XPoints);
lanesBEI = insertLaneBoundary(lanesBEI,boundaries(2),BEconfig,XPoints,'Color','green');
imshow(lanesBEI)

Figure contains an axes. The axes contains an object of type image.

Входные аргументы

свернуть все

Входное дорожное изображение, указанное как изображение в цветном или оттенках серого.

Типы данных: single | double | int8 | int16 | uint8 | uint16

Модели границ полос движения, заданные как массив parabolicLaneBoundary объекты или cubicLaneBoundary объекты. Модели границ полос движения содержат следующие свойства:

  • Parameters - вектор, соответствующий коэффициентам граничной модели. Размер вектора зависит от степени полинома для модели.

    Объект границы полосы движенияПараметры
    parabolicLaneBoundary

    [A B C], соответствующие коэффициентам полиномиального уравнения второй степени вида y = Ax2 + Bx + C

    cubicLaneBoundary[A B C D], соответствующие коэффициентам полиномиального уравнения третьей степени вида y = Ax3 + Bx2 + Cx + D
  • BoundaryType - A LaneBoundaryType перечисление поддерживаемых границ полосы движения:

    • Unmarked

    • Solid

    • Dashed

    • BottsDots

    • DoubleSolid

    Укажите тип границы полосы движения как LaneBoundaryType.BoundaryType. Например:

    LaneBoundaryType.BottsDots
    
  • Strength - Отношение количества уникальных расположений по оси X на границе к общему количеству точек вдоль линии на основе XExtent собственность.

  • XExtent - двухэлементный вектор, описывающий минимальное и максимальное расположения осей X для граничных точек.

Датчик, собирающий изображения, указанный как birdsEyeView или monoCamera объект.

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

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'Color',[0 1 0]

Цвет границ полосы движения, заданный как вектор символа, скаляр строки или [R,G,B] вектор значений RGB. Можно задать определенные цвета для каждой границы в boundaries с массивом ячеек символьных векторов, строковым массивом или матрицей m-на-3 RGB-значений. Цвета соответствуют порядку граничных полос.

Значения RGB должны находиться в диапазоне типа данных изображения.

Поддерживаемые значения цвета: 'blue', 'green', 'red', 'cyan', 'magenta', 'yellow', 'black', и 'white'.

Пример: 'red'

Пример: [1,0,0]

Ширина линии для граничных полос, заданная как положительное целое число в пикселях.

Выходные аргументы

свернуть все

Изображение с наложенными граничными полосами, возвращаемое как изображение RGB-цвета. Класс выходного изображения соответствует входному изображению, I.

Расширенные возможности

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.
Представлен в R2017a