霍夫变换--检测直线

霍夫变换

将笛卡尔坐标系的直线用统计展示
坐标系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

猜你喜欢

转载自www.cnblogs.com/thgpddl/p/12548181.html