两个步骤:寻找圆心、对所有可能的圆心做估计
1、寻找圆心
用Canny算法进行边缘检测,得到边界二值图
用Sobel算子计算原图的梯度
遍历边缘二值图中的非0点,沿着梯度方向和反方向画线段(梯度方向为圆弧的法线方向,即半径方向),线段的起点和长度由参数允许的半径区间决定。将线段经过的点在累加器中记数
对累计器中的点从大到小排序,记数越大越有可能成为圆心,优先估计半径
2、对某个可能的圆心作半径估计
计算所有边界图中的非0点离圆心的距离,并从小到大排序
从小半径r开始,距离相差在一个小量范围内的点,都认为是同一个圆,记数属于该半径r的非0点数,记为n
尝试放大半径,同样记数改半径的点数
判断两个半径孰优孰劣的依据——点的线密度(点数n/半径r),密度越高,半径的可信度越大
重复以上步骤,直至半径超过参数允许的范围,从而得到最优半径
---------------------
作者:hhyh612
来源:CSDN
原文:https://blog.csdn.net/hhyh612/article/details/54947205
版权声明:本文为博主原创文章,转载请附上博文链接!