主要内容

由三角形组成的

立体图像中未畸变匹配点的三维位置

描述

例子

worldPoints=满足(matchedPoints1matchedPoints2stereoParams从两幅立体图像中返回匹配的未失真图像点对的三维位置。

worldPoints=满足(matchedPoints1matchedPoints2cameraMatrix1cameraMatrix2返回匹配的配对在世界坐标系中的三维位置。这些位置由摄像机投影矩阵定义。

worldPointsreprojectionErrors) =满足(___另外,使用以前语法中的任何输入参数返回世界点的重投影错误。

worldPointsreprojectionErrorsvalidIndex) =满足(___另外,返回有效和无效世界点的索引。有效的点位于摄像机前面。

例子

全部折叠

负载立体声参数。

负载(“webcamsSceneReconstruction.mat”);

读取立体图像对。

I1 = imread (“sceneReconstructionLeft.jpg”);I2 = imread (“sceneReconstructionRight.jpg”);

Undistort图像。

I1 = undistortImage (I1, stereoParams.CameraParameters1);I2 = undistortImage (I2, stereoParams.CameraParameters2);

在两幅图像中检测一张脸。

faceDetector = vision.CascadeObjectDetector;face1 = faceDetector (I1);face2 = faceDetector (I2);

找到脸的中心。

Center1 = face1(1:2) + face1(3:4)/2;Center2 = face2(1:2) + face2(3:4)/2;

计算从相机1到人脸的距离。

point3d = triangulate(center1, center2, stereoParams);distanceInMeters =规范(point3d) / 1000;

显示检测到的人脸和距离。

distanceAsString = sprintf (“% 0.2 f米”, distanceInMeters);I1 = insertObjectAnnotation (I1,“矩形”face1 distanceAsString,“字形大小”, 18);I2 = insertObjectAnnotation (I2,“矩形”face2 distanceAsString,“字形大小”, 18);I1 = insertShape (I1,“FilledRectangle”, face1);I2 = insertShape (I2,“FilledRectangle”, face2);imshowpair (I1、I2“蒙太奇”);

图中包含一个坐标轴。轴包含一个image类型的对象。

输入参数

全部折叠

图1中点的坐标,指定为2的矩阵的数量(xy坐标,或作为KAZEPointsSURFPointsMSERRegionscornerPoints,或BRISKPoints对象。的matchedPoints1matchedPoints2输入必须包含使用函数匹配的点,例如matchFeatures

图2中点的坐标,指定为2的矩阵的数量(xy坐标,或作为KAZEPointsSURFPointsMSERRegionscornerPoints,或BRISKPoints对象。的matchedPoints1matchedPoints2输入必须包含使用函数匹配的点,例如matchFeatures

摄像机参数立体系统,指定为stereoParameters对象。物体包含了立体相机系统的内在、外在和镜头畸变参数。你可以使用estimateCameraParameters函数估计相机参数并返回stereoParameters对象。

当你经过一个stereoParameters对象到函数,世界坐标系的原点位于相机1的光学中心。的x-轴向右,则y-轴指向下,而z-轴指向远离摄像机的方向。

相机1的投影矩阵,指定为4 × 3矩阵。矩阵将齐次坐标下的三维点映射到摄像机图像上的相应点上。这个输入描述了摄像机1在世界坐标系中的位置和方向。cameraMatrix1必须是实数非稀疏数值矩阵。您可以使用cameraMatrix函数。

摄像机矩阵,传递给函数,定义世界坐标系。

相机2的投影矩阵,指定为4 × 3矩阵。矩阵将齐次坐标下的三维点映射到摄像机图像上的相应点上。这个输入描述了摄像机2在世界坐标系中的位置和方向。cameraMatrix2必须是实数非稀疏数值矩阵。您可以使用cameraMatrix函数。

摄像机矩阵,传递给函数,定义世界坐标系。

输出参数

全部折叠

未畸变图像点匹配对的三维位置,返回为3矩阵。矩阵包含了的数量(xyz两幅立体图像中未变形的图像点匹配对的位置。

当你指定相机几何使用stereoParams,世界点坐标相对于相机1的光学中心。

当你指定相机几何使用cameraMatrix1cameraMatrix2,世界点坐标由摄像机矩阵定义。

函数返回worldPoints作为数据类型matchedPoints1matchedPoints2是数据类型.否则,函数返回worldPoints作为数据类型

数据类型:|

重投影错误,返回为1的向量。该函数将每个世界点投影回两个图像中。然后,在每个图像中,该函数计算重投影误差作为被检测点和重投影点之间的距离。的reprojectionErrors向量包含每个世界点的平均重投影误差。

世界点数的有效性,返回为1逻辑向量。有效的点,表示为逻辑的1真正的),位于摄像机前面。无效点,表示为逻辑点0),位于摄像头后面。

世界点相对于相机位置的有效性是通过使用相机矩阵和齐次坐标将世界点投影到图像上来确定的。如果得到的比例因子是正的,世界点是有效的。

提示

由三角形组成的功能不考虑透镜畸变。可以使用undistortImage功能在检测点之前。或者,您可以使用undistortPoints函数。

参考文献

哈特利,R.和A.齐瑟曼。计算机视觉中的多视图几何。剑桥大学出版社, p. 312, 2003。

扩展功能

介绍了R2014b