主要内容

imfindcircles.

使用圆形霍夫变换求圆

描述

中心= imfindcircles(一个半径找到图像中的圆一个谁的半径近似等于半径.输出,中心,是一个两列矩阵,其中包含x, y)图像中圆心的坐标。

中心radii.) = imfindcircles (一个Radiusrange.在指定的范围内找到带半径的圆圈Radiusrange..额外的输出参数,radii.,包含每个圆心所对应的估计半径中心

例子

中心radii.公制) = imfindcircles (一个Radiusrange.也返回一个列向量,公制,包含每个圆的累加器数组峰值的大小(按降序排列)。的行中心radii.对应于行公制

例子

___) = imfindcircles (___名称,值指定一个或多个附加选项名称,值Pair参数,使用前面的任何语法。

例子

全部折叠

此示例显示如何在图像中查找所有圆圈,以及如何保留和显示最强的圆圈。

将灰度图像读入工作区并显示它。

a = imread(“coins.png”);imshow (A)

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

找到半径的所有圆圈r范围内的像素[15,30]。

[centers, radii, metric] = imfindcircles(A,[15 30]);

根据度量值保留五个最强的圆。

Centersstrong5 =中心(1:5,:);Radiistrong5 =半径(1:5);MetricStrong5 =度量(1:5);

在原始图像上绘制五个最强的圆周边。

Viscircles(Centersstrong5,Radiistrong5,“EdgeColor”'B');

图中包含一个轴对象。轴对象包含三个对象的类型线,图像。

将图像读入工作区并显示它。

a = imread(“circlesBrightDark.png”);imshow (A)

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

定义半径范围。

Rmin = 30;征求= 65;

找出图像中半径范围内所有明亮的圆圈。

[centersBright, radiiBright] = imfindcircles(A,[Rmin Rmax],“ObjectPolarity”'明亮的');

在半径范围内找到图像中的所有黑圆圈。

[centersDark, radiiDark] = imfindcircles(A,[Rmin Rmax],“ObjectPolarity”“黑暗”);

在亮圈的边缘画蓝线。

viscircles (centersBright radiiBright,“颜色”'B');

图中包含一个轴对象。轴对象包含三个对象的类型线,图像。

在黑眼圈的边缘绘制红色虚线。

viscircles (centersDark radiiDark,“线型”“——”);

图中包含一个轴对象。轴对象包含5个类型线,图像的对象。

输入参数

全部折叠

输入图像是检测循环对象的图像,指定为灰度,TrueColor或二进制图像。

数据类型:单身的||int16|uint8|uint16|逻辑

圆半径,或要检测的圆形对象的近似半径,指定为正数。

数据类型:单身的||INT8.|int16|int32|int64|uint8|uint16|uint32|UINT64

要检测的圆形对象的RADII范围,指定为表单的正整数的2元素矢量[rmin做),在那里rmin小于征求

数据类型:单身的||INT8.|int16|int32|int64|uint8|uint16|uint32|UINT64

名称-值参数

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

例子:“ObjectPolarity”、“光明”指定黑暗背景上明亮的圆形物体。

对象极性,指定为逗号分隔的配对组成“ObjectPolarity”以及表中的一个值。

'明亮的' 圆形物体比背景更亮。
“黑暗” 圆形物体比背景更暗。

计算方法是用来计算累加器数组的技术,指定累加器数组由逗号分隔对组成'方法'以及表中的一个值。

“PhaseCode” Atherton和Kerbyson的[1]相位编码方法。
“二级” 该方法用于两阶段圆霍夫变换[2][3]

例子:“方法”、“PhaseCode”指定阿瑟顿和克尔拜森的相位编码方法。

灵敏度因子为圆形霍夫变换累加器阵列的灵敏度,指定为逗号分隔对组成'灵敏度'和范围内的数字[0,1]。随着敏感性因素,imfindcircles.检测更多圆形物体,包括微弱和部分模糊的圆形。较高的灵敏度值也会增加错误检测的风险。

边缘梯度阈值设置梯度阈值,用于确定图像中的边缘像素,指定为逗号分隔对组成“EdgeThreshold”和范围内的数字[0,1]。指定0将阈值设置为零梯度幅度。指定1将阈值设置为最大梯度幅度。imfindcircles.当你将阈值设置为一个较低的值时,可以检测到更多的圆形物体(有弱边和强边)。当您增加阈值时,它检测到的边缘较弱的圆更少。默认情况下,imfindcircles.使用该函数自动选择边缘梯度阈值塔布林

例子:“EdgeThreshold”,0.5

输出参数

全部折叠

圈中心的坐标,作为一个返回P——- - - - - -2矩阵包含x-圆心在第一列中的坐标和y-第二列的坐标。行数,P,是检测到的圈子数。中心是根据圆的强度排序的,从强到弱。

数据类型:

圆心的估计半径,返回为列向量。处的半径值半径(j)对应于圆心为的圆中心(j,:)

数据类型:

圆形优势是圈子中心的相对优势,作为向量返回。价值度量(j)对应于有半径的圆半径(j)集中在中心(j,:)

数据类型:

提示

  • 准确性imfindcircles.是有限时的价值半径(或rmin)小于或等于5。

  • 如果使用(默认值),RADIUS估计步骤通常会更快“PhaseCode”方法,而不是“二级”

  • 两个计算方法,“PhaseCode”“二级”它们探测同心圆的能力有限。同心圆的结果会因输入图像的不同而不同。

  • imfindcircles.没有找到圆心在图像域外的圆。

  • imfindcircles.对二值(逻辑)图像进行预处理以提高结果的准确性。它使用该功能将真彩色图像转换为灰度图像RGB2GRAY.在处理之前。

算法

imfindcircles.使用基于圆形霍夫变换(CHT)的算法在图像中寻找圆。这种方法之所以被使用,是因为它在噪声、遮挡和变化光照存在时具有鲁棒性。

CHT不是一个严格指定的算法,而是有许多不同的方法可以采取在它的实现。然而,总的来说,有三个共同的基本步骤。

  1. 累加器数组的计算

    高梯度的前景像素被指定为候选像素,并且被允许在累加器阵列中投入“投票”。在经典的CHT实现中,候选像素在它们周围的模式中投票,它们形成固定半径的完整圆圈。图1A示出了位于实际圆(实心圆圈)和候选像素的经典CHT投票模式(虚线)的候选像素的示例。

    古典CHT投票模式

  2. 中心估计

    属于图像圆的候选像素的选票倾向于在圆中心对应的累加器数组bin处累积。因此,通过检测累加器阵列的峰值来估计圆心。图1b显示了一个示例,候选像素(实点)位于一个实际的圆(实圆)上,它们的投票模式(虚线圆)在实际圆的中心重合。

  3. 半径估计

    如果相同的累加器阵列用于多于一个半径值,则通常在CHT算法中常见,必须估计检测到的圆的半径作为单独的步骤。

imfindcircles.提供两个用于在图像中查找圈子的两种算法:相位编码(默认)和两阶段。两者都分享了一些常见的计算步骤,但每个都有自己的独特方面。

两种算法的共同计算特征如下:

  • 使用二维累加器阵列

    经典的Hough变换需要一个三维阵列来存储多个半径的选票,这导致了大量的存储需求和较长的处理时间。相位编码和两级方法都通过对所有半径使用一个二维累加器阵列来解决这个问题。尽管这种方法需要额外的半径估计步骤,但总体计算负载通常较低,特别是在大半径范围内工作时。这是现代CHT实现中广泛采用的实践。

  • 使用边缘像素

    总体内存需求和速度很大程度上取决于候选像素的数量。为了限制它们的数量,将输入图像的梯度大小设置为阈值,以便在计票时只包含梯度高的像素。

  • 使用边缘方向信息

    另一种优化性能的方法是限制候选像素的可用容器数量。这是通过利用局部可用的边缘信息,只允许沿梯度方向的有限区间内投票来实现的(图2)。

    投票方式:多半径,沿梯度方向

r 最小搜索半径
r最大限度 最大的搜索半径
r实际 候选像素所在圆的半径
c 半径为r的圆心
c最大限度 半径为r的圆心最大限度
c实际 半径为r的圆心实际

两种方法均采用函数法imfindcircles.在计算圆半径的方式上有根本的不同。

  • 两阶段

    利用估计的圆心和图像信息明确估计半径。该技术基于计算径向直方图[2][3]

  • Phase-Coding

    相位编码的关键思想[1]是在累加器数组中使用复数值,将半径信息编码在数组项的相位中。边缘像素投出的选票不仅包含关于可能的中心位置的信息,还包含与中心位置相关联的圆的半径的信息。与必须使用径向直方图明确估计半径的两阶段方法不同,在相位编码中,半径可以通过简单地从估计的累加器阵列中心位置解码相位信息来估计。

兼容性考虑因素

全部展开

行为在R2019a中改变

参考文献

t.j.阿瑟顿,D.J.克尔比森。"大小不变圆检测"图像和视觉计算.第17卷,第11号,1999,第795-803页。

袁国强,. j。普林斯,J.伊林沃思和J.基特勒。《霍夫变换求圆方法的比较研究》。图像和视觉计算.第8卷第1期,1990年,71-77页。

[3] e.r.戴维斯,机器视觉:理论,算法,实用性.第10章第3版。摩根Kauffman出版商,2005年。

扩展功能

在R2012A介绍