概述: 立体视觉是一种计算机视觉技术,其目的是从两幅或两幅以上的图像中推理出图像中的每个像素点的深度信息。
原理: 在二维图像中,只有宽高两个维度的信息,而如何辨识远近的深度信息,则是仿生模拟了人眼的“视差”的原理,由于我们的左眼和右眼观察真实的物体时,成像是不同的,大脑利用了左右眼之间的图像差异,辨识了物体的远近。
传统单目系统: 生成真实世界的映像,缺乏深度信息。
双目系统: 借鉴人眼的“视差”原理,能够获得深度信息。
推算过程: 相似三角形 :△Ppp’~△POROT
f为焦距,B为基线,XR与XT也是可以获取的值,w为双目镜头宽度,也为已知量。
视差图像的意义: “视差即为XR-XT,记为D”
视差图像就是模拟人眼,将左眼与右眼所看到的不同信息整合对应起来,以试图获取深度信息。
概念: 点云是在同一空间参考系下表达目标空间分布和目标表面特性的海量点集合,在获取物
体表面每个采样点的空间坐标后,得到的是点的集合,称之为“点云”(Point Cloud)。
内容: 根据激光测量原理得到的点云,包括三维坐标(XYZ)和激光反射强度(Intensity),
强度信息与目标的表面材质、粗糙度、入射角方向,以及仪器的发射能量,激光波长有关。
根据摄影测量原理得到的点云,包括三维坐标(XYZ)和颜色信息(RGB)。
结合激光测量和摄影测量原理得到点云,包括三维坐标(XYZ)、激光反射强度(Intensity)和颜色
信息(RGB)。
与三维图像的联系: 点云数据是一种三维模型,是三维图像信息的一种表现形式,可以用来表达三维图像;而三维图像是一种特殊的信息表达,特征是表达的空间中有三个维度的数据,三维图像是对一类信息的统称,信息还需要有具体的表现形式,其表现形式包括:深度图(以灰度表达物体与相机的距离),几何模型(由CAD软件建立),点云模型(所有逆向工程设备都将物体采样成点云)。
低层次处理方法:
中层次滤波方法:
分割:区域生长、Ransac线面提取、全局优化平面提取、K-Means、Normalize Cut(Context based、3D Hough Transform(线面提取)、连通分析)
分类:基于点的分类、基于分割的分类、基于深度学习的分类(PointNet、OctNet)
高层次处理方法:
Spin image是基于点云空间分布的经典特征描述方法。Spin image的核心思想是将一定区域的点云分布转换成二维的spin image,然后对场景和模型的spin images进行相似性度量。
生成Spin Image的步骤:
如下图,P为三维网格某顶点p的切面,n为p点的单位法向量,x是p附近的三维网格上的另外一个顶点,α为x点在切面P上的投影与点p的距离,β为点x与切面P的垂直距离,则取点p与n的方法组合为一个定向点(Oriented point)。
分辨率: 指的是二维网格也即二维图像像素的实际尺寸,使用和三维网格相近的尺寸比较合适,因此通常是取三维网格所有边的平均值来作为spin image的每个网格的尺寸,通常会把网格的长和宽定义成相等,即边长。边长的计算公式如下:
r = 1 N ∑ i = 1 N ∣ e i ∣ r=\frac{1}{N}\sum_{i=1}^{N}|e_i| r=N1i=1∑N∣ei∣
大小: 也即spin image的行数和列数,两者一般也相等。可以参考的大小为10*10或20*20等。
support angle: 即法向量夹角的大小限制。空间中顶点的法向量与创建圆柱坐标系所选点法向量之间的夹角。
可以想象小鸭身上涂有颜料,spin image就像一个纸板,旋转去粘这些颜料,当然,粘到的点会有重叠
当一个点落入网格(i,j)中时会被双线性插值分散到(i,j)、(i,j+1)、(i+1,j)、(i+1,j+1)四个网格中
上式的i,j的求法,
i = ⌊ W 2 − β b ⌋ i = \lfloor\frac{\frac{W}{2} - \beta}{b}\rfloor i=⌊b2W−β⌋
j = ⌊ α b ⌋ j=\lfloor\frac{\alpha}{b}\rfloor j=⌊bα⌋
经过以上步骤,就获得了spin image
support angle参数作用:
这个参数指的是空间中的顶点(小节首的x点)的法向量与创建圆柱坐标系所选点(小节首的p点)法向量之间的夹角,大于此角度的不参与spin image的生成。
意义:对角度限制之后,那些相当于切面的“凹点(大于90°)”被剔除,保留了主要信息,简化了后续的计算量。一般设置为60~90°,根据需要设置,提取自己想要的主要信息,主要特征。
三维重建包含三个方面,基于SFM的运动恢复结构,基于Deep learning的深度估计和结构重建,以及基于RGB-D深度摄像头的三维重建。
概述:
SfM(Structure From Motion),是一个估计相机参数及三维点位置的问题。主要基于多视觉几何原理,用于从运动中实现3D重建,也就是从无时间序列的2D图像中推算三维信息,是计算机视觉学科的重要分支。广泛应用于AR/VR,自动驾驶等领域。虽然SFM主要基于多视觉几何原理,随着CNN的在二维图像的积累,很多基于CNN的2D深度估计取得一定效果,用CNN探索三维重建也是不断深入的课题。
发展:
深度学习方法呈现上升趋势,但是传统基于多视几何方法热情不减,实际应用以多视几何为主,深度学习的方法离实用还有一定的距离。从二维图像中恢复三维场景结构是计算机视觉的基本任务,广泛应用于3D导航、3D打印、虚拟游戏等
一个基本的SfM pipeline描述:
根据SfM过程中图像添加顺序的拓扑结构,SfM方法可以分为:
个人学习笔记,仅交流学习,转载请注明出处!