imfindcircles
发现使用圆形圈哈夫变换
语法
描述
(
发现圆的半径范围规定中心
,半径
)= imfindcircles (一个
,radiusRange
)radiusRange
。额外的输出参数,半径
,包含估计对应于每个圆中心的半径中心
。
例子
输入参数
输出参数
提示
算法
imfindcircles
使用一个圆形霍夫变换(十)算法为基础发现圆图像。使用这种方法由于其鲁棒性的噪声、遮挡和不同的照明。
指定的本不是一个严格的算法,而有许多不同的方法,可以实施。然而,有三个重要的步骤是常见的所有方法。
累加器数组的计算
前景像素的高梯度被指定为候选像素和允许在累加器数组“选票”。在古典CHT实现中,候选像素周围的投票模式,形成一个完整的圆的半径固定。图1显示了一个示例的一个候选像素躺在一个实际的圆(实心圆圈)和古典CHT投票模式候选像素(虚线圆圈)。
古典CHT投票模式
中心估计
候选人的选票像素属于图像圆趋向于沉在累加器数组本对应的圆的中心。因此,圆中心估计通过检测蓄电池阵列的峰值。图1 b显示了一个示例的候选像素(实心点)躺在一个实际的圆(实心圆),和他们的投票模式(虚线圆圈),同时在实际圆的中心。
半径估计
如果相同的累加器数组用于一个以上的半径值,一般是在本算法,发现圆的半径必须估计作为一个单独的步骤。
imfindcircles
提供了两种算法寻找圈图片:phase-coding(默认)和两级。分享一些常见的计算步骤,但每个人都有自己独特的方面。
两种算法的共同计算特性如下:
使用二维累加器数组
经典霍夫变换需要一个三维数组用于存储多个半径的选票,导致存储需求大,处理时间长。phase-coding和两阶段方法解决这个问题通过使用一个二维累加器数组的半径。虽然这种方法需要一个附加的步骤半径估计,整个计算负载通常是低,尤其是当工作在一个大的半径范围。这是一个广泛采用的实践在现代CHT实现。
使用边缘像素
总体内存需求和速度强烈由候选像素的数量。限制他们的数量,输入图像阈值的梯度大小,因此只有像素的高梯度都包含在计算选票。
使用边缘方向信息
性能优化也是通过限制垃圾箱用于候选像素的数量。这是通过使用本地可用的边缘信息只允许在一个有限的投票间隔沿梯度方向(图2),投票区间的宽度之间的点c最小值和c马克斯在图中,是由定义的半径范围r最小值和r马克斯。
投票方式:多个半径,沿梯度方向
r最小值 | 最低搜索半径 |
r马克斯 | 最大的搜索半径 |
r实际 | 圆的半径,候选像素属于 |
c最小值 | 圆心的半径r最小值 |
c马克斯 | 圆心的半径r马克斯 |
c实际 | 圆心的半径r实际 |
两本函数使用的方法imfindcircles
从根本上不同的方法计算了圆半径。
引用
[1]T。J阿瑟顿,D.J. Kerbyson。“大小不变的圆检测。”图像和视觉计算。11号卷17日,1999年,页795 - 803。
[2]H。K袁,.。Princen、j·伊林沃思和j .难应付的。“圆的霍夫变换方法比较研究发现。”图像和视觉计算。1号卷8日,1990年,页71 - 77。
[3]E.R.戴维斯机器视觉:理论、算法可行性。第十章。第3版。摩根考夫曼出版社,2005。