主要内容

reconstructScene

从视差图重建三维场景

描述

例子

xyzPoints= reconstructScene (disparityMapstereoParams返回一个3-D世界点坐标数组,从视差图重建一个场景。的stereoParams输入必须与用于校正视差图对应的立体图像的输入相同。

例子

全部折叠

加载立体声参数。

负载(“webcamsSceneReconstruction.mat”);

读立体图像对。

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

纠正图像。

[J1, J2] = rectifyStereoImages(I1,I2, stereparams);

显示校正后的图像。

图imshow(猫(j - 1 (:,: 1), J2 (:,: 2:3)),“InitialMagnification”, 50);

图中包含一个轴。轴包含一个图像类型的对象。

计算出差异。

disparityMap = disparitySGM (im2gray (j - 1), im2gray (J2));图imshow (disparityMap [0, 64),“InitialMagnification”, 50);

图中包含一个轴。轴包含一个图像类型的对象。

从视差图中重建每个像素对应点的三维世界坐标。

xyzPoints = reconstructScene (disparityMap stereoParams);

将一个距离摄像机3.2到3.7米的人分开。

Z = xyzPoints (:,:, 3);掩码= repmat(Z > 3200 & Z < 3700,[1,1,3]);j - 1(~面具)= 0;imshow (j - 1,“InitialMagnification”, 50);

图中包含一个轴。轴包含一个图像类型的对象。

输入参数

全部折叠

视差图像,指定为立体对图像1中像素的视差值的二维数组。你可以使用任何一种disparityBMdisparitySGM函数来生成视差图像。

视差图像可以包含标记为的无效值.这些值对应于图1中与图2不匹配的像素。该函数将无效视差值对应的世界坐标设置为

基于相机的分辨率,零视差的像素对应的是距离太远而无法测量的世界点。该函数将对应于零视差的世界坐标设置为

当您指定disparityMap输入作为一个,函数返回坐标为.否则,函数将坐标返回为

数据类型:|

立体摄像系统参数,指定为stereoParameters对象。

数据类型:uint8|uint16|int16||

输出参数

全部折叠

世界点的坐标,返回为——- - - - - -N3数组。三维世界坐标是相对于相机1的光学中心表示的立体系统stereoParams

输出数组包含[xyz中的像素对应的世界点坐标disparityMap输入。xyzPoints(:,:, 1)包含x视差图中像素对应点的世界坐标。xyzPoints(:,:, 2)包含y世界坐标,xyzPoints(:,:, 3)包含z世界坐标。三维世界坐标相对于立体系统中1号相机的光学中心。

当您指定disparityMap输入,函数返回xyzPoints输出为.否则,函数将其返回为

数据类型:|

参考文献

Bradski和Kaehler,学习OpenCV:计算机视觉与OpenCV库,塞瓦斯托波尔,CA: O'Reilly, 2008。

扩展功能

介绍了R2014a