文档

imfindcircles

发现使用圆形圈哈夫变换

语法

中心= imfindcircles(半径)
(中心、半径)= imfindcircles (A, radiusRange)
(中心、半径、指标)= imfindcircles (A, radiusRange)
(中心、半径、指标)= imfindcircles (___、名称、值)

描述

中心= imfindcircles (一个,半径)发现圈子里的形象一个约等于半径的吗半径。输出,中心,是一个包含两列矩阵x, y坐标圈中心的形象。

(中心,半径)= imfindcircles (一个,radiusRange)发现圆的半径范围规定radiusRange。额外的输出参数,半径,包含估计对应于每个圆中心的半径中心

例子

(中心,半径,度规)= imfindcircles (一个,radiusRange)还返回一个列向量,度规,包含每个圆的累加器数组的大小山峰(降序)。的行中心半径对应的行度规

例子

(中心,半径,度规)= imfindcircles (___,名称,值)与一个或多个指定附加选项名称,值对参数,使用任何以前的语法。

例子

全部折叠

这个例子展示了如何在一个图像,找到各界以及如何保留和显示最强的圈子。

读一个灰度图像到工作区中显示它。

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

找到所有的圈半径r像素范围内(15、30)。

(中心、半径、指标)= imfindcircles (A,[15] 30日);

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

:centersStrong5 =中心(1:5);radiiStrong5 =半径(1:5);metricStrong5 =度量(1:5);

画五个最强圆周边的原始图像。

viscircles (centersStrong5 radiiStrong5,“EdgeColor”,“b”);

图像读入工作区和显示它。

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

定义半径范围内。

Rmin = 30;征求= 65;

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

[centersBright, radiiBright] = imfindcircles (A, [Rmin做),“ObjectPolarity”,“光明”);

找到所有的黑眼圈图像半径范围内。

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

画蓝线边缘的明亮的圆。

viscircles (centersBright radiiBright,“颜色”,“b”);

画红色虚线边缘的黑眼圈。

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

输入参数

全部折叠

输入图像的图像检测圆形物体,指定为灰度,真彩,或二进制图像。

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

圆半径的近似半径的圆形对象你想检测,指定为一个标量数值类型。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

圆形的半径范围对象你想检测,指定为一个双元素向量,[rmin做),任何数字的整数类型。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

名称-值对的观点

指定可选的逗号分隔条名称,值参数。的名字参数名称和吗价值相应的价值。的名字必须出现在单引号(' ')。您可以指定几个名称和值对参数在任何顺序Name1, Value1,…,的家

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

全部折叠

对象极性显示圆形对象是否比背景亮或暗,指定为逗号分隔组成的“ObjectPolarity”和下表中的值。

“光明” 圆形的对象是比背景。
“黑暗” 圆形的物体比背景更暗。

计算方法是技术用于计算累加器数组,指定为逗号分隔组成的“方法”和下表中的值。

“PhaseCode” 阿瑟顿和Kerbyson[1]相位编码方法。这是默认的。
“二级” 两级循环霍夫变换的方法[2],[3]

例子:“方法”、“PhaseCode”指定了阿瑟顿Kerbyson相位编码方法。

敏感性因素是圆形霍夫变换的敏感性累加器数组,指定为逗号分隔组成的“敏感”和一个负的标量值区间[0,1]。当你增加敏感性因素,imfindcircles检测到更多的圆形物体,包括薄弱,部分被遮挡的圈子。更高的灵敏度值也增加错误检测的风险。

边缘梯度阈值设置梯度阈值,以确定图像中边缘像素,指定为逗号分隔组成的“EdgeThreshold”和一个负的标量值区间[0,1]。指定0向零梯度大小设置阈值。指定1设置阈值为最大梯度大小。imfindcircles检测多个圆形对象(弱和强边缘)当你设置阈值降到一个较低的值。它与弱边缘检测少圈你增加阈值的值。默认情况下,imfindcircles选择边缘梯度阈值自动使用函数graythresh

例子:“EdgeThreshold”, 0.5设置边缘梯度阈值0.5

输出参数

全部折叠

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

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

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

提示

  • 指定一个相对较小的radiusRange为了更好的精度。一个好的经验法则是选择radiusRange这样征求< 3 * rmin(rmax-rmin) < 100

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

  • 半径估算步骤通常更快如果你使用(默认)“PhaseCode”方法,而不是“二级”

  • 两种计算方法,“PhaseCode”“二级”有限的能力来检测同心圆。同心圆的结果取决于输入图像。

  • imfindcircles没有发现圈子中心域以外的形象。

  • imfindcircles二进制(逻辑)图像进行预处理来提高结果的准确性。它转换真彩图像灰度使用函数rgb2gray在处理之前。

算法

函数imfindcircles使用一个圆形霍夫变换(十)算法为基础发现圆图像。使用这种方法由于其鲁棒性的噪声、遮挡和不同的照明。

指定的本不是一个严格的算法,而有许多不同的方法,可以实施。然而,总的来说,有三个基本的步骤是很常见的。

  1. 累加器数组计算。

    前景像素的高梯度被指定为候选像素和允许在累加器数组“选票”。在古典CHT实现中,候选像素周围的投票模式,形成一个完整的圆的半径固定。图1显示了一个示例的一个候选像素躺在一个实际的圆(实心圆圈)和古典CHT投票模式候选像素(虚线圆圈)。

    图1:古典、投票模式

  2. 中心估计

    候选人的选票像素属于图像圆趋向于沉在累加器数组本对应的圆的中心。因此,圆中心估计通过检测蓄电池阵列的峰值。图1 b显示了一个示例的候选像素(实心点)躺在一个实际的圆(实心圆),和他们的投票模式(虚线圆圈),同时在实际圆的中心。

  3. 半径估计

    如果相同的累加器数组用于一个以上的半径值,一般是在本算法,发现圆的半径必须估计作为一个单独的步骤。

函数imfindcircles提供了两种算法寻找圈图片:Phase-Coding(默认)和两级。分享一些常见的计算步骤,但每个人都有自己独特的方面。

共同计算特征的算法是:

  • 使用二维累加器数组:

    经典霍夫变换需要一个三维数组用于存储多个半径的选票,导致存储需求大,处理时间长。Phase-Coding和两阶段方法解决这个问题通过使用一个二维累加器数组的半径。虽然这种方法需要一个附加的步骤半径估计,整个计算负载通常是低,尤其是当工作在大的半径范围。这是一个广泛采用的实践在现代CHT实现。

  • 使用边缘像素

    总体内存需求和强劲速度是由候选像素的数量。限制他们的数量,输入图像阈值的梯度大小,因此只有像素的高梯度都包含在计算选票。

  • 使用边缘方向信息:

    优化性能的另一种方法是限制数量的垃圾箱用于候选像素。这是通过使用本地可用的边缘信息只允许在一个有限的投票间隔沿梯度方向(图2)。

    图2:投票模式:多个半径,沿梯度方向

r最小值 最低搜索半径
r马克斯 最大的搜索半径
r实际 圆的半径,候选像素属于
c最小值 圆心的半径r最小值
c马克斯 圆心的半径r马克斯
c实际 圆心的半径r实际

两本函数使用的方法imfindcircles从根本上不同的方法计算了圆半径。

  • 两级

    半径是明确估计利用估计圆中心以及图像信息。这项技术是基于计算径向直方图;见参考文献2和3的详细解释。

  • Phase-Coding

    在编码阶段的关键理念(见参考[1])是使用复杂的值累加器数组中的半径信息编码阶段的数组条目。选票的边缘像素包含信息不仅是可能的中心位置也对圆的半径与中心位置有关。不同半径的两阶段方法必须显式地使用径向直方图估计,在编码阶段半径可以由简单的解码估计估计的相位信息中心在累加器数组中的位置。

引用

[1]T。J阿瑟顿,D.J. Kerbyson。“大小不变的圆检测。”图像和视觉计算。11号卷17日,1999年,页795 - 803。

[2]H。K袁,.。Princen、j·伊林沃思和j .难应付的。“圆的霍夫变换方法比较研究发现。”Image and Vision Computing. Volume 8, Number 1, 1990, pp. 71–77.

[3]E.R.戴维斯机器视觉:理论、算法、实用性。第十章。第3版。摩根考夫曼出版社,2005,

扩展功能

介绍了R2012a

这个主题有帮助吗?