extrinsics

Вычислите местоположение калиброванной камеры

Синтаксис

[rotationMatrix,translationVector] = extrinsics(imagePoints,worldPoints,cameraParams)

Описание

пример

[rotationMatrix,translationVector] = extrinsics(imagePoints,worldPoints,cameraParams) возвращает 3-D матрицу вращения и 3-D вектор сдвига, чтобы позволить вам преобразовывать точки от мировой координаты до системы координат камеры.

Примеры

свернуть все

Создайте набор калибровочных изображений.

  images = imageDatastore(fullfile(toolboxdir('vision'),'visiondata', ...
      'calibration', 'slr'));

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

[imagePoints,boardSize] = detectCheckerboardPoints(images.Files);

Сгенерируйте мировые координаты углов шахматной доски в центральной шаблоном системе координат с верхним левым углом в (0,0). Размер квадратов находится в миллиметрах.

squareSize = 29;
worldPoints = generateCheckerboardPoints(boardSize, squareSize);

Калибруйте камеру.

I = readimage(images,1);
imageSize = [size(I,1), size(I,2)];
cameraParams = estimateCameraParameters(imagePoints,worldPoints, ...
                              'ImageSize',imageSize);

Загрузите изображение в новом местоположении.

imOrig = imread(fullfile(matlabroot,'toolbox','vision','visiondata', ...
    'calibration','slr','image9.jpg'));
figure
imshow(imOrig);
title('Input Image');

Не исказите изображение.

[im,newOrigin] = undistortImage(imOrig,cameraParams,'OutputView','full');

Найдите ссылочный объект в новом изображении.

[imagePoints,boardSize] = detectCheckerboardPoints(im);

Компенсируйте сдвиг системы координат изображений.

imagePoints = [imagePoints(:,1) + newOrigin(1), ...
             imagePoints(:,2) + newOrigin(2)];

Вычислите новый extrinsics.

[rotationMatrix, translationVector] = extrinsics(...
imagePoints,worldPoints,cameraParams);

Вычислите положение камеры.

[orientation, location] = extrinsicsToCameraPose(rotationMatrix, ...
  translationVector);
figure
plotCamera('Location',location,'Orientation',orientation,'Size',20);
hold on
pcshow([worldPoints,zeros(size(worldPoints,1),1)], ...
  'VerticalAxisDir','down','MarkerSize',40);

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

свернуть все

Отобразите координаты точек, заданных как M-by-2 массив. Массив содержит количество M [x, y] координаты. imagePoints и входными параметрами worldPoints должен оба быть double или оба быть single.

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

Мировые координаты, соответствующие, чтобы отобразить координаты, заданные как M-by-2 матрица. imagePoints и входными параметрами worldPoints должен оба быть double или оба быть single. Функция принимает, что точки являются компланарными с z = 0, и число точек, M, должно быть по крайней мере 4.

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

Объект для хранения параметров камеры, заданных как cameraParameters, cameraIntrinsics или объект fisheyeIntrinsics. Эти объекты возвращены функцией estimateCameraParameters, функцией estimateFisheyeParameters или приложением Camera Calibrator. Объект содержит внутреннее, внешнее, и параметры искажения объектива камеры.

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

свернуть все

3-D вращение, возвращенное как 3х3 матрица. Матрица вращения вместе с вектором сдвига позволяет вам преобразовывать точки от мировой координаты до системы координат камеры.

Если вы устанавливаете imagePoints и входные параметры worldPoints классифицировать double, то функция возвращает rotationMatrix и translationVector как double. В противном случае они - single.

3-D перевод, возвращенный как 1 3 вектор.

Если вы устанавливаете imagePoints и входные параметры worldPoints классифицировать double, то функция возвращает rotationMatrix и translationVector как double. В противном случае они - single.

Алгоритмы

Функция extrinsics использует два различных алгоритма, чтобы вычислить extrinsics в зависимости от того, задан ли worldPoints как M-by-2 матрица. Используйте M-by-2 матрица для компланарных точек где z = 0.

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

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

Введенный в R2014a