霍夫圆变换原理

  1. 霍夫圆变换是将二维图像空间中一个圆转换为该圆半径、圆心横纵坐标所确定的三维参数空间中一个点的过程,因此,圆周上任意三点所确定的圓,经Hough变换后在 三维参数空间应对应一点。该过程类似于选举投票过程,圆周上任意三个点为一选举人,而这三个点所确定的圆则为一侯选人(以下称为候选圆〉。遍历圆周上所有点,任意三个点所确定的候选圆进行投票。遍历结束后,得票数最高点(理论上圆周上任意三点确定的圆在Hough变换后均对应三维参数空间中的同一点)所确定的圓即为该圆周上,绝大多数点所确定的圆(以下称为当选圆),即绝大多数点均在该当选圆的圆周上,以此确定该圆。

霍夫圆变换(Hough)原理 - hairuiJY - CSDN博客
https://blog.csdn.net/u010368556/article/details/70167993
2.

在xy坐标系中同一个圆上的所有点的圆方程是一样的,它们映射到abr坐标系中的是同一个点,所以在abr坐标系中该点就应该有圆的总像素N0个曲线相交。通过判断abr中每一点的相交(累积)数量,大于一定阈值的点就认为是圆。
以上是标准霍夫圆变换实现算法,问题是它的累加面试一个三维的空间,意味着比霍夫线变换需要更多的计算消耗。Opencv霍夫圆变换对标准霍夫圆变换做了运算上的优化。它采用的是“霍夫梯度法”。它的检测思路是去遍历累加所有非零点对应的圆心,对圆心进行考量。如何定位圆心呢?圆心一定是在圆上的每个点的模向量上,即在垂直于该点并且经过该点的切线的垂直线上,这些圆上的模向量的交点就是圆心。

霍夫圆变换 - 牧野的博客 - CSDN博客
https://blog.csdn.net/dcrmg/article/details/52506538

  1. 霍夫变换检测圆形的原理跟检测直线的原理是一样的。圆的表达式为 (x-a)2+(y-b)2=r2 , 把问题转换成在求解经过像素点最多的 (a,b,r) 参数对。这里会发现(a,b,r)的参数空间特别大,计算量特别大。我们一般使用霍夫梯度法来解决圆的变换。
    霍夫圆变换原理_第1张图片
    如上图所示,如果我们对一个圆求梯度,那么圆上所有的点的梯度的方向均朝向圆心
    基于此有如下原理:
    (1)首先对图像应用边缘检测,比如用canny边缘检测
    (2)使用sobel算子计算所有像素的梯度
    (3)遍历canny之后的所有非0的像素点,沿着梯度方向画线,每个点有是一个累加器,有一个线经过该点,累加器加1,对所有累加器进行排序,根据阈值找到所有可能的圆心
    (4)计算canny图像中所有的非0像素点距离圆心的距离,距离从小到大排序,选取合适的半径
    (5)对选取的半径设置累加器,对于满足半径r的累加器+1

霍夫直线变换和霍夫圆变换的原理和实现 - u013263891的博客 - CSDN博客
https://blog.csdn.net/u013263891/article/details/82867251
4.

你可能感兴趣的:(本科学习)