计算机视觉面试考点(1)霍夫变换

计算机视觉工程师在面试过程中主要考察三个内容:图像处理、机器学习、深度学习。然而,各类资料纷繁复杂,或是简单的知识点罗列,或是有着详细数学推导令人望而生畏的大部头。为了督促自己学习,也为了方便后人,决心将常考必会的知识点以通俗易懂的方式设立专栏进行讲解,努力做到长期更新。此专栏不求甚解,只追求应付一般面试。希望该专栏羽翼渐丰之日,可以为大家免去寻找资料的劳累。每篇介绍一个知识点,没有先后顺序。想了解什么知识点可以私信或者评论,如果重要而且恰巧我也能学会,会尽快更新。最后,每一个知识点我会参考很多资料。考虑到简洁性,就不引用了。如有冒犯之处,联系我进行删除或者补加引用。在此先提前致歉了!

原理

y=kx+b可以表达直线。
如果(k,b)确定,那么这条直线就具有了唯一性。
所以,在(k,b)坐标系中的一个点可以对应(x,y)坐标系中的一条直线。
反过来,(x,y)坐标系上的一个点也会对应(k,b)坐标系中的一条线。
(x,y)坐标系中一条直线上的n个点可以对应(k,b)坐标系中的n条直线。
(k,b)坐标系中,这n条直线的交点满足了(x,y)坐标系中n个点的特征。
换句话说,(k,b)坐标系中的这个点就代表了(x,y)坐标系中的那条直线。

细节

当(x,y)坐标系中的直线竖直的时候,k无穷大,在(k,b)坐标系中无法表示。
所以使用极坐标系(ρ,θ)进行表示,即ρ=xcosθ+ysinθ
推导:将下面的两个公式相加就是ρ=xcosθ+ysinθ
(图中有误,第四行应该是y1sinθ)
在这里插入图片描述
实际中被检测的直线往往有很多噪音。
即,在(ρ,θ)坐标系中的线并不会严格交于一点。
处理方法是在(ρ,θ)坐标系中建立网格,如下所示。
如果有点落在网格内,该网格计数加一。
比如最后,计数比较多的网格的计数分别为:30,25,15,8,6
我们设立一个阈值,比如小于20的网格被过滤掉。
那么我们最后就会留下30,25
这两个格子就对应了(x,y)坐标系中的两条直线。
在这里插入图片描述

拓展

霍夫变换的本质是(x,y)坐标系和参数坐标系的一个对应。
直线有两个参数,那么参数空间是二维的。
圆有坐标x,y和半径r共三个参数,所以参数空间是三维的。
那么三维空间的交点就对应了我们想要检测的圆。
所以依据这个思想,我们还可以检测椭圆等形状。只不过椭圆对应了五维的参数空间。


欢迎讨论 欢迎吐槽

发布了38 篇原创文章 · 获赞 142 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_39417323/article/details/105392073
今日推荐