【OpenCV系列】OpenCV霍夫梯度找圆算法

两个步骤:寻找圆心、对所有可能的圆心做估计

1、寻找圆心

用Canny算法进行边缘检测,得到边界二值图
用Sobel算子计算原图的梯度
遍历边缘二值图中的非0点,沿着梯度方向和反方向画线段(梯度方向为圆弧的法线方向,即半径方向),线段的起点和长度由参数允许的半径区间决定。将线段经过的点在累加器中记数
对累计器中的点从大到小排序,记数越大越有可能成为圆心,优先估计半径

2、对某个可能的圆心作半径估计

计算所有边界图中的非0点离圆心的距离,并从小到大排序
从小半径r开始,距离相差在一个小量范围内的点,都认为是同一个圆,记数属于该半径r的非0点数,记为n
尝试放大半径,同样记数改半径的点数
判断两个半径孰优孰劣的依据——点的线密度(点数n/半径r),密度越高,半径的可信度越大
重复以上步骤,直至半径超过参数允许的范围,从而得到最优半径
--------------------- 
作者:hhyh612 
来源:CSDN 
原文:https://blog.csdn.net/hhyh612/article/details/54947205 
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/linghugoolge/article/details/88240843