三维点云表征概述

1、三维数据的获取方式及原理

三维数据的获取方式

在这里插入图片描述
立体视觉:多目视觉/双目视觉,做常用的空间的点
关于消费Kinect的RGB_D的 通过结构光方式来获取。
在这里插入图片描述

  • 立体视觉:通常为主要是双目和多目。双目视觉做通过三角法来进一步成像。
  • 主动视觉多一个投影仪做做补光对缺少纹理可以,为了减少摄像头数量,将光结构话,获取空间信息。
  • TOF法目前比较精确,通过相干性,精确度更高。

立体视觉

  • 相机成像模型:激光应用之前,RGB-D相机,激光是适合大场景。 单目立体视觉:用单个相机来恢复整体结构
    聚焦法相机可以自动调焦,通过固定的焦距,来计算物体距离的距离。这个有很多研究领域,应用在光学领域。
    离焦法可以计算出大概的位置,光斑的散播情况是什么样子的,通过主动去调整物体是在什么地方,比如调节是比较方便的,如相高等等都会发生改变 多目立体视觉:自动驾驶里面有很多多目,有些不组成立体视觉。有些可以通过不同焦距,可以获得不同结构上的,在机器人抓取的方面应用比较多,可以通过不同的焦距来判断深度。

    双目立体成像:
    在这里插入图片描述
    相机成像模型:
    凸透镜成像原理:光心、光轴、焦距、焦平面
    1 u + 1 v = 1 f \frac{1}{u}+\frac{1}{v}=\frac{1}{f} u1+v1=f1
    小孔成像可以通过相似三角形,通过三角形相似原理获得基本公式。相似三角形计算
    x f = X Z y f = Y Z \frac{x}{f}=\frac{X}{Z} \quad \frac{y}{f}=\frac{Y}{Z} fx=ZXfy=ZY
    通过小孔成像,小孔相机的方式来代替模型,将小孔的中心点来,凸透镜是道理缩小的相,在对称的面是正向的,小孔成像是非常正常的,没有畸变,真正的是有。可以通过光学系统的标定来去除。
    在这里插入图片描述
    在这里插入图片描述
    前面是矩阵的关系
    { x f = X Z y f = Y Z ⟹ { X = x Z f Y = y Z f \left\{\begin{array} { l } { \frac { x } { f } = \frac { X } { Z } } \\ { \frac { y } { f } = \frac { Y } { Z } } \end{array} \Longrightarrow \left\{\begin{array}{l} X=x \frac{\mathrm{Z}}{f} \\ Y=y \frac{\mathrm{Z}}{f} \end{array}\right.\right. { fx=ZXfy=ZY{ X=xfZY=yfZ

研究的是空间变换矩阵的向量。内参矩阵和外参矩阵
{ x = f X Z y = f Y Z ⟹ [ x y 1 ] = [ f X f Y Z ] = [ f f 1 ] [ 1 0 1 0 1 0 ] [ X Y Z 1 ] \left\{\begin{array}{l} x=\frac{f X}{Z} \\ y=\frac{f Y}{Z} \end{array} \Longrightarrow\left[\begin{array}{l} x \\ y \\ 1 \end{array}\right]=\left[\begin{array}{c} f X \\ f Y \\ Z \end{array}\right]=\left[\begin{array}{ccc} f & & \\ & f & \\ & & 1 \end{array}\right]\left[\begin{array}{cccc} 1 & & 0 \\ & 1 & & 0 \\ & 1 & 0 \end{array}\right]\left[\begin{array}{l} X \\ Y \\ Z \\ 1 \end{array}\right]\right. x=ZfXy=ZfY xy1 = fXfYZ = ff1 111000 XYZ1
我们刚才得到的是物体到相平面的矩阵关系,
在这里插入图片描述
世界坐标系
相机坐标系(相机本身的和世界坐标系有位姿关系)
像素坐标系(uv,相机成像的行号和列号dpi)
投影坐标系(相平面的坐标系,我们刚才)
自由度的概念:有多少个自由参数来影响我们的表达式

Z [ u v 1 ] u = x s x + c x ⟹ [ f x X + c x Z f y Y + c y Z Z ] = [ f x c x f y c y 1 ] [ 1 0 1 0 1 ] [ X Y Z 1 ] Z\left[\begin{array}{l} u \\ v \\ 1 \end{array}\right]_{u=\frac{x}{s_{x}}+c_{x}}^{\Longrightarrow}\left[\begin{array}{c} f_{x} X+c_{x} Z \\ f_{y} Y+c_{y} Z \\ Z \end{array}\right]=\left[\begin{array}{ccc} f_{x} & & c_{x} \\ & f_{y} & c_{y} \\ & 1 \end{array}\right]\left[\begin{array}{llll} 1 & & & 0 \\ & 1 & & 0 \\ & &1 & \end{array}\right]\left[\begin{array}{l} X \\ Y \\ Z \\ 1 \end{array}\right] Z uv1 u=sxx+cx fxX+cxZfyY+cyZZ = fxfy1cxcy 11100 XYZ1

双目视觉是利用视差原理计算深度。两幅图片因为相机视角不同带来的图像的差别构成视差

  • 首先需要对双目相机进行标定,得到两个相机的内外参数、单应矩阵。

  • 根据标定结果对原始图像校正,校正后的两张图像位于同一平面且互相平行。

  • 对校正后的两张图像根据极线约束进行像素点匹配。

  • 根据匹配结果计算每个像素的深度,从而获得深度图。
    基本流程:正畸-匹配-计算

  • 理想情况:左右相机内参相同且像平面共面
    在这里插入图片描述
     depth  − f b − ( u L − u R b ) =  depth  b ⇓  depth  = b f Δ u Δ u = u L − u R  视差  \begin{aligned} &\frac{\text { depth }-f}{b-\left(u L-\frac{u R}{b}\right)}=\frac{\text { depth }}{b} \\ &\Downarrow \\ &\text { depth }=\frac{b f}{\Delta u} \quad \Delta u=u L-u R \text { 视差 } \end{aligned} b(uLbuR) depth f=b depth  depth =ΔubfΔu=uLuR 视差 
    P(X,Y,Z)

非理想情况:左右相机像平面不共面,甚至相机内参不同的
图像校正+极线约束(查找)
滑动搜索框

左图x,y位置像素和右图x,y,d位置像素的差异计算公式

像素差绝对值和(SAD):
f ( x , y , d ) = ∑ d x = − W w ∑ d y = − W W ∣ I L ( x + d x ‾ , y + d y ) − I R ( x − d + d x , y + d y ) ∣ f(x, y, d)=\sum_{d_{x}=-W}^{w} \sum_{d_{y}=-W}^{W}\left|I_{L}\left(\underline{x+d_{x}}, y+d_{y}\right)-I_{R}\left(x-d+d_{x}, y+d_{y}\right)\right| f(x,y,d)=dx=Wwdy=WW IL(x+dx,y+dy)IR(xd+dx,y+dy)
像素差平方和 (SSD):
f ( x , y , d ) = ∑ d x = − W W ∑ d y = − W W ( I L ( x + d x , y + d y ) − I R ( x − d + d x , y + d y ) ) 2 f(x, y, d)=\sum_{d_{x}=-W}^{W} \sum_{d_{y}=-W}^{W}\left(I_{L}\left(x+d_{x}, y+d_{y}\right)-I_{R}\left(x-d+d_{x}, y+d_{y}\right)\right)^{2} f(x,y,d)=dx=WWdy=WW(IL(x+dx,y+dy)IR(xd+dx,y+dy))2
对边缘不友好,滑动窗口大小对效果很有影响

不适用于单调缺乏纹理的场景。因为双目视觉根据视觉特征进行图像匹配,所以对于缺乏视觉特征的场景(如天空、白墙、沙漠等)会出现匹配困难甚至匹配失败
评价算法好坏的几个方面:对边界处深度的估计、无纹理地方的估计、渐变面的深度估计、遮掩地方的估计、还有计算时间和内存

重点是如何构建边缘,和匹配方程来估计深度。
主动投影:
在这里插入图片描述

  1. 利用投影在物体上的图案,帮助两个相机计算双目匹配
  2. 有多种可能的投影图案,一个方案是使用伪随机散斑

在这里插入图片描述

点结构光
使用单个点结构光(e.g.激光点)扫描整个对象。传感器检测物体反射的结构光,使用三角测量法,计算从物体到扫描仪的距离。
线结构光
使用三角测量法,利用投影仪在物体投射一系列结构化线束。通过检测光线的边缘,计算出从扫描仪到物体表面的距离
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

  • 投影面结构光到物体表面,需要对面结构光进行编码,知道每个面结构光中的点与所成像中像素的对应关系,然后进行计算
    - 直接编码,时分复用,空分复用
    在这里插入图片描述
    飞行时间TOF法:
    在这里插入图片描述脉冲法
    距离的时域检测,通过估计光在被物体反射后从照明器传播到相机所花费的时间来计算。

相位法
距离的频域检测,根据发射光与反射光的相位之间的相位延迟来计算飞行时间。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
流程:校正-计算匹配(得真实的坐标值)-查找得到真实的RGB-D信息。
结构光也有双相机+投影的模式来进行投影的模式。输出,点云等。

2、三维信息的表征形式

在这里插入图片描述
对于图像的形式,表征形式是比较单一的。在三维的是觉得。不同是里面有不同多样的表征形式来表现的。最常用的是点云细分曲面、参数化曲面、隐式曲面和面元Mesh。
但是三维机构是依赖于传感器,处理和编辑。
三维表征:

  • 点云
    P = { p 0 , … , p N ∣ p i ∈ R 3 } P=\left\{p_{0}, \ldots, p_{N} \mid p_{i} \in \mathbb{R}^{3}\right\} P={ p0,,pNpiR3}
    点云是点组成的集合,基本组成是(xyz)容易处理、编辑
    可以转化到多种表征:面元、隐式表面、参数化表面
    高效的点云处理和建模需要空间分区数据结构,例如点云的邻域。
    点云的不规则、稀疏性、局部性

  • 参数化曲线曲面

参数化曲线曲面:

f : X → Y , X ⊆ R m , Y ⊆ R n f: X \rightarrow Y, X \subseteq \mathbb{R}^{m}, Y \subseteq \mathbb{R}^{n} f:XY,XRm,YRn
平面曲线: m = 1 , n = 2 \quad m=1, n=2 m=1,n=2
s ( t ) = ( x ( t ) , y ( t ) ) s(t)=(x(t), y(t)) s(t)=(x(t),y(t))
空间曲线: m = 1 , n = 3 \quad m=1, n=3 m=1,n=3
s ( t ) = ( x ( t ) , y ( t ) , z ( t ) ) s(t)=(x(t), y(t), z(t)) s(t)=(x(t),y(t),z(t))
空间曲面: m = 2 , n = 3 m=2, n=3 m=2,n=3
f ( u , v ) = ( x ( u , v ) , y ( u , v ) , z ( u , v ) ) f(u, v)=(x(u, v), y(u, v), z(u, v)) f(u,v)=(x(u,v),y(u,v),z(u,v))
参数化曲线:
贝塞尔曲线,样条线:
s ( t ) = ∑ i = 0 n p i B i n ( t ) B i n ( t ) = ( n i ) t i ( 1 − t ) n − i s(t)=\sum_{i=0}^{n} \mathbf{p}_{i} B_{i}^{n}(t) \quad B_{i}^{n}(t)=\left(\begin{array}{c} n \\ i \end{array}\right) t^{i}(1-t)^{n-i} s(t)=i=0npiBin(t)Bin(t)=(ni)ti(1t)ni

参数化曲面:

曲线扣描:
s ( u , v ) = ∑ i , j p i , j B i ( u ) B j ( v ) s(u, v)=\sum_{i, j} \mathbf{p}_{i, j} B_{i}(u) B_{j}(v) s(u,v)=i,jpi,jBi(u)Bj(v)
贝塞尔曲面:
s ( u , v ) = ∑ i = 0 m ∑ j = 0 n p i , j B i m ( u ) B j n ( v ) s(u, v)=\sum_{i=0}^{m} \sum_{j=0}^{n} \mathbf{p}_{i, j} B_{i}^{m}(u) B_{j}^{n}(v) s(u,v)=i=0mj=0npi,jBim(u)Bjn(v)
容易生成曲线或者曲面上的点
参数分离,容易分析 ( x , y , z ) (x, y, z) (x,y,z)
缺点:
难以确定内部外部空间
难以判断点是否在曲面曲线上
难生成非常复杂的覀线曲面

  • 隐式曲线曲面

显式曲面: 形如 z = f ( x , y ) z=f(x , y) z=f(xy)
隐式曲面: 形如 F ( x , y , z ) = 0 F(x, y, z)=0 F(x,y,z)=0
水平集 (Level-set) 函数: f : R m → R f: \mathbb{R}^{m} \rightarrow \mathbb{R} f:RmR
平面曲线: S = { x ∈ R 2 ∣ f ( x ) = 0 } S=\left\{x \in \mathbb{R}^{2} \mid f(x)=0\right\} S={ xR2f(x)=0}
空间曲面: S = { x ∈ R 3 ∣ f ( x ) = 0 } S=\left\{x \in \mathbb{R}^{3} \mid f(x)=0\right\} S={ xR3f(x)=0}
空间分区: { x ∈ R m ∣ f ( x ) > 0 } \left\{x \in \mathbb{R}^{m} \mid f(x)>0\right\} { xRmf(x)>0} 外部
{ x ∈ R m ∣ f ( x ) = 0 } \left\{x \in \mathbb{R}^{m} \mid f(x)=0\right\} { xRmf(x)=0} 曲面/曲线
{ x ∈ R m ∣ f ( x ) < 0 } \left\{x \in \mathbb{R}^{m} \mid f(x)<0\right\} { xRmf(x)<0} 内部
优点:
容易确定内部外部空间
容易确定点是否在曲线曲面上
缺点:
难以生成曲线曲面上的点
不适合实时渲染

  • 多边形面元
    在这里插入图片描述

量化误差可控
应用于任意拓扑结构
支持动态调整
可以利用GPU高效运算

多边形面元vs三角形面元(每个面是三角形)
顶点: v 0 , v 1 , … , v n − 1 v_{0}, v_{1}, \ldots, v_{n-1} v0,v1,,vn1
边: ( v 0 , v 1 ) ‾ , … , ( v n − 2 , v n − 1 ) } \left.\quad \overline{\left(v_{0}, v_{1}\right)}, \ldots,\left(v_{n-2}, v_{n-1}\right)\right\} (v0,v1),,(vn2,vn1)}
闭合性: v 0 = v n − 1 v_{0}=v_{n-1} v0=vn1
共面性: 所有的页点在一个平面
单一性: 不存在交叉
多边形面元:有闭合的、单一的多边形Q:组成的有限集M
在M中,任意两个多边形的交点要么为空,要么是一个顶点或者一条边
M=<V顶点,E面,F边>
常用算法:Delaunay三角部分准则、Bowyer-Watson算法,SDF算法+三角剖分

  • 体素

无序点云有序化
空间体素化,占用格点 0,1
快速检测空间点是否被占据
体像素之间的逻辑运算
运算速度快但存储效率很低,特别在深度学习模型中问题突出

深度学习中的三维表征

在这里插入图片描述
在这里插入图片描述

3、点云的基本特征和描述

数据与特征决定了机器学习的上限,而后面的模型/算法/参数只是来逼近这个上限
刚体变换(rigid transformations)
–即三维旋转和三维平移变化不会影响特征向量F估计,即特征向量具有平移旋转不变性
改变采样密度(varying sampling density)
-原则上,一个局部表面小块的采样密度无论是大还是小,都应该有相同的特征向量值,即特征向量具有抗密度干扰性;
噪音(noise)
数据中有轻微噪音的情况下,点特征表示在它的特征向量中必须保持相同或者及其相似的值,即特征向量对点云噪声具有鲁棒性。
点云的基本特征:
单点特
点云的基本特征:
· 按照特征的物理属性,可以将特征分为:几何域,强度域
· 按照特征的空间尺度,可以分为:单点特征,局部特征,全局特征

4、三维空间变换

猜你喜欢

转载自blog.csdn.net/weixin_44497198/article/details/125557482
今日推荐