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 функция. The cameraParameters объект содержит собственные, внешние и параметры искажения объектива камеры.

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

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

  • translationVector = - relativeLocation * relativeOrientation'

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

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

свернуть все

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

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

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

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

<reservedrangesplaceholder6> × [x, y, 1] = [X, Y, Z, 1] × <reservedrangesplaceholder0>.

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

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

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

.
Введенный в R2014b
Для просмотра документации необходимо авторизоваться на сайте