matlab寻找直线_Matlab 霍夫变换 ( Hough Transform) 直线检测

本文介绍了如何在MATLAB中使用霍夫变换进行直线检测,详细讲解了霍夫变换的基本原理,并通过实例展示了从图像边缘检测到直线提取的完整过程。代码示例中,作者展示了对图像进行边缘检测、霍夫变换、极值点查找以及最终直线绘制的步骤,成功检测并显示了图像中的直线。
摘要由CSDN通过智能技术生成

PS:好久没更新,因为期末到了,拼命复习中。复习久了觉得枯燥,玩玩儿霍夫变换直线检测

霍夫变换的基本原理不难,即便是初中生也很容易理解(至少在直线检测上是这样子的)。

霍夫变换直线检测的基本原理:(不配图了,自己在白纸上画画,理解更深刻)

一步一步来:

1、在白纸上画出一个直角坐标系,任意给出一个点;

2、那么,对于点(x0,y0),经过这个点的直线必定满足y0=k*x0+b, 其中k是直线的斜率,b是直线的截距;

3、上式可以化成b=y0-k*x0,  可以看作是以-x0为斜率,以y0为截距,在k-b空间上的一个直线方程(k,b为变量);

4、可见,k-b空间上的一条直线, 代表了x-y空间经过特定点的所有直线,而x-y上的特定直线责备k-b空间上的特定点表示;

利用这个原理,我们可以通过一下方法检测可能出线的直线:

1、得到一副边缘图像;

2、对图像中的每一个边缘点,在k-b空间中画出一条直线;

3、在各直线的交点,我们采取“投票”(vote)的方法,即累加:n条直线的交点,改点的值为n;

4、遍历k-b空间,寻找出先局部最大值(极值)的点,这些点的坐标(k,b)就是图像中可能出线的直线的斜率和截距;

为了容易理解,这里采用了直线的斜截表达法。

事实上这种方法并不使用,因为某些直线的斜率很大的甚至不存

  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值