算法总结——hough直线检测

本文介绍了Hough变换在直线检测中的应用,包括MATLAB中的hough、houghpeaks和houghlines函数的使用。通过增加RT空间的精度和采用“双精度”策略,提高检测精度并减少不连续直线的产生。同时,对houghlines函数进行调整,适用于特定的指针边缘检测任务。通过两种方法确定直线,确保在不同情况下都能准确检测到指针的边缘。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    hough直线检测,是我用的图像检测方法中的另一个重点。hough的原理说起来比较简单,就是对原图中每个点可能经过的直线都进行累积,这些累积是在一个“可能经过的直线模版”即“RT模版”上进行的,最后根据累积值找出最可能的几条直线即可。

 

    我首先还是先阐述一下自己对matlab中直线检测步骤的理解。matlab中实现hough直线检测用到了3个函数,也是3个.m文件,分别是hough、houghpeaks和houghlines,三者也是按照这个顺序出场的。hough函数的作用就在于在一个离散的“RT空间”上完成累积,离散是一种无奈,因为我们的计算有限制,也是一种“相应的便利”,因为我们的原图像素也是离散的,RT空间的离散导致四舍五入,才可能对离散的原图像素点累积出可能的直线;接着是houghpeaks,它主要是用来找出“RT模版”上累积出来的几个最大的累积值,从而确定最可能是直线的直线,matlab在这个函数中加入了累似图像“非极大抑制”的处理,如果一个很小的RT区域中出现几个很大的累积点,那么会留下最大的一个舍弃其他的,这样的作用反应到原图上,我觉得应该是对较粗的直线起到防止反复检测出几条平行或者相交的直线来;最后是houghlines,这个函数得到真实的直线,它一方面考虑到“直线最小间隙”,另一方面考虑到“直线最小长度”。

 

    观察matlab中hough的实现,我根据自己的应用需求作了一些小的修改。首先是在matlab的hough函数上,我觉得仅仅离散的“RT空间”还是不太够的,我们把“RT空间”离散的越细,检测的直线就越精确,也可以说在原图中“需要检测的区域就越狭窄”,这一点matlab的hough函数可以办到,但是过细的“RT空间”,可能造成检测到的直线不连续,本来连续的边缘直线,由于存在角度T上的微小波动,可能会被认为是不用的直线来检测,当然,houghpeaks中的“类非极大抑制”可以防止对这样的一条真实边缘直线检测多次,但归根结底,不利于最后houghlines函数连出真实的直线来。基于此,我对“RT空间”采用“双精度”的处理方法,首先就像matla

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值