首页 > 其他分享 >计算机视觉课程第四讲-OpenCV4钢管检测项目下集:霍夫圆检测理论与实践

计算机视觉课程第四讲-OpenCV4钢管检测项目下集:霍夫圆检测理论与实践

时间:2022-11-02 12:31:30浏览次数:84  
标签:所有 下集 检测 曲线 半径 圆心 OpenCV4 Canny


 本次将主要给大家讲解如何利用OpenCV4中的霍夫圆检测算法的理论知识和具体实现。如果想听详细讲解,请通过下方B站链接进入B站进行观看:
​https://www.bilibili.com/video/BV1Qy4y1Y7BB​


算法原理

计算机视觉课程第四讲-OpenCV4钢管检测项目下集:霍夫圆检测理论与实践_边缘检测

1.对于一个给定点(x_1,y_1) ,可以在三维直角坐标系中,绘出所有通过它的圆,最终将得到一条三维的曲线。

2.对图像中所有的点进行上述操作。如果两个不同点进行上述操作后得到的曲线在空间 a - b - r 相交, 即它们有一组公共的(a, b, r),这就意味着它们在同一个圆上。 

3.越多曲线交于一点,也就意味着这个交点表示的圆由更多的点组成。我们可以设置一个阈值,来决定多少条曲线交于一点我们才认为检测到了一个圆。 

4.霍夫圆变换要做的就是追踪图像中每个点对应曲线间的交点。如果交于一点曲线的数量超过了阈值, 那么可以认为这个交点所代表的参数(a, b, r)在原图像中为一个圆。


具体实现

计算机视觉课程第四讲-OpenCV4钢管检测项目下集:霍夫圆检测理论与实践_计算机视觉_02

估计圆心

1.Canny 边缘检测,得到边缘检测的二值图 

2.原始图执行一次 Sobel 算子,计算出所有像素的邻域梯度值 

3.初始化圆心空间 N(a,b),并令所有的 N(a,b)=0 

4.遍历 Canny 边缘二值图中的所有非零像素点,沿着梯度方向 ( 切线的垂直方向 )画线,将线段经过的所有累加器中的点 (a,b) 的N(a,b) += 1 5.统计排序 N(a,b),得到可能的圆心(N(a,b) 越大,越有可能是圆心)

估计半径

1.计算 Canny 图中所有非 0 点距离圆心的距离。 

2.距离从小到大排序,根据阈值选取合适的可能半径。 

3.初始化半径空间 r, N(r)=0。 

4.遍历 Canny 图中的非 0 点,N( 距离 )+=1。5.统计得到可能的半径值(N(r) 越大,说明这个距离值出现次数越多,越有可能是半径值)。


核心代码

计算机视觉课程第四讲-OpenCV4钢管检测项目下集:霍夫圆检测理论与实践_边缘检测_03

了解更多关于《计算机视觉与图形学》相关知识,请关注公众号:

计算机视觉课程第四讲-OpenCV4钢管检测项目下集:霍夫圆检测理论与实践_计算机视觉_04


下载我们视频中代码和相关讲义,请在公众号回复:计算机视觉课程资料


标签:所有,下集,检测,曲线,半径,圆心,OpenCV4,Canny
From: https://blog.51cto.com/u_15717531/5816207

相关文章