imfindcircles
发现使用圆形圈哈夫变换
语法
中心= imfindcircles(半径)
(中心、半径)= imfindcircles (A, radiusRange)
(中心、半径、指标)= imfindcircles (A, radiusRange)
(中心、半径、指标)= imfindcircles (___、名称、值)
描述
(
发现圆的半径范围规定中心
,半径
)= imfindcircles (一个
,radiusRange
)radiusRange
。额外的输出参数,半径
,包含估计对应于每个圆中心的半径中心
。
例子
输入参数
输出参数
提示
指定一个相对较小的
radiusRange
为了更好的精度。一个好的经验法则是选择radiusRange
这样征求< 3 * rmin
和(rmax-rmin) < 100
。的准确性
imfindcircles
是有限的价值半径
(或rmin
)是小于或等于5。半径估算步骤通常更快如果你使用(默认)
“PhaseCode”
方法,而不是“二级”
。两种计算方法,
“PhaseCode”
和“二级”
有限的能力来检测同心圆。同心圆的结果取决于输入图像。imfindcircles
没有发现圈子中心域以外的形象。imfindcircles
二进制(逻辑)图像进行预处理来提高结果的准确性。它转换真彩图像灰度使用函数rgb2gray
在处理之前。
算法
函数imfindcircles
使用一个圆形霍夫变换(十)算法为基础发现圆图像。使用这种方法由于其鲁棒性的噪声、遮挡和不同的照明。
指定的本不是一个严格的算法,而有许多不同的方法,可以实施。然而,总的来说,有三个基本的步骤是很常见的。
累加器数组计算。
前景像素的高梯度被指定为候选像素和允许在累加器数组“选票”。在古典CHT实现中,候选像素周围的投票模式,形成一个完整的圆的半径固定。图1显示了一个示例的一个候选像素躺在一个实际的圆(实心圆圈)和古典CHT投票模式候选像素(虚线圆圈)。
图1:古典、投票模式
中心估计
候选人的选票像素属于图像圆趋向于沉在累加器数组本对应的圆的中心。因此,圆中心估计通过检测蓄电池阵列的峰值。图1 b显示了一个示例的候选像素(实心点)躺在一个实际的圆(实心圆),和他们的投票模式(虚线圆圈),同时在实际圆的中心。
半径估计
如果相同的累加器数组用于一个以上的半径值,一般是在本算法,发现圆的半径必须估计作为一个单独的步骤。
函数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,