estimateMonoCameraParameters

Оцените внешние параметры монокулярной камеры с помощью шахматной доски

Описание

пример

[pitch,yaw,roll,height] = estimateMonoCameraParameters(intrinsics,imagePoints,worldPoints,patternOriginHeight) оценивает внешние параметры монокулярной камеры с помощью собственных параметров камеры и шахматного калибровочного шаблона. Возвращенные внешние параметры определяют углы поворота рыскания, тангажа и крена между системой координат камеры и осями системы координат транспортного средства. Функция также возвращает высоту камеры над землей. Задайте собственные параметры, изображение и мировые координаты угловых точек шахматной доски и высоту источника шаблона шахматной доски над землей.

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

[pitch,yaw,roll,height] = estimateMonoCameraParameters(___,Name,Value) задает опции, использующие одну или несколько пары "имя-значение", в дополнение к входам и выходам из предыдущего синтаксиса. Для примера можно задать ориентацию или положение шахматного шаблона.

Примеры

свернуть все

Сконфигурируйте монокулярную fisheye-камеру, удалив искажение объектива и затем оценив внешние параметры камеры. Используйте изображение шахматной доски в качестве калибровочного шаблона. Более подробную информацию о том, как сконфигурировать монокулярную камеру с объективом «рыбий глаз», см. в примере Configure Monocular Fisheye Camera.

Загрузите собственные параметры монокулярной камеры, которая имеет линзу «рыбий глаз». intrinsics является fisheyeIntrinsics объект.

ld = load('fisheyeCameraIntrinsics');
intrinsics = ld.intrinsics;

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

imageFileName = fullfile(toolboxdir('driving'),'drivingdata','checkerboard.png');
I = imread(imageFileName);
imshow(I)

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

Определите координаты шахматных углов на изображении.

[imagePoints,boardSize] = detectCheckerboardPoints(I);

Сгенерируйте соответствующие мировые координаты углов.

squareSize = 0.029; % Square size in meters
worldPoints = generateCheckerboardPoints(boardSize,squareSize);

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

patternOriginHeight = 0;
[pitch,yaw,roll,height] = estimateMonoCameraParameters(intrinsics, ...
                             imagePoints,worldPoints,patternOriginHeight);

Потому что monoCamera не принимает fisheyeIntrinsics объекты, удалите искажения из изображения и вычислите новые внутренние параметры из неискаженного изображения. camIntrinsics является cameraIntrinsics объект. Отобразите изображение, чтобы подтвердить удаление искажений.

[undistortedI,camIntrinsics] = undistortFisheyeImage(I,intrinsics,'Output','full');
imshow(undistortedI)

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

Сконфигурируйте монокулярную камеру с помощью предполагаемых параметров.

monoCam = monoCamera(camIntrinsics,height,'Pitch',pitch,'Yaw',yaw,'Roll',roll)
monoCam = 
  monoCamera with properties:

        Intrinsics: [1x1 cameraIntrinsics]
        WorldUnits: 'meters'
            Height: 0.4447
             Pitch: 21.8459
               Yaw: -3.6130
              Roll: -3.1707
    SensorLocation: [0 0]

Входные параметры

свернуть все

Собственные параметры камеры, заданные как cameraIntrinsics или fisheyeIntrinsics объект.

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

Координаты изображения шахматных угловых точек, заданные как матрица M-на-2 M числа векторов [x y]. Эти точки должны исходить из изображения, захваченного монокулярной камерой. Чтобы обнаружить эти точки в изображении, используйте detectCheckerboardPoints функция.

estimateMonoCameraParameters принимает, что все точки в worldPoints находятся в плоскости (X P, Y P), и эта M больше или равна 4. Чтобы задать высоту (X P, Y P) плоскости над землей, используйте patternOriginHeight.

Типы данных: single | double

Мировые координаты угловых точек в шахматной доске, заданные как M-на-2 матрица M числа векторов [x y].

estimateMonoCameraParameters принимает, что все точки в worldPoints находятся в плоскости (X P, Y P), и эта M больше или равна 4. Чтобы задать высоту (X P, Y P) плоскости над землей, используйте patternOriginHeight.

Точка (0,0) соответствует правому нижнему углу левого верхнего квадрата шахматной доски.

Типы данных: single | double

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

Измерение patternOriginHeight зависит от ориентации шахматного шаблона, как показано на этих схемах.

Горизонтальная ориентацияВертикальная ориентация

Чтобы задать ориентацию шаблона, используйте 'PatternOrientation' Пара "имя-значение". Если вы задаете 'PatternOrientation' на 'horizontal' (по умолчанию), и шаблон находится на земле, затем установите patternOriginHeight на 0.

Типы данных: single | double

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

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

Пример: 'PatternOrientation','vertical','PatternPosition','right'

Ориентация шахматного шаблона относительно земли, заданная как разделенная разделенными запятой парами, состоящая из 'PatternOrientation' и одно из следующих:

  • 'horizontal' - Шахматный шаблон параллелен земле.

  • 'vertical' - Шахматный шаблон перпендикулярен земле.

Положение шахматного шаблона относительно земли, заданное как разделенная разделенными запятой парами, состоящая из 'PatternPosition' и одно из следующих:

  • 'front' - Шахматный шаблон находится перед транспортным средством.

  • 'back' - Шахматный шаблон находится позади транспортного средства.

  • 'left' - Шахматный шаблон расположен слева от транспортного средства.

  • 'right' - Шахматный шаблон расположен справа от транспортного средства.

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

свернуть все

Угол тангажа между горизонтальной плоскостью транспортного средства и оптической осью камеры, возвращаемый как действительный скаляр в степенях. pitch использует конвенцию ISO для вращения с положительным углом по часовой стрелке при взгляде в положительном направлении Y V-оси транспортного средства.

Для получения дополнительной информации смотрите Угловые направления.

Угол рыскания между X V-образной осью транспортного средства и оптической осью камеры, возвращаемый как действительный скаляр в степенях. yaw использует конвенцию ISO для вращения с положительным углом по часовой стрелке при взгляде в положительном направлении Z V-оси транспортного средства.

Для получения дополнительной информации смотрите Угловые направления.

Угол крена камеры вокруг ее оптической оси, возвращаемый как действительный скаляр в степенях. roll использует конвенцию ISO для вращения с положительным углом по часовой стрелке при взгляде в положительном направлении X V-оси транспортного средства.

Для получения дополнительной информации смотрите Угловые направления.

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

Подробнее о

свернуть все

Система координат транспортного средства

В системе координат транспортного средства (X V, Y V, Z V), заданной monoCamera объект:

  • Ось X V указывает вперед от транспортного средства.

  • Ось Y V указывает налево, как видно при обращении вперед.

  • Ось Z V указывает вверх от земли, чтобы сохранить правую систему координат.

По умолчанию эта система координат находится на поверхности дороги, непосредственно под центром камеры (фокальной точкой камеры).

Чтобы получить более надежные результаты от estimateMonoCameraParametersшахматный шаблон должен быть помещен в точные положения относительно этой системы координат. Для получения дополнительной информации см. «Калибровка монокулярной камеры».

Угловые направления

Монокулярный датчик камеры использует направления положительного угла по часовой стрелке при взгляде в положительном направлении Z -, Y - и X - осей, соответственно.

Введенный в R2018b