霍夫变换原理和具体实现

发布时间:2024年01月08日

Hough transform

定义

霍夫变换由霍夫在1964年提出,其基本原理是笛卡尔坐标系的变换。
y = k x + b y = kx + b y=kx+b
这是一个很普通的直线定义式,k是斜率,b是截距。
那么取该直线上的两个点 ( x i , y i ) , ( x j , y j ) (x_i, y_i),(x_j, y_j) xi?,yi?,(xj?,yj?), 就可以使得两个方程式成立。
y i = k x i + b y_i = kx_i + b yi?=kxi?+b, 和 y j = k x j + b y_j = kx_j + b yj?=kxj?+b, 两点确定一条直线。
这里将目光转向 以 k k k b b b 为坐标系的时候,情况就变成了:
b = ? k x i + y i b = -kx_i +y_i b=?kxi?+yi? b = ? k x j + y j b = - kx_j + y_j b=?kxj?+yj?, 也就是不平行的两条直线有且只有一个交点,这个交点就是一条直线,那么这条直线的形成可以看成是两个平面的相交。即两条直线在侧面进行拉长,三维空间中。

这不是重点。
x , y x, y x,y空间中的直线接近于垂直的时候,梯度接近无穷,那么最好的办法是用法线来表示,即用原切的原理,定义原点为圆心,定义角度和半径,然后利用圆的切点对应的切线唯一来表示直线。
直线的表达式: ρ = x c o s θ + y s i n θ \rho=xcos\theta+ysin\theta ρ=xcosθ+ysinθ
当给定两组 x , y x, y x,y的值时,形成的直线等于两组线的交点 θ i , ρ i \theta_i, \rho_i θi?,ρi? x , y x, y x,y空间中相对于 θ i , ρ i \theta_i, \rho_i θi?,ρi?的直线。
y = ? c o s θ sin ? θ x + ρ s i n θ y = -\frac{cos\theta}{\sin\theta}x+\frac{\rho}{sin\theta} y=?sinθcosθ?x+sinθρ?

那么它如何识别一条直线呢, 有这么一个短视频,它显示出,一个平面坐标X的点可以表示为另一个空间Y中的两条直线,并且它们交为一点,如果检测到X中的一条直线,它就能够在Y中以交点覆盖一片区域,即所有的线都会交于一点,如果不交于一点,那么它就不属于一条直线。

文章来源:https://blog.csdn.net/TTLoveYuYu/article/details/135466489
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。