Hough变换

目录

1.数学理解(点共线问题-->线相交问题)

2.Hough变换算法实现

3.Hough变换应用于线检测

4. MATLAB工具


霍夫变换(Hough Transform):数字图像处理中的特征提取计数,判断图像中哪些点共线,可以检测直线、圆、椭圆。


1.数学理解(点共线问题-->线相交问题)

①x-y变量空间(y=kx+b)-->k-b参数空间(b=y-kx)


②x-y变量空间-->ρ-θ参数空间(ρ=xcosθ+ysinθ)


  总结:x-y坐标系的一条直线(y=kx+b)对应ρ-θ坐标系的一个点(ρ,θ),x-y坐标系的一个点(x,y)对应ρ-θ坐标系的一条曲线(ρ=xcosθ+ysinθ)。

2.Hough变换算法实现

step1. 在参数空间(ρ,θ)里建立一个二维矩阵H(ρ,θ),初始化为0,ρ和θ分别表示横纵坐标;

step2. 对XY空间中的每一个给定点做Hough变换,求出其参数空间对应的所有(ρ,θ)点,即曲线(ρ=xcosθ+ysinθ),其中ρ和θ取整型;

step3. 在参数矩阵H每个点H(ρ,θ)处累加1,即H(ρ,θ)的值表示参数空间在该点(ρ,θ)处线相交的直线数,即XY空间共线的点数;

step4. 参数矩阵H最大值对应的坐标(ρ,θ)代表XY空间直线方程的参数。

3.Hough变换应用于线检测

step1. 对图像进行Hough变换;

step2. 找出变换域中的峰值数据(相交直线最多的点);

step3. 根据峰值数据的坐标绘出对应直线。

4. MATLAB工具

step1. hough函数执行霍夫变换,得霍夫矩阵;

step2. houghpeaks函数在霍夫矩阵中寻找峰值点;

step3. houghlines函数得二值图像中的直线信息。


[H,theta,rho] = hough(BW)        %二值图像的Hough变换-检测直线
        --rho=x*cos(theta)+y*sin(theta)
        --x-y坐标系的一条直线(y=kx+b)对应ρ-θ坐标系的一个点(ρ,θ),x-y坐标系的一个点(x,y)对应ρ-θ坐标系的一条曲线(ρ=xcosθ+ysinθ)
        --BW:输入二值图像(提取边缘后的)
        --H:输出一个参数空间矩阵(hough变换后的累加器矩阵),行坐标-theta,列坐标-ρ
        --theta:x轴与向量ρ的夹角θ(-90°<θ<90°),线条y=kx+b本身的角度是θ+90°
        --rho:原点到直线y-kx+b的垂直距离ρ

peaks = houghpeaks(H, NumPeaks)         %确定Hough变换中的峰值,即参数矩阵中累加的最大值
        peaks = houghpeaks(..., 'Threshold', val1, 'NHoodSize', val2) 
        --H:输入Hough变换获得的参数矩阵
        --NumPeaks:设定保留的最大峰值个数
        --peaks :输出矩阵peaks ,记录H中保留峰值的横纵坐标

lines = houghlines(BW, theta, rho, peaks)         %基于Hough变换提取直线段
          lines = houghlines(..., 'FillGap', val1, 'MinLength', val2)
        --BW:输入二值图(提取边缘后的,hough变化的输入)
        --theta,rho:hough变换的结果(ρ,θ)
        --peaks:houghpeaks结果
        --lines:输出结构数组(可能检测到多条直线),长度等于找到的线段数。lines结构数组成员:
            -point1:向量[r1,c1],指定线段起点行列坐标
            -point2:向量[r2,c2],指定线段终点行列坐标
            -theta:此线段的霍夫变换参数θ
            -rho:此线段的霍夫变换参数ρ


参考:​​​​​​https://blog.csdn.net/didi_ya/article/details/111149724?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-111149724-blog-90215537.pc_relevant_antiscanv2&spm=1001.2101.3001.4242.1&utm_relevant_index=3https://blog.csdn.net/didi_ya/article/details/111149724?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-111149724-blog-90215537.pc_relevant_antiscanv2&spm=1001.2101.3001.4242.1&utm_relevant_index=3

MATLAB hough函数使用指南 :MATLAB 文档中心 - MathWorks 中国icon-default.png?t=M4ADhttps://ww2.mathworks.cn/help/search.html?qdoc=hough&submitsearch=

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值