主要内容

detectCheckerboardPoints

检测图像中的棋盘格图案

描述

例子

imagePointsboardSize) = detectCheckerboardPoints (在二维真彩色或灰度图像中检测大小大于4×4正方形的黑白棋盘。该函数返回棋盘的检测点和尺寸。

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

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

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

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

imagePointsboardSizepairsUsed) = detectCheckerboardPoints (___名称,值使用一个或多个指定的附加选项名称,值对参数。未指定的属性具有默认值。

例子

全部折叠

创建一个图像数据存储包含来自GoPro相机的校准图像。

imd = imageDatastore (fullfile (toolboxdir (“愿景”),“visiondata”“校准”“gopro”));

检测校准模式使用“高失真”选择,这是很好的使用鱼眼镜头图像。

[imagePoints,boardSize,imagesUsed]=检测到的棋盘点(imds.Files(1:4),“高失真”,真正的);

显示检测到的点。

i = 1:4%读取图像I = readimage(imds, I);在被检测的点位置插入标记I = insertMarker(I, imagePoints(:,:, I)),“哦”“颜色”“红色”“尺寸”, 10);%显示图像次要情节(2,2,我);imshow(我);结束

图中包含4个轴。Axes 1包含一个image类型的对象。Axes 2包含一个image类型的对象。Axes 3包含一个image类型的对象。Axes 4包含一个image类型的对象。

加载包含棋盘格图案的图像。

imageFileName = fullfile (toolboxdir (“愿景”),“visiondata”“校准”“摄像头”“image4.tif”);I = imread (imageFileName);

检测棋盘点数。

[imagePoints, boardSize] = detectCheckerboardPoints(我);

显示检测到的点。

J = insertText(我imagePoints 1:尺寸(imagePoints, 1));J = insertMarker (imagePoints,“哦”“颜色”“红色”“尺寸”,5); imshow(J);头衔(斯普林特)('检测到%d x %d Checkerboard'boardSize));

图中包含一个坐标轴。标题为“检测到一个7 x 10棋盘”的轴包含一个类型为image的对象。

创建一个单元格数组的文件名校准图像。

i = 1:5 imageFileName = sprintf(“图像% d.tif”,我);imageFileNames{我}= fullfile (matlabroot,“工具箱”“愿景”...“visiondata”“校准”“摄像头”, imageFileName);结束

检测图像中的校准模式。

[imagePoints, boardSize imagesUsed] = detectCheckerboardPoints (imageFileNames,“部分检测”,假);

显示检测到的点。

imageFileNames = imageFileNames (imagesUsed);i = 1:numel(imageFileNames) i = imread(imageFileNames{i});次要情节(2,2,我);imshow(我);持有;情节(imagePoints(:, 1,我),imagePoints(:, 2,我)“罗”);结束

阅读立体图像。

numImages = 4;images1 = cell(1, numImages);images2 = cell(1, numImages);i = 1:numImages images1{i} = fullfile(matlabroot,“工具箱”“愿景”...“visiondata”“校准”“立体声”“左”,斯普林特(“左% 02 d.png”,我));images2{我}= fullfile (matlabroot,“工具箱”“愿景”...“visiondata”“校准”“立体声”“对”,斯普林特(“对% 02 d.png“,我));结束

检测图像中的棋盘格。

[imagePoints, boardSize pairsUsed] =...检测电路板点(图像1、图像2);

显示分images1

images1 = images1 (pairsUsed);图;i = 1:numel(images1) i = imread(images1{i});次要情节(2,2,我);imshow(我);持有;情节(imagePoints(:, 1,我,1),imagePoints(:, 2,我,1),“罗”);结束注释(“文本框”,[0 0.9 1 0.1],“字符串”“相机1”...“EdgeColor”“没有”“HorizontalAlignment”“中心”

图形包含4个轴。轴1包含2个图像类型的对象,线。轴2包含2个图像类型的对象,线。轴3包含2个图像类型的对象,线。轴4包含2个图像类型的对象,线。

显示分images2

images2 = images2 (pairsUsed);图;i = 1:numel(images2) i = imread(images2{i});次要情节(2,2,我);imshow(我);持有;情节(imagePoints(:, 1,我,2),imagePoints(:, 2,我,2),“罗”);结束注释(“文本框”,[0 0.9 1 0.1],“字符串”“照相机2”...“EdgeColor”“没有”“HorizontalAlignment”“中心”

图形包含4个轴。轴1包含2个图像类型的对象,线。轴2包含2个图像类型的对象,线。轴3包含2个图像类型的对象,线。轴4包含2个图像类型的对象,线。

输入参数

全部折叠

输入图像,指定为-借-N3真彩或-借-N二维灰度。输入图像必须是实数和非稀疏的。该功能可以检测最小尺寸为4 × 4正方形的棋盘。

数据类型:|双重的|int16|uint8|uint16|逻辑

图像文件名,指定为N-element cell数组N文件的名字。

相机1图像的文件名,指定为N-element cell数组N文件的名字。该数组中包含的图像的顺序必须与imageFileNames2,形成立体对。

相机2图像的文件名,指定为N-element cell数组N文件的名字。该数组中包含的图像的顺序必须与imageFileNames1,形成立体对。

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

H表示图像高度。
W表示图像宽度。
B表示颜色通道。值为1表示灰度图像,取值为3.表示真彩色图像。
F表示图像帧数。

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

H表示图像高度。
W表示图像宽度。
B表示颜色通道。值为1表示灰度图像,取值为3.表示真彩色图像。
F表示图像帧数。

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

H表示图像高度。
W表示图像宽度。
B表示颜色通道。值为1表示灰度图像,取值为3.表示真彩色图像。
F表示图像帧数。

名称-值对的观点

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

例子:“MinCornerMetric”, '0.15

最小角度量阈值,指定为非负标量。当图像有噪声或高纹理时,增加该值以减少虚假角点检测的数量。当你设置“高失真”财产该函数将默认值设置为0.15.当你设定“高失真”财产真正的该函数将默认值设置为0.12.减小该值会导致角点检测的增加。

高失真,指定为真正的.设置“高失真”真正的当图像包含高程度的失真时,这是一个典型的宽视场相机,如鱼眼相机。集“高失真”当图像不包含高水平失真时。设置“高失真”真正的可以增加对图像失真的弹性,但降低了处理速度。

部分检测,指定为真正的.设置“部分检测”真正的返回部分检测到的棋盘。该函数用[填充缺失的关键点检测南南)坐标。集“部分检测”丢弃部分检测到的棋盘。对于立体图像对,此属性被忽略。

输出参数

全部折叠

检测到的棋盘角坐标,返回为一个图像的- × 2矩阵。对于多个图像,点作为2 -图像数量数组,对于立体图像对,函数返回点作为2 -对数量-借-数量的摄像头数组中。

对于立体声对,imagePoints(:,:,:,1)为第一组图像中的点,和imagePoints(:,:,:,2)为第二组图像中的点。输出包含的数量(xy)坐标。每个坐标代表在棋盘上检测到正方形角的点。函数返回的点数取决于的值boardSize,表示检测到的方块数。该函数以亚像素精度检测点。

该函数计算点数,,如下所示:

刺激boardSize1)。

如果检测不到棋盘格:
imagePoints[]
boardSize(0,0)

当您指定imageFileNames输入时,函数可以返回imagePoints作为2 -N数组中。在这个数组,N表示检测到棋盘格的图像的数量。如果检测不到棋盘格,则函数集imagePoints[]

仅适用于单相机图像:

  • 如果无法检测到完整的棋盘,该函数将返回一个部分检测到的棋盘,其中包含[南南]随着x-y缺少角的坐标imagePoints.属性可以修改此默认行为“部分检测”名称值参数。

  • 如果可能的话,该功能对部分检测的棋盘进行定位,使原点的位置和角落的安排与完全可见的棋盘一致。如果该函数不能在任何输入图像中检测到完整的棋盘格,则使用检测到的最大棋盘格作为参考棋盘格。

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

如果检测不到棋盘格,则函数集boardSize(0,0)

模式检测标志,返回为N逻辑向量N逻辑。该函数输出与输入图像相同数量的逻辑。A真正的值表示在相应图像中检测到该图案。A值表示函数未检测到模式。

立体声对模式检测标志,返回为N逻辑向量N逻辑。该函数输出与输入图像相同数量的逻辑。A真正的值表示在对应的立体图像对中检测到模式。一个值表示函数不检测模式。

对于立体图像对模式检测,棋盘格需要在两幅图像中完全可见才能被检测到。与单摄像机校准不同,立体图像对拒绝部分检测到的棋盘格。

工具书类

[1]盖格,A., F.穆斯曼,O.卡尔,B.舒斯特。"使用单镜头自动校准相机和距离传感器"国际机器人与自动化会议(ICRA)2012年5月,美国圣保罗。

扩展功能

介绍了R2014a