主要内容

detectCheckerboardPoints

在图像检测棋盘模式

描述

例子

(imagePoints,boardSize)= detectCheckerboardPoints ()检测到一个黑白棋盘的大小大于4×4块在二维真彩或灰度图像。函数返回检测到的点和维度的棋盘。

(imagePoints,boardSize,imagesUsed)= detectCheckerboardPoints (imageFileNames)检测到一个棋盘模式的一组输入图像,作为数组提供文件名。

(imagePoints,boardSize,imagesUsed)= detectCheckerboardPoints (图片)检测到一个棋盘模式的一组输入图像,提供一系列的灰度或真彩图像。

(imagePoints,boardSize,pairsUsed)= detectCheckerboardPoints (imageFileNames1,imageFileNames2)检测到一个棋盘模式立体对图像,作为细胞阵列提供的文件名称。

(imagePoints,boardSize,pairsUsed)= detectCheckerboardPoints (images1,images2)在立体对图像,检测到一个棋盘模式作为数组提供的灰度或真彩图像。

(imagePoints,boardSize,pairsUsed)= detectCheckerboardPoints (___,名称,值)使用指定的一个或多个额外的选项名称,值对参数。未指定的属性有默认值。

例子

全部折叠

创建一个imageDatastore包含校准还装有摄像头的图片。

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

使用的检测校准模式“HighDistortion”选项,该选项是好的使用鱼眼镜头的图像。

[imagePoints, boardSize imagesUsed] = detectCheckerboardPoints (imds.Files (1:4),“HighDistortion”,真正的);

显示检测到的点。

i = 1:4%读取图像I = readimage (imd);%插入标记探测点的位置我= insertMarker(我,imagePoints(:,:我),“o”,“颜色”,“红色”,“大小”10);%显示图象次要情节(2,2,我);imshow(我);结束

图包含4轴对象。坐标轴对象1包含一个类型的对象的形象。坐标轴对象2包含一个类型的对象的形象。坐标轴对象3包含一个类型的对象的形象。坐标轴对象4包含一个类型的对象的形象。

加载图像包含棋盘模式。

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

检测到棋盘点。

[imagePoints, boardSize] = detectCheckerboardPoints(我);

显示检测到的点。

J = insertText(我imagePoints 1:尺寸(imagePoints, 1));J = insertMarker (imagePoints,“o”,“颜色”,“红色”,“大小”5);imshow (J);标题(sprintf (“发现一个% d x % d棋盘”boardSize));

图包含一个坐标轴对象。坐标轴对象标题发现7 x 10棋盘包含一个类型的对象的形象。

创建一个单元阵列校正图像的文件名。

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

在图像检测校准模式。

[imagePoints, boardSize imagesUsed] = detectCheckerboardPoints (imageFileNames,“PartialDetections”、假);

显示检测到的点。

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

在立体图像。

numImages = 4;images1 =细胞(1、numImages);images2 =细胞(1、numImages);i = 1: numImages images1{我}= fullfile (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:元素个数(images1)我= imread (images1{我});次要情节(2,2,我);imshow(我);持有;情节(imagePoints(:, 1,我,1),imagePoints(:, 2,我,1),“罗”);结束注释(“文本框”(0 0.1 0.9 - 1),“字符串”,“相机1”,“EdgeColor”,“没有”,“HorizontalAlignment”,“中心”)

图包含4轴对象。坐标轴对象1包含2图像类型的对象,线。一个或多个行显示的值只使用标记轴对象2包含对象类型的形象,线。一个或多个行显示它的值只使用标记轴对象3包含2图像类型的对象,线。一个或多个行显示它的值只使用标记轴对象4包含2图像类型的对象,线。一个或多个行显示的值只使用标记

显示分images2

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

图包含4轴对象。坐标轴对象1包含2图像类型的对象,线。一个或多个行显示的值只使用标记轴对象2包含对象类型的形象,线。一个或多个行显示它的值只使用标记轴对象3包含2图像类型的对象,线。一个或多个行显示它的值只使用标记轴对象4包含2图像类型的对象,线。一个或多个行显示的值只使用标记

输入参数

全部折叠

输入图像,指定为一个——- - - - - -N3真彩或——- - - - - -N二维灰度。输入图像必须是真实和nonsparse。函数可以检测4×4方格的棋盘格的最小大小。

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

图像文件的名字,作为一个指定N元胞数组的N文件的名字。

文件名相机1图片,作为一个指定N元胞数组的N文件的名字。这个数组中包含的图片必须在同一订单中包含的图片imageFileNames2立体像对,形成。

为照相机2图片文件名称,指定为一个N元胞数组的N文件的名字。这个数组中包含的图片必须在同一订单中包含的图片imageFileNames1立体像对,形成。

图片,作为一个指定H——- - - - - -W——- - - - - -B——- - - - - -F数组包含一组灰度或真彩图像。输入尺寸是:

H代表图像的高度。
W代表图像的宽度。
B代表颜色通道。的值1表示一个灰度图像,的值3显示真彩图像。
F代表图像帧的数量。

立体图像从相机1,指定为一个H——- - - - - -W——- - - - - -B——- - - - - -F数组包含一组灰度或真彩图像。输入尺寸是:

H代表图像的高度。
W代表图像的宽度。
B代表颜色通道。的值1表示一个灰度图像,的值3显示真彩图像。
F代表图像帧的数量。

立体相机的图像2,指定为一个H——- - - - - -W——- - - - - -B——- - - - - -F数组包含一组灰度或真彩图像。输入尺寸是:

H代表图像的高度。
W代表图像的宽度。
B代表颜色通道。的值1表示一个灰度图像,的值3显示真彩图像。
F代表图像帧的数量。

名称-值参数

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

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

例子:“MinCornerMetric””,0.15

最小的角落度量阈值,指定为负的标量。当图像噪声或高度变形,增加这个值减少错误检测。当你设置“HighDistortion”财产设置默认值的函数0.15。当你设置“HighDistortion”财产真正的设置默认值的函数0.12。减少价值角落里增加了检测结果。

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

部分检测,指定为真正的。集“PartialDetections”真正的返回部分检测到棋盘格。函数填充缺失的关键点检测与南南)坐标。集“PartialDetections”丢弃部分检测到棋盘格。这个属性将被忽略的立体图像对。

输出参数

全部折叠

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

立体像对的,imagePoints(:::1)从第一组图像的点,和imagePoints(:::2)第二组图片的点。输出包含的数量(xy)坐标。每个坐标代表一个点在广场角落发现在棋盘上。点的数量函数返回的值取决于boardSize,这表明广场发现的数量。探测点亚像素精度的函数。

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

=刺激(boardSize1)。

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

当你指定imageFileNames输入,函数可以返回imagePoints作为一个2 -N数组中。在这个数组,N代表了图像中检测到一个棋盘。如果一个棋盘不能被探测到,函数集imagePoints[]

仅供单摄像机图像:

  • 如果无法检测到完整的棋盘,函数返回一个部分检测到棋盘与(南南]随着x- - - - - -y坐标为失踪的角落imagePoints。这个默认行为可以修改使用“PartialDetections”名称-值参数。

  • 在可能的情况下,函数定义部分检测到棋盘,原点的位置和角落的安排符合完全可见的棋盘。如果函数不能检测到一个完整的棋盘的输入图像,最大的发现棋盘棋盘用作参考。

棋盘维度,作为2-element[返回高度,宽度)向量。棋盘的尺寸表达的方格的数量。

如果一个棋盘不能被探测到,函数集boardSize(0,0)

模式检测国旗,作为一个返回N1逻辑向量N逻辑值。函数输出相同数量的逻辑值和输入图像。一个真正的值表示该模式中检测出相应的图像。一个值表示该函数没有检测到一个模式。

立体模式检测国旗,作为一个返回N1逻辑向量N逻辑值。函数输出相同数量的逻辑值和输入图像。一个真正的值表示模式检测到相应的立体图像对。一个值表示该函数不检测模式。

立体模式检测,棋盘都需要完全可见图像被探测到。与单摄像机标定,部分检测到棋盘格被拒绝的立体图像对。

引用

[1]盖革,。,F。米oosmann, O. Car, and B. Schuster. "Automatic Camera and Range Sensor Calibration using a Single Shot,"机器人与自动化国际会议上)举行(“国际机器人与自动化会议”美国圣保罗,2012年5月。

扩展功能

版本历史

介绍了R2014a