exponenta event banner

parabolicLaneBoundary

Модель границы параболической полосы движения

Описание

parabolicLaneBoundary содержит информацию о параболической модели границ полосы движения.

Создание

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

Описание

пример

boundaries = parabolicLaneBoundary(parabolicParameters) создает массив параболических моделей границ полос из массива [A B C] параметры параболического уравнения y = Ax2 + Bx + C. Точки в моделях границ полосы движения находятся в мировых координатах.

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

развернуть все

Коэффициенты для параболических моделей вида y = Ax2 + Bx + C, указанные как [A B C] действительный вектор или как матрица [A B C] значения. Каждая строка parabolicParameters описывает отдельную модель границы параболической полосы движения.

Свойства

развернуть все

Коэффициенты для параболической модели вида y = Ax2 + Bx + C, указанные как [A B C] действительный вектор.

Тип границы, указанный как LaneBoundaryType поддерживаемых границ полосы движения. Поддерживаются следующие типы границ полосы движения:

  • Unmarked

  • Solid

  • Dashed

  • BottsDots

  • DoubleSolid

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

LaneBoundaryType.BottsDots

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

Длина границы вдоль оси X, заданная как [minX maxX] действительный вектор, описывающий минимальное и максимальное расположения по оси X.

Функции объекта

computeBoundaryModelПолучение координат y границ полосы движения, заданных координатами x

Примеры

свернуть все

Создание параболических граничных моделей левой и правой полос.

llane = parabolicLaneBoundary([-0.001 0.01  0.5]);
rlane = parabolicLaneBoundary([-0.001 0.01 -0.5]);

Создайте график птичьего глаза и плоттер границ полосы движения. Постройте график границ полосы движения.

bep = birdsEyePlot('XLimits',[0 30],'YLimits',[-5 5]);
lbPlotter = laneBoundaryPlotter(bep,'DisplayName','Lane boundaries');
plotLaneBoundary(lbPlotter, [llane rlane]);

Figure contains an axes. The axes contains an object of type line. This object represents Lane boundaries.

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

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

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.

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

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