Hough直线检测和圆检测

前言:计算机视觉是让计算机理解图像与视频,本系列博客的目的在于加深自己在学习计算机视觉过程中对相关知识理解与回顾。其中很多内容参照:教材《Computer Vision: Algorithms and Applications》,教材《Learning Image Processing with OpenCV》工具书《Learning OpenCV》,国外大学的课程《Computer Vision》和课程《Computer Vision》。

 

         Hough变换的核心思想为把图像空间(或者说笛卡尔坐标系)中的点,变换到参数坐标系空间中,然后采用投票的思想进行参数估计。对于直线检测,参数坐标系空间为。对于圆检测,参数坐标系空间而。其基本思路为:

1.        对参数进行离散化;

2.        利用图像中的每一个点对参数进行投票;

3.        找到参数空间中的投票数量最大值或者值大于一定阈值所对应的参数,得到相应的直线和圆。

 

使用Hough变化的优点

1.        对outliers鲁棒,因为每一个点都是单独对参数进行投票;

2.        效率高;

3.        能够提供多个拟合结果(如能检测多条之间和多个圆)。

 

相应的也有一些缺点

1.        对噪声比较敏感;

2.        离散化的bin size选择比较困难,选择bin size的过程中需要权衡噪声容忍度,准确率以及效率等各方面问题;

3.        不适合参数过多的模型,随着参数的增加,模型复杂度呈现指数级别上升。



详细案例解释参见网址http://blog.163.com/yuyang_tech/blog/static/21605008320130233343990/

 

         在OpenCV中,可通过HoughLines和HoughCircles函数来进行图像中直线和圆的检测。


你可能感兴趣的:(OpenCV,图像处理,计算机视觉)