python直线检测函数 python判断点在直线的哪一侧( 二 )


什么是极坐标系?
关于极坐标系,打开百度百科学习一下即可 。
重点学到下面这个结论就行:
找资料的时候,发现一个解释的比较清楚的博客 ,后续可以继续学习使用 。
继续阅读资料 , 看到如下所示的图,这个图也出现在了很多解释原理的博客里面,但是图下面写了一句话
在这里直接蒙掉了,怎么就表示成极坐标系了?上面这个公式依旧是笛卡尔坐标系表示直线的方式呀 , 只是把k和b的值给替换掉了 。
为何是这样的,具体原因可以参照下图 。
centerchou 图/center
继续寻找关于霍夫变换的资料,找到一个新的概念 霍夫空间。
在笛卡尔坐标系中,一条直线可以用公式表示,其中k和b是参数,表示的是斜率和截距 。
接下来将方程改写为,这时就建立了一个基于k - b的笛卡尔坐标系 。
此时这个新的方程在k - b坐标系也有一个新的直线 。
你可以在纸上画出这两个方程对应的线和点,如下图所示即可 。
centerchou 图/center
新的k - b坐标系就叫做霍夫空间,这时得到一个结论,图像空间x - y中的点对应了 霍夫空间 k - b中的一条直线,即图像空间的点与霍夫空间的直线发生了对应关系 。
如果在图像空间x - y中在增加一个点,那相应的该点在霍夫空间也会产生相同的点与线的对应关系,并且 A 点与 B 点产生的直线会在霍夫空间相交于一个点 。而这个点的坐标值就是直线 AB 的参数 。
如果到这里你掌握了,这个性质就为我们解决直线检测提供了方法,只需要把图像空间的直线对应到霍夫空间的点,然后统计交点就可以达到目的 , 例如图像空间中有 3 条直线,那对应到霍夫空间就会有 3 个峰值点 。
遍历图像空间中的所有点,将点转换到霍夫空间 , 形成大量直线,然后统计出直线交会的点,每个点的坐标都是图像空间直线方程参数,这时就能得到图像空间的直线了 。
上述的内容没有问题,但是存在一种情况是,当直线趋近于垂直时,斜率k会趋近于无穷大,这时就没有办法转换了,解决办法是使用法线来表示直线 。
上文提及的斜截式如下:
通过第二个公式,可以得到下述公式:
此时,我们可以带入一些数值进行转换 。
图像空间有如下的几个点:
转换后的函数,都可以在霍夫空间θ - ρ (横坐标是θ ,纵坐标是ρ )进行表示 。
原理这时就比较清晰了:
除了一些数学知识以外,经典的博客我们也有必要记录一下,方便后面学习的时候,进行复盘 。
本部分用于记录本文中提及的相关数学原理,后续还要逐步埋坑 。
今天涉及了一点点数学知识,能力限制,大家一起学习 , 有错误的地方,可以在评论区指出,不胜感激 。
希望今天的 1 个小时(今天内容有点多,不一定可以看完),你有所收获,我们下篇博客见~
相关阅读
技术专栏
逗趣程序员
【python直线检测函数 python判断点在直线的哪一侧】python直线检测函数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于python判断点在直线的哪一侧、python直线检测函数的信息别忘了在本站进行查找喔 。

推荐阅读