exponenta event banner

cubicLaneBoundary

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

Описание

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

Создание

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

Описание

пример

boundaries = cubicLaneBoundary(cubicParameters) создает массив кубических моделей границ полос из массива [A B C D] параметры для кубического уравнения y = Ax3 + Bx2 + Cx + D. Точки в моделях границ полосы движения находятся в мировых координатах.

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

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

Параметры для кубических моделей вида y = Ax3 + Bx2 + Cx + D, указанные как [A B C D] действительный вектор или как матрица [A B C D] значения. Каждая строка cubicParameters описывает отдельную кубическую модель границы полосы движения.

Свойства

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

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

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

  • Unmarked

  • Solid

  • Dashed

  • BottsDots

  • DoubleSolid

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

LaneBoundaryType.BottsDots

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

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

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

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

Примеры

свернуть все

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

llane = cubicLaneBoundary([-0.0001 0.0 0.003  1.6]);
rlane = cubicLaneBoundary([-0.0001 0.0 0.003 -1.8]);

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

bep = birdsEyePlot('XLimits',[0 30],'YLimits',[-10 10]);
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]);

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

boundaries = findCubicLaneBoundaries(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.

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

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

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