计算机视觉-直线检测

1、哈夫变换
2、RANSAC的直线检测

1、检测直线

n个点在一条直线上,连续的满足直线方程;同样,离散的也满足直线方程。

直线解决方法:先确定所有有任意2点决定的直线(需约次运算以确定n(n - 1)/ 2条线)。在找出接近具体直线的点的集合(需约次运算以比较n个点中的每一个与n(n - 1)/ 2条直线中的每一条),这样计算量太大。

☞哈夫变换的方法:可用较少的计算量来解决这个问题。

哈夫变换利用点—线的对偶性(duality):
(1)在图像空间中共线的点对应在参数空间里相交的线。

(2)在参数空间中相交于同一个点的所有直线在图像空间里,有共线的点与之对应。

图像空间XY中过点和的直线上的每一点都对应在参数空间PQ里的一条直线,这些直线相较于点(p’,q‘)。

☞哈夫变换检测直线的具体实现原理(过程):

●在参数空间PQ里建立一个两维的累加数组。设这个累加数组为A(p,q),其中[Pmin,Pmax]和[Qmin,Qmax]分别为预期的斜率和截距的取值范围。

●开始时置数组A为零,然后对每一个图像空间中的给定点(x,y),让p取遍P轴上所有可能的值,并算出对应的q = -px + y。(x,y固定)

●再根据p和q的值(设都已经取整)对A累加:A(p, q) = A(p,q)+1。

●累加结束后,根据A(p,q)处共线点的个数。同时(p,q)值也给出了直线方程的参数,使我们得到了点所在直线的方程。

●如果共线,则有相同的p,q,A(p,q)则可以不断累加。

☞哈夫变换在极坐标下检测直线(能检测垂直于X轴的曲线,θ为90°)
●如果直线接近竖直方向,会由于p和q的值都接近无穷而使计算量大增,此时可用直线的极坐标方程:

●根据这个方程,原图像空间中的点对应新参数空间中的一条正弦曲线,即原来的点—直线对偶性变成了现在的点—正弦曲线对偶性。

●检测在图像空间中共点的线需要在参数空间里检测正弦曲线的交点。

●具体就是让θ取遍θ轴上所有可能的值,并算出对应的ρ,再对累加数组A累加,有A的数值得到共线点的个数,这里在参数空间建立累加数组的方法与上述类似。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值