Hough transform(霍夫变换)学习记录

原文地址为:https://www.cnblogs.com/AndyJee/p/3805594.html

本文是记录阅读过程中的思考与补充。

给定一张图片,我们要寻找这张图片上的直线。假设这张图片上有n条直线,那么在参数坐标系里面就会对应的有n个点,而我们如何找到这n个点?


原图的一个点在参数图中是直线,而给定图是一个像素组成的图片,假设图片里只有黑和白两种颜色,黑色表示有直线从此点经过。假设原图是32x32大小的图片。那么每个黑在参数图中都是一条直线,我就画出黑点对应的直线。但是存在的问题是啥?


存在的问题是你在参数坐标系里画线然后找交点太费劲了,所以简化的方式是我们假设参数图只有32x32个点,横轴32个,纵坐标32个,各轴的坐标是(0、1、2、。。。、31),这就相当于一张表格,表格大小是32x32.


因此我就把原图中的每个黑点都在参数表里画一条直线,具体的画法是:

假设原图(4,12)这个点是黑的,那么这个点确定参数图里的一个直线方程,我把0到31带入直线方程,求出结果。这样就是32个点,每个点对应参数表格一个格子。画的时候f(a,b)表示参数表格里坐标为a,b的表格里的数值,如果有一条直线通过我就在表格里加一。


最后所有的原图的黑点都画一遍以后,参数表格里哪个格的数最大说明这里肯定有多条直线通过。


--------------------------------------------------------------------------------------------------------------------------------------------------------

根据以上进行推广的话,一个曲线方程为:(x^2)/a+(y^2)/b=1。它在原图是一条曲线,而你固定x和y在参数图也是一条曲线。


而这条曲线的所有点在参数图里构造出的所有的曲线都会相交于一点。因此怎么找椭圆?和上面说的一样。


-------------------------------------------------------------------------------------------------------------------------------------

未知半径的圆方程,有三个参数。在原图里找圆,但不知道半径。

首先我不管有没有圆,原图有黑色的我就在三维空间画一个曲面。曲面的方程是固定x、y为某一值画出来的。

最后原图所有黑点都画一遍以后看三维表格里数字最大的那几个说明有可能是一个圆。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值