随笔 - 383  文章 - 0  评论 - 0  阅读 - 35557 

1.      用途

Hough变换是一种在图像中寻找直线,圆及其它简单形状的方法.当我们对图像进行边缘检测之后,可用Hough变换识别图像中的简单形状.该转换也是对图像的一种抽象(由繁到简).下面介绍最基本Hough变换:寻找直线算法.

2.      思路

Hough变换通过从直角坐标系到极坐标系的转换,将直角坐标系中的一条"直线",转换为极坐标系上的一个"点",落在这条"直线"上的像素点越多,这个极坐标中"点"的权越重,最终通过分析各个"点"的权重(局部最大值),获取重要线段.
为区别直角坐标系中的点和极坐标系中的点,下面我们将直角坐标系中的点称为像素点.

3.      具体实现


如图所示,假设我们有一个桃心图形,由多个红色像素点组成(红色为其有意义的像素点,即轮廓值),想提取出其中的直线.
如果将各个像素点连成直线,直线将会有很多条,有些有意义,有些没意义.一般认为像素点足够多的直线更具意义,比如图中的绿色和蓝色的直线.
在直角坐标系中,可以用斜截式y=kx+b来表示一条直线(k是斜率,b是y轴上的截距).
转换到极坐标系P(ρ,θ);ρ称为P点的极径(从原点到直线的垂直距离,上图中的虚线),θ称为P点的极角(极径与x轴的夹角).
直角坐标系中的一条"直线",可转换为极坐标系上的一个"点"(上图中的黑圈),也就是说:把直角坐标系中的多个像素点,对应成极坐标系中的一个点.落在该"直线"上的像素点越多,极坐标系中的该点的权重越大,通过比较权重,取得重要直线.

4.      总结

Hough变换通过映射,将一个形状识别问题,转换成了一个统计问题,在寻找直线的过程中,将落入一条直线上的点映射成了极径和极角(二元),在寻找圆的过程中,将落入圆弧上的点映射成了圆心点坐标x,y与半径r的组合(三元),通过映射简化了数据描述,映射后的数据也可以作为图像的一种抽象特征进行其它运算.
可其扩展到识别更复杂的形状,加入颜色更一步判断,以及利用基本形状之间的关系,层层抽象,组合出更加复杂的功能.

posted on   xieyan0811  阅读(95)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示