主要内容

reconstructScene

利用视差图重构三维场景

描述

例子

xyzPoints= reconstructScene (disparityMapreprojectionMatrix返回从视差图重建场景的3-D世界点坐标数组。三维世界坐标相对于立体系统中摄像机1的光学中心。您可以使用rectifyStereoImages函数获取reprojectionMatrix从一对立体图像。

例子

全部折叠

加载立体声参数。

负载(“webcamsSceneReconstruction.mat”);

阅读立体图像对。

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

纠正图像。

[J1, J2, reprojectionMatrix] = rectifyStereoImages(I1,I2,stereo oparams);

显示校正后的图像。

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

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

计算出差异。

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

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

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

xyzPoints = reconstructScene (disparityMap reprojectionMatrix);

分割出距离摄像机3.2到3.7米的人。

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

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

输入参数

全部折叠

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

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

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

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

数据类型:|

重投影矩阵,指定为4 × 4矩阵。您可以使用rectifyStereoImages函数获取reprojectionMatrix从一对立体图像。

重投影矩阵表示为:

1 0 0 c x 0 1 0 c y 0 0 0 f 0 0 1 / b 0

在哪里f和[残雪,cy]分别为整流后相机1的焦距和主点。b是虚拟整流立体相机的基线。

数据类型:|

输出参数

全部折叠

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

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

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

数据类型:|

参考文献

G. Bradski和A. Kaehler,学习OpenCV:使用OpenCV库的计算机视觉,塞瓦斯托波尔,加州:奥莱利,2008年。

扩展功能

版本历史

介绍了R2014a

Baidu
map