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

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

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