1.一种基于区域配准的深度点云三维重建方法,其特征在于,该方法包括以下具体步骤:步骤1:对彩色图像进行区域分割
将彩色图像每个像素初始化为图G的顶点,像素之间的颜色差异初始化为顶点之间的边权值;计算所有像素之间的颜色差异,计为图G的边权值h,按照公式(1)计算:
其中,hij是像素点pi与pj之间的边权值,(ri,gi,bi)与(rj,gj,bj)分别是两个像素点的红绿蓝三个颜色值;为了进一步进行区域分割,先将图G中每一个顶点当作一个区域,然后根据公式(2)对每两个区域进行聚类分析,如果两个区域满足公式(2),那么将他们合并为一块新区域;
Dif(Ci,Cj)≤min(Int(Ci)+f/|Ci|,Int(Cj)+f/|Cj|) (2)
其中,Ci和Cj是待分割的两个区域,Dif(Ci,Cj)是连接两个区域Ci和Cj之间的最小的边权值,Int(Ci)和Int(Cj)分别为区域Ci和Cj包含的图所对应的最小生成树中最大的边权值;|Ci|和|Cj|分别是区域Ci和Cj中的像素点个数,f是分割的阈值参数,设为50;对所有像素点进行处理后,彩色图像被过分割成多个区域;
步骤2:对相似的过分割区域进行合并
首先,根据公式(3)计算每个区域的协方差矩阵A(u(S)):
其中,c(S)是区域S的中心点的三维坐标,u(S)是区域S对应的三维点云;|u(S)|为u(S)的顶点数量;x是点云上u(S)任意一个点的三维坐标;对A(u(S))进行矩阵的特征分解,得到的三个特征值从大到小分别为w1(S)、w2(S)、wn(S),对应的三个特征向量分别为T1(S)、T2(S)、N(S);
然后,对于图像中任意两个相邻区域Si,Sj,按照公式(4)计算它们之间的相似度csmooth:
其中||·||表示数量积计算,N(Si)与N(Sj)是两个区域计算得到的最小的特征向量;如果两个区域的相似度csmooth小于阈值常数cthod,相邻区域Si、Sj将合并成为新区域;其中cthod设为0.02m;对相邻时刻所有区域都进行相似度计算和合并后,得到相邻时刻两组合并后的区域集合;
步骤3:匹配相邻时刻的两组区域,对所有匹配的区域所对应的点云进行三维配准
从时刻tk的区域集合中取一块区域Sm,再从下一时刻tk+1的区域集合中取一块区域Sn,组成区域对(Sm,Sn);然后按照公式(5),计算Sm与Sn之间的空间位置关系rmn;
其中,dmn为两个点云区域之间所有最临近点对的平均欧氏距离,按照公式(6)计算;
其中,(xm,ym,zm)是u(Sm)上的任意点的三维坐标,(xn,yn,zn)是在u(Sn)上距离(xm,ym,zm)欧式距离最小的点的三维坐标;
wmn表示两个点云的重叠率,按照公式(7)进行计算;
其中,Nw是两个点云中欧式距离最小的点对距离小于dthod的点对数,其中dthod设为0.01m;
然后,对相邻两个时刻所有区域的点云进行权值初始化,具体地,区域Sm和Sn的权值e(Sm),e(Sn)分别初始化为Sm和Sn对应点云u(Sm)和u(Sn)的顶点个数占该时刻所有点云的顶点个数合的比例;如果rmn小于阈值rthod,那么将该组点云区域对(Sm,Sn)加入预处理集合M中,并分别按照公式(8)更新权值e(Sm),e(Sn),其中rthod设为0.02;
对所有区域对的点云进行权值计算,迭代更新所有点云的权值,最终得到包含所有区域对的预处理集合M;
进一步对预处理的区域对进行对应点云的几何三维配准;首先从M中取出一对区域,对这两块区域对应的三维点云分别进行几何特征提取;具体地,对点云u(Sm)和u(Sn)中的每个点分别计算FPFH特;对点云每个点周围距离小于R的点进行特征统计形成点特征直方图,其中特征统计包括对距离、角度的统计,R取值为0.5m;然后利用采样一致性初始配准算法计算物体的四阶变换矩阵,具体地,先在u(Sm)中寻找采样点,然后在另一个点云u(Sn)中查找与采样点FPFH特征相似的所有点,计算每个点对的四阶变换矩阵,选择其中误差最小的刚体变换矩阵Tkp作为最终变换矩阵;k表示第k时刻,p表示在预处理集合M中的第p对匹配区域;其中,采样一致性初始配准算法中的采样点之间的距离不应小于阈值dmin,设为0.1m;
步骤4:融合通过三维配准得到的所有区域的变换矩阵
对于同一个时刻k,将该时刻所有区域的变换矩阵Tkp融合成该时刻的完整变换矩阵Tk,假设时刻k总共有pk组区域对,按照公式(9)计算融合后的变换矩阵Tk;
其中X为权值矩阵,设为(0.70.3),Tkp是时刻k时的第p对区域点云配准得到的变换矩阵,wkp是时刻k时的第p对区域点云的重叠率,按照公式(7)进行计算,dkp是时刻k时的第p对区域点云的平均欧式距离,按照公式(8)进行计算;
步骤5:将不同时刻的深度点云进行点云融合与三维表面重建
将空间划分成1283个栅格立方体,将点云分布在栅格立方体中,然后计算每帧融合后每个栅格立方体的TSDF值;
为了计算每个栅格立方体中的截断符号距离函数,首先要计算每个栅格立方体中的符号距离函数sdfkg(x),k表示第k时刻,g表示第g个栅格立方体,sdfkg(x)代表着点云上任意一点x的符号距离函数,按照公式(10)进行计算:
sdfkg(x)=dis(vg,tk)-Dk (10)
其中,tk是相机光心在三维坐标系下的坐标,相机光心坐标设为(320,240),vg是栅格g在三维坐标系下的坐标,dis(vg,tk)表示栅格到光心的距离,Dk是图像中x对应的像素点所对应的深度值,由Kinect设备相机采集得到;如果sdfkg(x)大于0,tsdfkg(x)按照公式(11)计算,否则按照公式(12)计算:
tsdfkg(x)=min(1,sdfkg(x)/mtruncation) (11)
tsdfkg(x)=min(-1,sdfkg(x)/mtruncation) (12)
其中mtruncation为常量,取值为10;然后计算权重wtkg(x),初始值为1;Wkg(x)为迭代后的权重,计算公式如(13)所示;
Wkg(x)=Wk-1,g(x)+wtkg(x) (13)
最后记录迭代后的加权TSDF值,标记为TSDFkg(x),按照公式(14)计算;
将Wkg(x)和TSDFkg(x)存储在对应的栅格g中,进行下个栅格g+1的计算;当对所有时刻的栅格都计算了截断符号距离函数后,所有点云已被存储在栅格立方体中;然后使用移动立方体算法抽取等值面,绘制三维表面,得到立体模型。