主要内容

rectifyStereoImages

矫正一对立体图像

描述

例子

j - 1J2) = rectifyStereoImages (I1I2stereoParams的未扭曲和纠正版本I1I2输入图像使用立体参数存储在stereoParams对象。

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

j - 1J2) = rectifyStereoImages (I1I2tform1tform2退还I1I2通过应用投影变换输入图像tform1tform2.的返回投影变换estimateUncalibratedRectification函数。

例子

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

例子

j - 1J2) = rectifyStereoImages (___名称,值使用一个或多个指定的附加选项名称,值对参数。

例子

全部折叠

指定包含用于校准的棋盘格的图像。

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

检测棋盘格。

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

指定棋盘关键点的世界坐标。

squareSizeInMillimeters = 108;worldPoints = generateCheckerboardPoints (boardSize squareSizeInMillimeters);

阅读图片。

I1 = readimage (leftImages, 1);I2 = readimage (rightImages, 1);图象尺寸= [(I1, 1),大小(I1, 2)];

校准立体摄像系统。

stereoParams = estimateCameraParameters (imagePoints worldPoints,...“图象尺寸”、图象尺寸);

使用'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”“有效”);

显示“有效”输出视图的结果。

图;imshow (stereoAnaglyph (J1_valid J2_valid));

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

输入参数

全部折叠

输入图像对应于摄像头1,指定为——- - - - - -N- × 3的真彩色图像或——- - - - - -N二维灰度阵列。输入的图像I1I2也必须是实的,有限的,非稀疏的。输入图像必须是相同的类。

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

输入图像对应于摄像头2,指定为——- - - - - -N- × 3的真彩色图像或——- - - - - -N二维灰度阵列。输入的图像I1I2必须是实的,有限的,非稀疏的。输入图像也必须是相同的类。

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

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

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

图1的投影变换,指定为返回的3 × 3矩阵estimateUncalibratedRectification函数或projective2d对象。

图2的投影变换,指定为返回的3 × 3矩阵estimateUncalibratedRectification函数或projective2d对象。

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

名称-值参数

指定可选的逗号分隔的对名称,值参数。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:“OutputView”“有效”设置“OutputView”财产“有效”

校正图像的大小,指定为逗号分隔对,由'OutputView”,要么“全部”“有效”.当设置为时“全部”,校正后的图像包括原始图像中的所有像素。当您将此值设置为“有效”,输出图像裁剪为包含有效像素的最大公共矩形的大小。

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

输出像素填充值,指定为逗号分隔对,由'FillValues'和一个或多个标量值数组。当输入图像中对应的反变换位置完全在输入图像边界之外时,对输出像素使用填充值。如果I1I2是二维灰度图像,那么你必须设置FillValues'变成一个标量。如果I1I2是真彩色图像,然后你可以设置FillValues'转换为标量或RGB值的3元素向量。

输出参数

全部折叠

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

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

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

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

提示

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

参考文献

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

扩展功能

介绍了R2014a