OpenCV4入门教程068:霍夫变换
索引地址:系列索引
霍夫变换
霍夫变换是一种特征检测(feature extraction),被广泛应用在图像分析(image analysis)、计算机视觉(computer vision)以及数位影像处理(digital image processing)。霍夫变换是用来辨别找出物件中的特征,例如:线条。他的算法流程大致如下,给定一个物件、要辨别的形状的种类,算法会在参数空间(parameter space)中执行投票来决定物体的形状,而这是由累加空间(accumulator space)里的局部最大值(local maximum)来决定。
现在广泛使用的霍夫变换是由RichardDuda和PeterHart在公元1972年发明,并称之为广义霍夫变换(generalizedHoughtransform),广义霍夫变换和更早前1962年的PaulHough的专利有关。经典的霍夫变换是侦测图片中的直线,之后,霍夫变换不仅能识别直线,也能够识别任何形状,常见的有圆形、椭圆形。1981年,因为DanaH.Ballard的一篇期刊论文"Generalizing the Hough transform to detect arbitrary shapes",让霍夫变换开始流行于计算机视觉界。
直线检测
函数原型:
1 |
|
测试代码:
1 |
|
测试效果:
直线检测P
函数原型:
1 |
|
功能和houghlines一样,只是算法不同。
测试代码:
1 |
|
测试效果:
相比于houghlines,检测结果更好。
可以看一下官方实例:HoughLinesP
霍夫圆检测
函数原型:
1 |
|
检测圆就需要有圆的图片,从百度上面找了一张:
有圆有直线
测试代码:
1 |
|
测试效果:
可以看出只有最外圈的那个圆是对的,可以考虑非极大值抑制。
OpenCV4入门教程068:霍夫变换
https://blog.jackeylea.com/opencv/opencv-hough-transformation/