首页 > 其他分享 >点云特征描述子PFH与FPFH,详细推导过程(绝对能看懂!)

点云特征描述子PFH与FPFH,详细推导过程(绝对能看懂!)

时间:2024-06-13 08:59:42浏览次数:22  
标签:cos p1 特征描述 cdot PFH FPFH theta n2 向量

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


声明:这是本人第一次在CSDN上写博客,使用还不熟悉,如有错误还请见谅。

前言

点云学习中一个很重要的概念,特征描述子。比较常用的就是PFH与FPFH,之前自己学习的时候为了弄清楚具体原理,也是各种查资料,但是针对 [ α , ϕ , θ ] [\alpha,\phi,\theta] [α,ϕ,θ],这三个的具体求法总是不明白,网上查的很多资料也并没有将具体的推导过程,所以今天将自己的理解写下来,希望对那些这方面也有疑惑的朋友能起到一点帮助。


原理示意图

PFH与FPFH二者之间的区别相信各位都已经了解,网上相关介绍非常之多,在此不再赘述。

上图中,我们一般默认 p 1 p_{1} p1​为源点建立局部坐标系。在此说明这个源点是如何确定的,具体思想是:法向量与两点连线的夹角较小的那个点为源点。注意 p 1 p_{1} p1​的法向量 n 1 n_{1} n1​,与 p 2 p_{2} p2​的法向量 n 2 n_{2} n2​,明显 n 1 n_{1} n1​与两点连线的夹角更小,故 p 1 p_{1} p1​为源点,先在此建立局部坐标系。(注:上述法向量均为单位法向量,即模值为1)

1、局部坐标系的建立

第一个轴:这个很容易确定,就是 p 1 p_{1} p1​的法向量 n 1 n_{1} n1​。

第二个轴:法向量 n 1 n_{1} n1​, p 1 p 2 p_{1}p_{2} p1​p2​这条线会组成一个平面,以垂直这个平面的向量 v v v作为第二个轴。显然 v = ( p 2 − p 1 ) × u v=(\begin{matrix}p_2-p_1\end{matrix})\times u v=(p2​−p1​​)×u。(叉乘应该就不需要解释了吧…)

第三个轴:上面两个轴再叉乘…。 w = u × v w=u\times v w=u×v

最后就是归一化,使得三个坐标轴向量长度均为1。
u = n 1 u=n_{1} u=n1​由于 n 1 n_{1} n1​本身就是单位向量,故 u u u不需要变化。
v = u × p 2 − p 1 ∥ p 2 − p 1 ∥ 2 v=u\times\frac{p_{2}-p_{1}}{\|p_{2}-p_{1}\|_{2}} v=u×∥p2​−p1​∥2​p2​−p1​​
p 1 p_{1} p1​, p 2 p_{2} p2​之间的连线长度不确定,所以需要归一化,故需要除以二者之间的模长,即 ∥ p 2 − p 1 ∥ 2 \|p_2-p_1\|_2 ∥p2​−p1​∥2​。两个单位向量的叉乘还是单位向量,故 v v v的最终形式确定。
w = u × v w=u\times v w=u×v
引用上面的一句话:两个单位向量的叉乘还是单位向量,故 w w w的最终形式确定…
到此为止,上面图片中三个轴的建立就讲清楚了。

2、描述子三元素具体求法。

我这里说的三元素其实就是 [ α , ϕ , θ ] [\alpha,\phi,\theta] [α,ϕ,θ],其实还有一个元素 d d d,不过咱们一般都默认忽略了就。先解释一下: α \alpha α就是 p 2 p_{2} p2​的法向量 n 2 n_{2} n2​与坐标轴 v v v的夹角。 ϕ \phi ϕ就是 p 1 p_{1} p1​的法向量 n 1 n_{1} n1​与两个点连线之间的夹角。 θ \theta θ不好叙述,在此先不介绍,后面具体推到过程中各位就明白了。

推导 α \alpha α:

v ⋅ n 2 = ∣ v ∣ ⋅ ∣ n 2 ∣ cos ⁡ α v\cdot n_{2}=|v|\cdot|n_{2}|\cos\alpha v⋅n2​=∣v∣⋅∣n2​∣cosα
向量的点乘公式,此时请注意 v v v与 n 2 n_{2} n2​均为单位向量,模长全为1,故上式可以写成: v ⋅ n 2 = cos ⁡ α v\cdot n_{2}=\cos\alpha v⋅n2​=cosα
因为0-180°中,cos函数是单调的,所以此时咱们使用 cos ⁡ α \cos\alpha cosα,或者是 α \alpha α,都没什么影响,因为都是唯一确定的一个值。为了方便一般写作 α \alpha α。第一个公式推导完毕: α = v ⋅ n 2 \alpha=v\cdot n_{2} α=v⋅n2​

推导 ϕ \phi ϕ:

原理其实和上面的相同,都是忽略了cos而已。故不在多余介绍。

推导 θ \theta θ

首先有必要介绍一些基础数学知识,先上图(实在懒得在电脑上画图了,直接手搓了一个,凑合能看…)。
在这里插入图片描述
解释一下:上面的向量 a a a, b b b均为单位向量,二者之间夹角为 θ \theta θ(不好意思忘了区分了,这里的符号就是一个基础知识,不要和本文内容弄混),向量 a a a在向量 b b b的投影为向量 c c c。那么向量 c c c应该如何表示呢?我们开始推导:
a ⋅ b = ∣ a ∣ ∣ b ∣ ⋅ cos ⁡ θ = cos ⁡ θ \begin{aligned}a\cdot b&=|a||b|\cdot\cos\theta\\&=\cos\theta\end{aligned} a⋅b​=∣a∣∣b∣⋅cosθ=cosθ​
注意向量 a a a,向量 b b b模长均为1。在这个直角三角形中:向量 c c c模长:
∣ c ∣ = ∣ a ∣ ⋅ cos ⁡ θ |c|=|a|\cdot\cos\theta ∣c∣=∣a∣⋅cosθ
把这里模长 a a a换成模长 b b b,因为都是单位向量嘛,换后也没影响。所以:
∣ c ∣ = ∣ b ∣ ⋅ cos ⁡ θ |c|=|b|\cdot\cos\theta ∣c∣=∣b∣⋅cosθ
再从向量的角度进行考虑,向量 c c c与向量 b b b共线,结合上式,故: c = b ⋅ cos ⁡ θ c=b\cdot\cos\theta c=b⋅cosθ
向量 c c c表示为上,当然还可以再变形,几个公式来回代入就好。这里其实只需要用到向量 c c c的模长:
∣ c ∣ = ∣ b ∣ cos ⁡ θ = cos ⁡ θ = a ⋅ b |c|=|b|\cos\theta=\cos\theta\\=a\cdot b ∣c∣=∣b∣cosθ=cosθ=a⋅b
这里记住公式: ∣ c ∣ = a ⋅ b |c|=a\cdot b ∣c∣=a⋅b。后面会用到。

ok,基础知识讲完,下面回归正题。
回到最上面的原理图, p 2 p_{2} p2​点出,灰色的三个箭头就是投影到这里的坐标轴。此时咱们尽量不要被那个原理图所迷惑,图中给出的是直接法向量投影,个人觉得这样不好理解,看我下面讲的就好。咱们首先将这个点处的法向量 n 2 n_{2} n2​分别向 u u u和 w w w两个轴投影,投影点分别为n和m。投影的平面图如下所示:在这里插入图片描述

我们可以根据两个点n、m和坐标轴,画出一个长方形,连接对角线 o p 2 op_{2} op2​。对角线 o p 2 op_{2} op2​与 u u u轴的夹角即为最上方原理图中的 θ \theta θ。此时咱们在三角形中求 θ \theta θ。
tan ⁡ θ = o n n p 2 ∴ θ = arctan ⁡ o n n p 2 \begin{aligned}\tan\theta&=\frac{on}{np_{2}}\\\therefore\theta&=\arctan\frac{on}{np_{2}}\end{aligned} tanθ∴θ​=np2​on​=arctannp2​on​​
此时还记得之前讲的基础知识里,最后我让咱们记住的那个公式吗: ∣ c ∣ = a ⋅ b |c|=a\cdot b ∣c∣=a⋅b
结合起来看:
∣ o n ∣ = u ⋅ n 2 |on|=u\cdot n_{2} ∣on∣=u⋅n2​ ∣ n p 2 ∣ = w ⋅ n 2 |np_{2}|=w\cdot n_{2} ∣np2​∣=w⋅n2​
所以说最后 θ \theta θ的公式为:
θ = arctan ⁡ ( u ⋅ n 2 , w ⋅ n 2 ) \theta=\arctan(u\cdot n_{2},w\cdot n_{2}) θ=arctan(u⋅n2​,w⋅n2​)
到此为止,咱们的问题就全部解决了吗?并没有!此时可能会有人问:公式顺序不对呀,我看好多教程是 θ = arctan ⁡ ( w ⋅ n 2 , u ⋅ n 2 ) \theta=\arctan(w\cdot n_{2},u\cdot n_{2}) θ=arctan(w⋅n2​,u⋅n2​),你推导的怎么前后颠倒了,而且你推导的是除号,怎么最终公式中成逗号了?
关于这一点,说一下我的理解:
首先前后颠倒错了吗?并没有,各位注意下我画的图,包括各位在其他地方看到的所有原理图, θ \theta θ全部是与 u u u轴的夹角,但是我们注意一下与 θ \theta θ互余的那个角,就是对角线与 w w w轴的夹角,这个夹角其实也可以看做是 θ \theta θ,这是两种不同的标准,只要全部统一, θ \theta θ到底选择是和哪个轴的夹角其实无伤大雅,因为并不影响特征。其次就是说的逗号问题,个人理解就是因为考虑到这种情况,所以才写成逗号的,因为两种方式计算都可以。

放在最后

相信如果慢慢的读下来,绝对可以让你清晰理解这方面的推导。可能很多地方讲的不好,如果不足,还请指正!

标签:cos,p1,特征描述,cdot,PFH,FPFH,theta,n2,向量
From: https://blog.csdn.net/weixin_49166952/article/details/139621763

相关文章

  • RANSAC(提取FPFH特征)+ICP配准
            RANSAC(RandomSampleConsensus)和ICP(IterativeClosestPoint)是点云配准中常用的两个算法,可以使用RANSAC进行粗配准结合ICP进行精配准。1.FPFH特征FPFH特征:定义:FPFH是一种点云特征描述子,用于表示点云中每个点的局部特征。计算过程:对于每个点,计算其法......
  • 书籍推荐-《计算机视觉的特征描述》
    以下内容来自公众号【一点人工一点智能】编辑:东岸因为@一点人工一点智能书籍:RoboticVehicles:SystemsandTechnology作者:TianSengNg出版:Springer《计算机视觉的特征描述》通过对近100种局部、区域和全局特征描述符的调查,将该领域的历史发展与当代方法的最新分析相结合,而......
  • 基于旋转轮廓的点云局部浮点型和二值化特征描述(RCS)
    本次介绍一个发表于ComputerVisionandImageUnderstanding的经典三维点云描述子RCS。论文地址:JiaqiYang,QianZhang,KeXian,YangXiao,ZhiguoCao,“Rotationalco......