一种基于区域配准的深度点云三维重建方法与流程

文档序号:11145000阅读:来源:国知局

技术特征:

1.一种基于区域配准的深度点云三维重建方法,其特征在于,该方法包括以下具体步骤:步骤1:对彩色图像进行区域分割

将彩色图像每个像素初始化为图G的顶点,像素之间的颜色差异初始化为顶点之间的边权值;计算所有像素之间的颜色差异,计为图G的边权值h,按照公式(1)计算:

<mrow> <msub> <mi>h</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> </msub> <mo>=</mo> <msqrt> <mrow> <msup> <mrow> <mo>(</mo> <msub> <mi>r</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>r</mi> <mi>j</mi> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>g</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>g</mi> <mi>j</mi> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>b</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>b</mi> <mi>j</mi> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> </mrow> </msqrt> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow>

其中,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)):

<mrow> <mi>A</mi> <mrow> <mo>(</mo> <mi>u</mi> <mo>(</mo> <mi>S</mi> <mo>)</mo> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mn>1</mn> <mrow> <mo>|</mo> <mi>u</mi> <mrow> <mo>(</mo> <mi>S</mi> <mo>)</mo> </mrow> <mo>|</mo> </mrow> </mfrac> <msub> <munder> <mo>&Sigma;</mo> <mrow> <mi>x</mi> <mo>&Element;</mo> <mi>u</mi> <mo>(</mo> <mi>S</mi> </mrow> </munder> <mo>)</mo> </msub> <mrow> <mo>(</mo> <mi>x</mi> <mo>-</mo> <mi>c</mi> <mo>(</mo> <mi>S</mi> <mo>)</mo> <mo>)</mo> </mrow> <msup> <mrow> <mo>(</mo> <mi>x</mi> <mo>-</mo> <mi>c</mi> <mo>(</mo> <mi>S</mi> <mo>)</mo> <mo>)</mo> </mrow> <mi>T</mi> </msup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>3</mn> <mo>)</mo> </mrow> </mrow>

其中,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

<mrow> <msub> <mi>c</mi> <mrow> <mi>s</mi> <mi>m</mi> <mi>o</mi> <mi>o</mi> <mi>t</mi> <mi>h</mi> </mrow> </msub> <mo>=</mo> <mfrac> <mrow> <mi>max</mi> <mo>{</mo> <mo>|</mo> <mo>|</mo> <mi>N</mi> <mrow> <mo>(</mo> <msub> <mi>S</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> <mo>&CenterDot;</mo> <mrow> <mo>(</mo> <mi>c</mi> <mo>(</mo> <msub> <mi>S</mi> <mi>i</mi> </msub> <mo>)</mo> <mo>-</mo> <mi>c</mi> <mo>(</mo> <msub> <mi>S</mi> <mi>j</mi> </msub> <mo>)</mo> <mo>)</mo> </mrow> <mo>|</mo> <mo>|</mo> <mo>,</mo> <mo>|</mo> <mo>|</mo> <mi>N</mi> <mrow> <mo>(</mo> <msub> <mi>S</mi> <mi>j</mi> </msub> <mo>)</mo> </mrow> <mo>&CenterDot;</mo> <mrow> <mo>(</mo> <mi>c</mi> <mo>(</mo> <msub> <mi>S</mi> <mi>i</mi> </msub> <mo>)</mo> <mo>-</mo> <mi>c</mi> <mo>(</mo> <msub> <mi>S</mi> <mi>j</mi> </msub> <mo>)</mo> </mrow> <mo>)</mo> <mo>|</mo> <mo>|</mo> <mo>}</mo> </mrow> <mrow> <mo>|</mo> <mo>|</mo> <mi>N</mi> <mrow> <mo>(</mo> <msub> <mi>S</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> <mo>&CenterDot;</mo> <mi>N</mi> <mrow> <mo>(</mo> <msub> <mi>S</mi> <mi>j</mi> </msub> <mo>)</mo> </mrow> <mo>|</mo> <mo>|</mo> </mrow> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>4</mn> <mo>)</mo> </mrow> </mrow>

其中||·||表示数量积计算,N(Si)与N(Sj)是两个区域计算得到的最小的特征向量;如果两个区域的相似度csmooth小于阈值常数cthod,相邻区域Si、Sj将合并成为新区域;其中cthod设为0.02m;对相邻时刻所有区域都进行相似度计算和合并后,得到相邻时刻两组合并后的区域集合;

步骤3:匹配相邻时刻的两组区域,对所有匹配的区域所对应的点云进行三维配准

从时刻tk的区域集合中取一块区域Sm,再从下一时刻tk+1的区域集合中取一块区域Sn,组成区域对(Sm,Sn);然后按照公式(5),计算Sm与Sn之间的空间位置关系rmn

<mrow> <msub> <mi>r</mi> <mrow> <mi>m</mi> <mi>n</mi> </mrow> </msub> <mo>=</mo> <msub> <mi>w</mi> <mrow> <mi>m</mi> <mi>n</mi> </mrow> </msub> <msub> <mi>d</mi> <mrow> <mi>m</mi> <mi>n</mi> </mrow> </msub> <mfrac> <mrow> <mo>|</mo> <mo>|</mo> <mi>N</mi> <mrow> <mo>(</mo> <msub> <mi>S</mi> <mi>m</mi> </msub> <mo>)</mo> </mrow> <mo>|</mo> <mo>|</mo> <mo>&CenterDot;</mo> <mo>|</mo> <mo>|</mo> <mi>N</mi> <mrow> <mo>(</mo> <msub> <mi>S</mi> <mi>n</mi> </msub> <mo>)</mo> </mrow> <mo>|</mo> <mo>|</mo> </mrow> <mrow> <mo>|</mo> <mo>|</mo> <mi>N</mi> <mrow> <mo>(</mo> <msub> <mi>S</mi> <mi>m</mi> </msub> <mo>)</mo> </mrow> <mo>&CenterDot;</mo> <mi>N</mi> <mrow> <mo>(</mo> <msub> <mi>S</mi> <mi>n</mi> </msub> <mo>)</mo> </mrow> <mo>|</mo> <mo>|</mo> </mrow> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>5</mn> <mo>)</mo> </mrow> </mrow>

其中,dmn为两个点云区域之间所有最临近点对的平均欧氏距离,按照公式(6)计算;

<mrow> <msub> <mi>d</mi> <mrow> <mi>m</mi> <mi>n</mi> </mrow> </msub> <mo>=</mo> <mfrac> <mn>1</mn> <mrow> <mi>min</mi> <mo>{</mo> <mo>|</mo> <mi>u</mi> <mrow> <mo>(</mo> <msub> <mi>S</mi> <mi>m</mi> </msub> <mo>)</mo> </mrow> <mo>|</mo> <mo>,</mo> <mo>|</mo> <mi>u</mi> <mrow> <mo>(</mo> <msub> <mi>S</mi> <mi>n</mi> </msub> <mo>)</mo> </mrow> <mo>|</mo> <mo>}</mo> </mrow> </mfrac> <munder> <munder> <mo>&Sigma;</mo> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mi>m</mi> </msub> <mo>,</mo> <msub> <mi>y</mi> <mi>m</mi> </msub> <mo>,</mo> <msub> <mi>z</mi> <mi>m</mi> </msub> <mo>)</mo> <mo>&Element;</mo> <mi>u</mi> <mo>(</mo> <msub> <mi>S</mi> <mi>m</mi> </msub> <mo>)</mo> </mrow> </munder> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mi>n</mi> </msub> <mo>,</mo> <msub> <mi>y</mi> <mi>n</mi> </msub> <mo>,</mo> <msub> <mi>z</mi> <mi>n</mi> </msub> <mo>)</mo> <mo>&Element;</mo> <mi>u</mi> <mo>(</mo> <msub> <mi>S</mi> <mi>n</mi> </msub> <mo>)</mo> </mrow> </munder> <msqrt> <mrow> <msup> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mi>m</mi> </msub> <mo>-</mo> <msub> <mi>x</mi> <mi>n</mi> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>y</mi> <mi>m</mi> </msub> <mo>-</mo> <msub> <mi>y</mi> <mi>n</mi> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>z</mi> <mi>m</mi> </msub> <mo>-</mo> <msub> <mi>z</mi> <mi>n</mi> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> </mrow> </msqrt> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>6</mn> <mo>)</mo> </mrow> </mrow>

其中,(xm,ym,zm)是u(Sm)上的任意点的三维坐标,(xn,yn,zn)是在u(Sn)上距离(xm,ym,zm)欧式距离最小的点的三维坐标;

wmn表示两个点云的重叠率,按照公式(7)进行计算;

<mrow> <msub> <mi>w</mi> <mrow> <mi>m</mi> <mi>n</mi> </mrow> </msub> <mo>=</mo> <mfrac> <msub> <mi>N</mi> <mi>w</mi> </msub> <mrow> <mi>min</mi> <mo>{</mo> <mo>|</mo> <mi>u</mi> <mrow> <mo>(</mo> <msub> <mi>S</mi> <mi>m</mi> </msub> <mo>)</mo> </mrow> <mo>|</mo> <mo>,</mo> <mo>|</mo> <mi>u</mi> <mrow> <mo>(</mo> <msub> <mi>S</mi> <mi>n</mi> </msub> <mo>)</mo> </mrow> <mo>|</mo> <mo>}</mo> </mrow> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>7</mn> <mo>)</mo> </mrow> </mrow>

其中,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;

<mrow> <mtable> <mtr> <mtd> <mrow> <mi>e</mi> <mrow> <mo>(</mo> <msub> <mi>S</mi> <mi>m</mi> </msub> <mo>)</mo> </mrow> <mo>&LeftArrow;</mo> <mi>e</mi> <mrow> <mo>(</mo> <msub> <mi>S</mi> <mi>m</mi> </msub> <mo>)</mo> </mrow> <mo>-</mo> <mi>min</mi> <mo>{</mo> <mi>e</mi> <mrow> <mo>(</mo> <msub> <mi>S</mi> <mi>m</mi> </msub> <mo>)</mo> </mrow> <mo>,</mo> <mi>e</mi> <mrow> <mo>(</mo> <msub> <mi>S</mi> <mi>n</mi> </msub> <mo>)</mo> </mrow> <mo>}</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>e</mi> <mrow> <mo>(</mo> <msub> <mi>S</mi> <mi>n</mi> </msub> <mo>)</mo> </mrow> <mo>&LeftArrow;</mo> <mi>e</mi> <mrow> <mo>(</mo> <msub> <mi>S</mi> <mi>n</mi> </msub> <mo>)</mo> </mrow> <mo>-</mo> <mi>min</mi> <mo>{</mo> <mi>e</mi> <mrow> <mo>(</mo> <msub> <mi>S</mi> <mi>m</mi> </msub> <mo>)</mo> </mrow> <mo>,</mo> <mi>e</mi> <mrow> <mo>(</mo> <msub> <mi>S</mi> <mi>n</mi> </msub> <mo>)</mo> </mrow> <mo>}</mo> </mrow> </mtd> </mtr> </mtable> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>8</mn> <mo>)</mo> </mrow> </mrow>

对所有区域对的点云进行权值计算,迭代更新所有点云的权值,最终得到包含所有区域对的预处理集合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

<mrow> <msub> <mi>T</mi> <mi>k</mi> </msub> <mo>=</mo> <mi>X</mi> <mo>&CenterDot;</mo> <mfenced open = "(" close = ")"> <mtable> <mtr> <mtd> <mrow> <mfrac> <mn>1</mn> <mrow> <munderover> <mo>&Sigma;</mo> <mrow> <mi>p</mi> <mo>=</mo> <mn>1</mn> </mrow> <msub> <mi>p</mi> <mi>k</mi> </msub> </munderover> <msub> <mi>w</mi> <mrow> <mi>k</mi> <mi>p</mi> </mrow> </msub> </mrow> </mfrac> <munderover> <mo>&Sigma;</mo> <mrow> <mi>p</mi> <mo>=</mo> <mn>1</mn> </mrow> <msub> <mi>p</mi> <mi>k</mi> </msub> </munderover> <msub> <mi>w</mi> <mrow> <mi>k</mi> <mi>p</mi> </mrow> </msub> <msub> <mi>T</mi> <mrow> <mi>k</mi> <mi>p</mi> </mrow> </msub> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mfrac> <mn>1</mn> <mrow> <munderover> <mo>&Sigma;</mo> <mrow> <mi>p</mi> <mo>=</mo> <mn>1</mn> </mrow> <msub> <mi>p</mi> <mi>k</mi> </msub> </munderover> <msub> <mi>d</mi> <mrow> <mi>k</mi> <mi>p</mi> </mrow> </msub> </mrow> </mfrac> <munderover> <mo>&Sigma;</mo> <mrow> <mi>p</mi> <mo>=</mo> <mn>1</mn> </mrow> <msub> <mi>p</mi> <mi>k</mi> </msub> </munderover> <msub> <mi>d</mi> <mrow> <mi>k</mi> <mi>p</mi> </mrow> </msub> <msub> <mi>T</mi> <mrow> <mi>k</mi> <mi>p</mi> </mrow> </msub> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>9</mn> <mo>)</mo> </mrow> </mrow>

其中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)计算;

<mrow> <msub> <mi>TSDF</mi> <mrow> <mi>k</mi> <mi>g</mi> </mrow> </msub> <mrow> <mo>(</mo> <mi>x</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mrow> <msub> <mi>TSDF</mi> <mrow> <mi>k</mi> <mo>-</mo> <mn>1</mn> <mo>,</mo> <mi>g</mi> </mrow> </msub> <mrow> <mo>(</mo> <mi>x</mi> <mo>)</mo> </mrow> <msub> <mi>W</mi> <mrow> <mi>k</mi> <mo>-</mo> <mn>1</mn> <mo>,</mo> <mi>g</mi> </mrow> </msub> <mrow> <mo>(</mo> <mi>x</mi> <mo>)</mo> </mrow> <mo>+</mo> <msub> <mi>tsdf</mi> <mrow> <mi>k</mi> <mi>g</mi> </mrow> </msub> <mrow> <mo>(</mo> <mi>x</mi> <mo>)</mo> </mrow> <msub> <mi>w</mi> <mrow> <mi>k</mi> <mi>g</mi> </mrow> </msub> <mrow> <mo>(</mo> <mi>x</mi> <mo>)</mo> </mrow> </mrow> <mrow> <msub> <mi>W</mi> <mrow> <mi>k</mi> <mo>-</mo> <mn>1</mn> <mo>,</mo> <mi>g</mi> </mrow> </msub> <mrow> <mo>(</mo> <mi>x</mi> <mo>)</mo> </mrow> <mo>+</mo> <msub> <mi>w</mi> <mrow> <mi>k</mi> <mi>g</mi> </mrow> </msub> <mrow> <mo>(</mo> <mi>x</mi> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>14</mn> <mo>)</mo> </mrow> </mrow>

将Wkg(x)和TSDFkg(x)存储在对应的栅格g中,进行下个栅格g+1的计算;当对所有时刻的栅格都计算了截断符号距离函数后,所有点云已被存储在栅格立方体中;然后使用移动立方体算法抽取等值面,绘制三维表面,得到立体模型。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1