extrinsics

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

Описание

пример

[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');

Figure contains an axes. The axes with title Input Image contains an object of type image.

Изображение без искажения.

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

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

[imagePoints,boardSize] = detectCheckerboardPoints(im);

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

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

Вычислите новые внешние данные.

[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);

Figure contains an axes. The axes contains 11 objects of type line, text, patch, scatter.

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

свернуть все

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

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

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

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

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

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

свернуть все

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

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

3-D преобразования, возвращается как вектор 1 на 3.

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

Алгоритмы

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

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

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

.
Введенный в R2014a