外部参数

校准的相机的计算位置

描述

[rotationMatrixtranslationVector] =外部参数(imagePointsworldPointscameraParams返回3 d旋转矩阵和3 d平移向量,让你从世界变换点坐标到摄像机坐标系。

例子

全部收缩

创建一组校正图像。

图像= imageDatastore(完整文件(toolboxdir('视力''visiondata'...'校准'“单反”));

检测棋盘的角落中的图像。

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

生成模式为中心的坐标系中的棋盘角落的世界坐标,与在(0,0)的左上角。方形尺寸为毫米。

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

校准相机。

I = readimage(图像,1);IMAGESIZE = [大小(I,1),大小(I,2)];cameraParams = estimateCameraParameters(imagePoints,worldPoints,...'图片大小',图片大小);

在新的位置加载图像。

imOrig = imread(完整文件(matlabroot,'工具箱''视力''visiondata'...'校准'“单反”'image9.jpg'));图imshow(imOrig);标题(“输入图像”);

Undistort图像。

[IM,newOrigin] = undistortImage(imOrig,cameraParams,'OutputView''充分');

查找新图像的参考对象。

[imagePoints,boardSize] = detectCheckerboardPoints(IM);

补偿图像坐标系偏移。

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

计算新的外部参数。

[rotationMatrix,translationVector] =外部参数(...imagePoints,worldPoints,cameraParams);

计算相机姿态。

[取向,位置] = extrinsicsToCameraPose(rotationMatrix,...translationVector);图plotCamera('位置',位置,'方向',方向,'尺寸',20);保持pcshow([worldPoints,零(大小(worldPoints,1),1)],...'VerticalAxisDir''下''MarkerSize',40);

输入参数

全部收缩

点的图像坐标,指定为中号-by-2阵列。该数组包含中号[数Xÿ]坐标。该imagePointsworldPoints投入必须都或者是两者

数据类型:|

世界坐标对应的图像坐标,指定为中号-by-2矩阵。该imagePointsworldPoints投入必须都或者是两者。该函数假定点在同一平面ž= 0和点的数量,中号,必须至少为4。

数据类型:|

对象,用于存储摄像机参数,指定为cameraParameterscameraIntrinsics, 要么fisheyeIntrinsics目的。这些目的是通过返回estimateCameraParameters功能,estimateFisheyeParameters功能,或相机校准应用程序。该对象包含一个照相机的内在,外在,和透镜畸变的参数。

输出参数

全部收缩

3-d旋转,返回为3×3矩阵。与平移矢量旋转矩阵一起让你变身世界坐标点到摄像机坐标系。

如果设置了imagePointsworldPoints输入类,则该函数返回rotationMatrixtranslationVector。否则,他们是

3-d翻译,返回为1×3向量。

如果设置了imagePointsworldPoints输入类,则该函数返回rotationMatrixtranslationVector。否则,他们是

算法

外部参数函数使用两种不同的算法来计算外部参数取决于是否worldPoints被指定为一个中号-by-2矩阵。使用中号-by-2矩阵为共面的点,其中ž= 0。

外部参数函数计算用于封闭形式的单个图像的旋转矩阵和平移矢量。在校准期间,外部参数的数值估计以最小化所有的校准图像重投影误差。因此,使用外部参数在校准图像返回的一个功能的旋转矩阵和平移矢量从校准期间获得的那些略有不同。

扩展功能

介绍了在R2014a