exponenta event banner

cameraMatrix

Проекционная матрица камеры

Описание

пример

camMatrix = cameraMatrix(cameraParams,rotationMatrix,translationVector) возвращает матрицу проекции камеры 4 на 3. Эту матрицу можно использовать для проецирования 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 = undistortImage(imOrig,cameraParams);

Поиск ссылочного объекта в новом изображении.

[imagePoints,boardSize] = detectCheckerboardPoints(im);

Вычислите новые внешние элементы.

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

Расчет матрицы камеры

P = cameraMatrix(cameraParams,rotationMatrix,translationVector)
P = 4×3
105 ×

    0.0157   -0.0271    0.0000
    0.0404   -0.0046   -0.0000
    0.0199    0.0387    0.0000
    8.9399    9.4399    0.0072

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

свернуть все

Параметры камеры, указанные как cameraParameters или cameraIntrinsics объект. Вы можете вернуть cameraParameters с использованием estimateCameraParameters функция. cameraParameters объект содержит внутренние, внешние параметры и параметры искажения объектива камеры.

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

Трансляция камеры, заданная как вектор 1 на 3. Вектор преобразования описывает преобразование мировых координат в координаты камеры. Этот вектор можно получить с помощью extrinsics функция. Можно также получить вектор с помощью location и orientation выходных данных relativeCameraPose функция:

  • translationVector = -relativeLocation * relativeOrientation'

translationVector входные данные должны быть вещественными, непарабельными и одного класса.

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

свернуть все

Проекционная матрица камеры, возвращаемая как матрица 4 на 3. Матрица содержит точки 3-D мира в однородных координатах, которые проецируются на изображение. При установке rotationMatrix и translationVector кому double, функция возвращает camMatrix как double. В противном случае возвращается camMatrix как single.

Функция вычисляет camMatrix следующим образом:

camMatrix = [rotationMatrix; translationVector] × K.
K: внутренняя матрица

Затем с помощью матрицы камеры и однородных координат можно проецировать точку мира на изображение.

w × [x, y, 1] = [X,Y,Z,1] ×camMatrix.

(X, Y, Z): мировые координаты точки
(x, y): координаты соответствующей точки изображения
w: произвольный масштабный коэффициент

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

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

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