主要内容

rectifyStereoImages

校正对立体图像

描述

例子

j - 1J2reprojectionMatrix= rectifyStereoImages(I1I2stereoParams的版本进行校正和恢复I1而且I2输入图像使用立体相机系统中存储的立体参数stereoParams对象。使用reconstructScene函数与reprojectionMatrix将视差图中的2-D点重新投影到摄像机1的整流摄像机坐标系中的3-D点。

立体图像校正将图像投影到一个共同的图像平面上,使相应的点具有相同的行坐标。这种图像投影使图像看起来好像两个摄像机是平行的。使用disparityBMdisparitySGM函数,从校正后的图像计算视差图,用于三维场景重建。

___camMatrix1camMatrix2R1R2= rectifyStereoImages(I1I2stereoParams返回3 × 4的摄像机投影矩阵camMatrix1而且camMatrix2对于整流的摄像机,以及相应的整流旋转矩阵,R1而且R2

j - 1J2= rectifyStereoImages(I1I2tform1tform2返回修正后的版本I1而且I2通过应用射影变换输入图像tform1而且tform2

例子

j - 1J2= rectifyStereoImages(___插值函数另外指定校正图像使用的插值方法。可以将方法指定为“最近的”“线性”,或“立方”

例子

j - 1J2= rectifyStereoImages(___名称=值使用一个或多个名称-值参数以及以前语法中的参数组合指定选项。例如,OutputView = "有效"设置OutputView参数“有效的”

例子

全部折叠

指定包含棋盘的图像进行校准。

imageDir = fullfile(toolboxdir(“愿景”),“visiondata”...“校准”“立体”);leftImages = imageDatastore(fullfile(imageDir,“左”));右timages = imageDatastore(fullfile(imageDir,“对”));

检测棋盘。

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

指定棋盘键的世界坐标。

squaresizeinmm = 108;worldPoints = generateCheckerboardPoints(boardSize, squaresizeinmm);

阅读图片。

I1 = readimage(leftImages,1);I2 = readimage(righttimages,1);imageSize = [size(I1,1),size(I1,2)];

校准立体摄像系统。

stereoParams = estimatecamerparameters (imagePoints,worldPoints,ImageSize= ImageSize);

使用'full'输出视图纠正图像。

[J1_full,J2_full] = rectifyStereoImages(I1,I2,stereoParams,OutputView=“全部”);

显示'full'输出视图的结果。

图;imshow (stereoAnaglyph (J1_full J2_full));

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

使用“有效”输出视图纠正图像。这是最适合计算视差。

[J1_valid,J2_valid] = rectifyStereoImages(I1,I2,stereoParams,OutputView=“有效”);

显示'valid'输出视图的结果。

图;imshow (stereoAnaglyph (J1_valid J2_valid));

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

输入参数

全部折叠

输入相机1对应的图像,指定为——- - - - - -N-by-3真彩色图像或——- - - - - -N二维灰度阵列。输入的图像I1而且I2也必须是实的,有限的,非稀疏的。输入图像必须是相同的类。

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

输入相机2对应的图像,指定为——- - - - - -N-by-3真彩色图像或——- - - - - -N二维灰度阵列。输入的图像I1而且I2必须是实的,有限的,非稀疏的。输入图像也必须是相同的类。

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

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

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

图像1的投影变换,指定为aprojtform2d对象。你可以得到一个projtform2d对象使用estimateStereoRectification函数。

数据类型:|

图像2的投影变换,指定为aprojtform2d对象。你可以得到一个projtform2d对象使用estimateStereoRectification函数。

数据类型:|

插值方法,指定为任意一种“线性”“最近的”,或“立方”

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

例子:OutputView = "有效"设置OutputView参数“有效的”

校正图像的大小,指定为“全部”“有效的”.当将该参数设置为时“全部”,校正后的图像包含原始图像中的所有像素。当您将此值设置为时“有效的”时,将输出图像裁剪为包含有效像素的最大公共矩形的大小。

当校正图像之间没有重叠时,设置OutputView“全部”

输出像素填充值,指定为数值标量或三元素数值矢量。当输入图像中对应的反向变换位置完全超出输入图像边界时,对输出像素使用填充值。如果I1而且I2是二维灰度图像,则必须设置FillValues到数值标量。如果I1而且I2都是真彩色的图像,那么你可以设置吗FillValues到RGB值的标量或三元素向量。

输出参数

全部折叠

未扭曲和更正的版本I1,作为——- - - - - -N-by-3真彩色图像或作为——- - - - - -N二维灰度图像。

立体图像校正将图像投影到一个共同的图像平面上,使相应的点具有相同的行坐标。这种图像投影使图像看起来好像两个摄像机是平行的。使用disparityBMdisparitySGM函数,从校正后的图像计算视差图,用于三维场景重建。

未扭曲和更正的版本I2,作为——- - - - - -N-by-3真彩色图像或作为——- - - - - -N二维灰度图像。

立体图像校正将图像投影到一个共同的图像平面上,使相应的点具有相同的行坐标。这种图像投影使图像看起来好像两个摄像机是平行的。使用disparityBMdisparitySGM函数,从校正后的图像计算视差图,用于三维场景重建。

重投影矩阵,以4 × 4矩阵的形式返回:

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

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

使用reconstructScene函数与reprojectionMatrix将视差图中的2-D点重新投影到摄像机1的整流摄像机坐标系中的3-D点。

校正相机一投影矩阵,返回为3 × 4矩阵。使用camMatrix1而且camMatrix2将相机坐标系中的3-D世界点投影到图像平面j - 1而且J2,分别。

使用camMatrix1将校正后的相机一坐标系中的三维世界点投影到的像平面上j - 1

数据类型:|

摄像机二整流投影矩阵,返回为3 × 4矩阵。使用camMatrix1而且camMatrix2将相机坐标系中的3-D世界点投影到图像平面j - 1而且J2,分别。

使用camMatrix2将校正后的摄像机两个坐标系中的三维世界点投影到的像平面上J2

数据类型:|

摄像机一旋转矩阵与摄像机一整流投影相关,返回为3 × 3矩阵。的R1旋转矩阵将未整流摄像机坐标系中的3-D点与整流摄像机坐标系中的点关联起来。

数据类型:|

摄像机二的旋转矩阵对应摄像机一的整流投影,返回为3 × 3矩阵。的R2旋转矩阵将未整流摄像机二坐标系中的三维点与整流摄像机二坐标系中的点联系起来。

数据类型:|

提示

  • 计算机视觉工具箱™校正算法要求每个图像的偶极位于图像之外。如果视极位于图像内,您可以首先按照Marc Pollefeys、Reinhard Koch和Luc Van Gool提出的校正方法将图像转换为极坐标[2]

参考文献

G.布拉德斯基和A.凯勒,学习OpenCV:使用OpenCV库的计算机视觉.加利福尼亚州塞瓦斯托波尔:奥莱利,2008年。

扩展功能

版本历史

在R2014a中引入

全部展开