• 霍夫变换--检测直线


    霍夫变换

    将笛卡尔坐标系的直线用统计展示
    坐标系A中的点=坐标系B中的线
    坐标系A中的线=坐标系B中的点
    A中多点的连线=B中多曲线的交点

    先理解这样一个思维

    1

    • 左边的x-y坐标系中,设定k,b定值,则有一系列x,y值组成直线。
    • 相应的在右边k-b坐标系中,k,b为定值,即为一个点。
    • 也就是y=k*x+b在x-y坐标系中是直线,在k-b坐标系中是一个点。
    • 同理x-y坐标系中直线,对应k-b坐标系中的点

    2
    那么x-y坐标系中,点A对应k-b坐标系的绿直线,点B对应k-b坐标系的红直线,连接A-B两点的直线对应,红绿直线的交点(这里呼应了上一部分第4点)。

    直角坐标系和极坐标系的转换

    如果你理解了上面的点→直线和直线→点的思维,现在来用同样的思维看直角坐标系和极坐标系

    预备知识:
    对于笛卡尔系的点(x,y),我们可以用极坐标系的点(r,θ)来表示,点点转换关系:
    x=rcosθ
    y=rsinθ
    x²+y²=r²

    现在推导点线关系

    先给出结论:
    r=xcosθ+ysinθ
    3
    直线(x1,y1)(x2,y2)的斜率有两种表达,可以借此建立等式
    推导过程如下:

    **定义式求斜率**:
    k=tan(θ+90°)=-cosθ/sinθ (1)
    
    设橙色点极坐标(r,θ),该点直角坐标点是(rcosθ,rsinθ),故**两点式求斜率**:
    k=(y1-rsinθ)/(x1-rcosθ)	(2)
    
    由式(1)(2)得:
    r=x1cosθ+y1sinθ
    通用:r=xcosθ+ysinθ
    

    由上方推导,当有点(x1,y1)时,会有很多个点(r,θ)符合,他们连接起来就是一条曲线,得到结论:

    • 直角坐标系的点,映射为极坐标的一条曲线

    同理:

    • 直角坐标系的线,映射为极坐标的一个点

    同理:

    • 直角坐标系的两个点连接成的线,映射为极坐标的一个点

    实际应用需要离散化

    4
    5

  • 相关阅读:
    jekyll简单使用
    三、ansible简要使用
    四、ansible主机组定义
    项目中远程连接404 NOT FOUND问题的原因以及解决办法(这里只涉及我遇到的问题)
    AS3中的位操作
    AS3中is和as操作符的区别
    static 函数和普通函数的区别
    [译] SystemTap
    2017-09-17 python 学习笔记
    xargs 命令使用小记
  • 原文地址:https://www.cnblogs.com/thgpddl/p/12548181.html
Copyright © 2020-2023  润新知