主要内容

pointsToWorld

确定图像点的世界坐标

描述

worldPoints= pointsToWorld (intrinsictformimagePoints映射未扭曲的图像点imagePoints,到点上X-Y在世界坐标下的平面,worldPoints使用rigid3d转换tform

例子

worldPoints= pointsToWorld (intrinsicrotationMatrixtranslationVectorimagePoints返回世界点上X-Y平面,对应于输入图像点。点被转换使用输入旋转矩阵,平移向量,和相机的本质。

例子

全部折叠

将鱼眼图像的点映射到世界坐标,并将这些点与地面真值点进行比较。利用一系列棋盘图像对鱼眼参数进行估计和标定。

创建一组棋盘校准图像。

图像= imageDatastore (fullfile (toolboxdir (“愿景”),“visiondata”...“校准”“还装有”));

检测图像中的棋盘角。最后一个图像留作测试。

[imagePoints, boardSize] = detectCheckerboardPoints (images.Files (1: end-1));

在以模式为中心的坐标系中生成棋盘角的世界坐标,左上角为(0,0)。

squareSize = 29;%毫米worldPoints = generateCheckerboardPoints (boardSize squareSize);

根据图像和世界点估计鱼眼相机参数。使用第一个图像得到图像大小。

我= imread (images.Files{结束});imageSize = [size(I,1) size(I,2)];fisheyeParams = estimateFisheyeParameters (imagePoints worldPoints图象尺寸);intrinsic = fisheyeParams.Intrinsics;

在新图像中找到参考对象。

imagePoints = detectCheckerboardPoints(我“PartialDetections”、假);

计算新的外在。

[R t] =外在(imagePoints、worldPoints intrinsic);

地图图像指向X-Y平面上的世界坐标。

newWorldPoints = pointsToWorld (intrinsic R t, imagePoints);

比较估计的世界点和地面真值点。

情节(worldPoints (: 1) worldPoints (:, 2),“gx”);持有情节(newWorldPoints (: 1) newWorldPoints (:, 2),“罗”);传奇(“地面实况”“估计”);持有

图中包含一个轴对象。轴对象包含两个类型为line的对象。这些物体代表地面真相,估计。

输入参数

全部折叠

摄像机参数,指定为cameraIntrinsics或者一个fisheyeIntrinsics对象。该对象存储关于相机的固有校准参数的信息,包括镜头畸变参数。

摄像机在世界坐标中的变换,指定为rigid3d对象。

世界坐标相对于图像坐标的三维旋转,指定为一个3 × 3矩阵。旋转矩阵,加上平移向量,使您能够将点从世界坐标系转换到摄像机坐标系。的rotationMatrixtranslationVector输入必须是相同的数据类型。

数据类型:|

世界坐标相对于图像坐标的三维平移,指定为1 × 3向量。平移向量,连同旋转矩阵,使您能够将点从世界坐标系转换到摄像机坐标系。的rotationMatrixtranslationVector输入必须是相同的数据类型。

数据类型:|

图像点,指定为2矩阵包含xy图像点的坐标。

当使用cameraParameters对象作为cameraParams输入,pointsToWorld不能解释透镜畸变。因此,imagePoints输入必须包含在未失真图像中检测到的图像点,或者必须使用undistortPoints函数。对于一个fisheyeIntrinsics对象,图像点被扭曲。

输出参数

全部折叠

世界坐标,返回为2矩阵。表示[中未变形点的个数。xy世界坐标。

介绍了R2016a