一,概念:

Hough变换用于在图像中检测特定性状,如线,圆,矩形等,广泛用于图像识别领域。

二,原理:

1,Hough变换直线检测:

一条直接的方程可表示为:y = a*x + b ,当a,b固定时直线固定,在图像中可任意取两个不同的x,计算得到相应y则可绘制出这条直线。

而直线检测,则是上述过程的逆过程:已知一系列的点,求取a,b参数的过程。

b = –x*a+y

这里表示对于任意的点(x0,y0),在参数空间Space(a,b)中有一条对应的直线: b = –x0 * a + y0 ,所以对于原图像中的直线上的点,在参数空间中有相应数目的直线,且这些直线必相交于(a,b),得到这个相交点,则原直线方程可求出。

NOTE:

对于a=0,即直线为水平的情况,上述方法不适用,因为所有的点(x,y)在参数空间中对应的直线均为b=y,无交点。

所以发展出另外一种算法,不用Space(a,b),而是Space(theta,rho),即直线方程表示为:rho = x * cos(theta) + y * sin(theta) 。求theta,rho的方法参照上面的方法。

2,Hough变换圆检测:

一个圆表示为:(x+a)^2 + (y+b)^2 = R^2 , 即将图像空间的点映射到参数空间Space(a,b,R),然后计算出参数空间中的交点,即得到a,b,R,圆检测得到。

NOTE : 上述方法前提条件是理想情况下的一条线/圆检测,在实际工程中多条直线,多个圆的的情况,需要一个阈值将参数空间的大部分点去除,剩下的就是检测结果。

三,思考:

类似于Hough变换这样的算法的核心是,在某个角度空间看似无解或者很困难的任务,转换到一个恰当的空间中或许会非常简单。

难点是,这样的一个转换过程也许会很难想到。

最新文章

  1. 常用linux手头命令
  2. python+selenium+Robot
  3. day7----面向对象编程进阶
  4. 让Storm插上CEP的翅膀 - Siddhi调研和集成
  5. 黑马程序员-------.net基础知识二
  6. C#程序中:如何删除xml文件中的节点、元素。
  7. oracle行列转换总结-转载自ITPUB
  8. 【BZOJ1861】【splay】Book 书架
  9. 未能加载文件或程序集“System.Web.Helpers, Version=2.0.0.0(转)
  10. Mozilla Firefox的各级版本链接
  11. 学编程担心自己英语不好吗?(IT软件开发常用英语词汇)
  12. 最大信息系数(MIC)——Detecting Novel Associations in Large Data Sets
  13. ng-select 下拉的两种方式
  14. 【面试】我是如何面试别人List相关知识的,深度有点长文
  15. 发现一个新的注入 代码 eval
  16. css——letter spacing
  17. mycat读写分离性能测试
  18. HDU 3537 Daizhenyang's Coin
  19. 如何在IntelliJ IDEA中使用Git .ignore插件忽略不必要提交的文件
  20. linux命令之crontab定时执行任务【转】

热门文章

  1. pkav漏洞之精华部分
  2. RenderMonkey基本使用方法【转】
  3. VR开发者必看:4大最为值得关注的内容平台【转】
  4. ElasticSearch 获取分词的Token
  5. 2017.11.21 查询某个字段为null的记录
  6. 转:RESTful架构详解
  7. Node.js meitulu图片批量下载爬虫1.01版
  8. docker入门——安装及简单操作
  9. 【CI】系列三.宿主机KVM配置及vdi与vmdk格式转换等
  10. Unity 编辑器扩展 场景视图内控制对象