detectCheckerboardPoints

检测棋盘图案的图像

描述

[imagePointsboardSize) = detectCheckerboardPoints (一世检测一个大小大于4乘4方块的黑白棋盘格在一个2-D真彩色或灰度图像。函数返回检测到的点和棋盘的尺寸。

[imagePointsboardSizeimagesUsed) = detectCheckerboardPoints (imageFileNames检测以文件名数组形式提供的一组输入图像中的棋盘格模式。

[imagePointsboardSizeimagesUsed) = detectCheckerboardPoints (图片检测以灰度或真彩色图像数组提供的一组输入图像中的棋盘图案。

[imagePointsboardSizepairsUsed) = detectCheckerboardPoints (imageFileNames1imageFileNames2检测立体图像对,作为文件名的单元阵列提供的棋盘图案。

[imagePointsboardSizepairsUsed) = detectCheckerboardPoints (images1images2检测以灰度或真彩色图像阵列提供的立体图像对中的棋盘图案。

[imagePointsboardSizepairsUsed) = detectCheckerboardPoints (___, 'MinCornerMetric',0.15)设置指定为非负标量的角度量阈值。当图像有噪声或高度纹理化时,增加这个值以减少假角的数量。

例子

全部折叠

创建校准图像的文件名的单元阵列。

对于I = 1:5映像文件名称=的sprintf('图像%d.tif', 一世);imageFileNames {I} =完整文件(matlabroot,“工具箱”'视力'...'visiondata'“校准”“摄像头”, imageFileName);结束

检测图像中的校准图案。

[imagePoints, boardSize imagesUsed] = detectCheckerboardPoints (imageFileNames);

显示检测到的点。

imageFileNames = imageFileNames(imagesUsed);对于i = 1: imread(imageFileNames{i});次要情节(2,2,我);imshow(我);保持;情节(imagePoints(:,1,i)中,imagePoints(:,2,i)中,'RO');结束

读取立体图像。

numImages = 4;images1 =细胞(1,numImages);images2 =细胞(1,numImages);对于I = 1:numImages images1 {I} =完整文件(matlabroot,“工具箱”'视力'...'visiondata'“校准”“立体”“左”sprintf (“左% 02 d.png”,我));images2{我}= fullfile (matlabroot,“工具箱”'视力'...'visiondata'“校准”“立体”“对”sprintf (“对% 02 d.png“,我));结束

检测图像中的棋盘。

[imagePoints, boardSize pairsUsed] =...detectCheckerboardPoints (images1 images2);

从images1显示点。

images1 = images1(pairsUsed);数字;对于I = 1:numel(images1)I = imread(images1 {I});副区(2,2,i)的;imshow(我);保持;情节(imagePoints(:,1,I,1),imagePoints(:,2,I,1),'RO');结束注解(“文本框”,[0 0.9 1 0.1],'串'“摄像机1”...'EdgeColor''没有''水平对齐''中央'

从images2显示点。

images2 = images2(pairsUsed);数字;对于i = imread(images2{i});次要情节(2,2,我);imshow(我);保持;情节(imagePoints(:,1,I,2),imagePoints(:,2,I,2),'RO');结束注解(“文本框”,[0 0.9 1 0.1],'串'“摄像头2”...'EdgeColor''没有''水平对齐''中央'

输入参数

全部折叠

控件中指定的输入图像中号——- - - - - -ñ-by-3真彩或中号——- - - - - -ñ2-d灰度。输入图像必须是真实的和非稀疏。该函数可以检测棋盘具有4乘4个方格的最小尺寸。

数据类型:||int16|UINT8|uint16|合乎逻辑

图像文件名,指定为ñ-单元格数组ñ文件的名字。

相机1图像的文件名,指定为ñ-单元格数组ñ文件的名字。数组中包含的图像的顺序必须与数组中包含的图像的顺序相同imageFileNames2中,形成立体像对。

文件名摄像机2个图像,指定为ñ-单元格数组ñ文件的名字。数组中包含的图像的顺序必须与数组中包含的图像的顺序相同imageFileNames1中,形成立体像对。

图像,指定为H——- - - - - -w ^——- - - - - -——- - - - - -F包含一组灰度或真彩色图像的数组。输入维度为:

H表示图像高度。
w ^表示图像的宽度。
表示颜色通道。的值1表示灰度图像,值为3表示真彩色图像。
F表示图像帧数。

图像,指定为H——- - - - - -w ^——- - - - - -——- - - - - -F包含一组灰度或真彩色图像的数组。输入维度为:

H表示图像高度。
w ^表示图像的宽度。
表示颜色通道。的值1表示灰度图像,值为3表示真彩色图像。
F表示图像帧数。

图像,指定为H——- - - - - -w ^——- - - - - -——- - - - - -F包含一组灰度或真彩色图像的数组。输入维度为:

H表示图像高度。
w ^表示图像的宽度。
表示颜色通道。的值1表示灰度图像,值为3表示真彩色图像。
F表示图像帧数。

输出参数

全部折叠

检测棋盘角坐标,返回一个中号一个图像的-乘2矩阵。对于多个图像,点被返回为中号-by-2逐数量的图片对于图像的立体对,该函数返回作为an的点中号-by-2逐对数量——- - - - - -摄像机数量阵列。

立体像对的,imagePoints(:,:,:,1)是从所述第一组图像的点,并imagePoints(:,:,:,2)是从第二组的图像的点。输出包含中号[数Xÿ)坐标。每个坐标表示在棋盘上检测到正方形角的一个点。函数返回的点数取决于的值boardSize,表示检测到的方块数。该函数以亚像素精度检测点。

该函数计算点的数量,中号,如下所示:

中号=刺激boardSize1)。

如果棋盘无法检测到:
imagePoints=[]
boardSize=(0,0)

当您指定imageFileNames输入后,函数可以返回imagePoints作为一个中号-by-2逐ñ阵列。在此阵列中ñ表示在其中检测到棋盘的图像的数量。

棋盘尺寸,返回为2元素[高度宽度)向量。棋盘的尺寸是用方块的数目来表示的。

模式检测标志,返回一个ñ的-乘1逻辑向量ñ逻辑值。因为有输入图像的函数输出相同数量的逻辑值的。一种真正的值表示在对应图像中检测到模式。一种值表示函数未检测到模式。

立体声对图案检测标志,返回作为ñ的-乘1逻辑向量ñ逻辑值。因为有输入图像的函数输出相同数量的逻辑值的。一种真正的值表示在对应的立体图像对中检测到该图案。一种值表示该函数不检测的图案。

参考文献

[1]盖革,A.,F. Moosmann,O.汽车,和B.舒斯特。“自动摄像机和范围传感器校准使用单发射击,”国际会议机器人与自动化(ICRA),圣保罗,美国,2012年5月。

扩展功能

介绍了R2014a