发明名称 基于惯性测量单元与RGB-D传感器的三维重建方法
摘要 本发明公开了一种基于惯性测量单元与RGB-D传感器的三维重建方法,用于解决现有基于RGB-D传感器的三维重建方法实时性差的技术问题。技术方案是首先采用SURF算法进行关键点的提取,接下来计算各个关键点处法向量,然后计算其三维快速点特征直方图FPFH描述子;其次通过惯性测量单元获得RGB-D传感器的粗略运动估计,将该粗略估计与由三维点云计算而来的运动估计通过算法处理得到较为精确的运动估计,然后将其作为ICP算法的初始值进行迭代计算;最终当检测到Loop Closure时,通过ELCH算法快速对全局构图进行优化。由于利用SURF算法寻找关键点,并采用三维快速点特征直方图FPFH特征作为关键点的特征描述子,提升了三维重构算法在特征提取时的速度;实时性强。
申请公布号 CN104463953A 申请公布日期 2015.03.25
申请号 CN201410631074.5 申请日期 2014.11.11
申请人 西北工业大学 发明人 孙树栋;钟尧;智睿瑞;韩青;郎浩
分类号 G06T17/00(2006.01)I 主分类号 G06T17/00(2006.01)I
代理机构 西北工业大学专利中心 61204 代理人 王鲜凯
主权项 一种基于惯性测量单元与RGB‑D传感器的三维重建方法,其特征在于包括以下步骤:步骤一、采用SURF算法进行关键点的提取,接下来采用基于局部表面拟合的方法计算各关键点处法向量,然后计算关键点的三维快速点特征直方图FPFH描述子<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mi>FPFH</mi><mrow><mo>(</mo><msub><mi>P</mi><mi>q</mi></msub><mo>)</mo></mrow><mo>=</mo><mi>SPFH</mi><mrow><mo>(</mo><msub><mi>P</mi><mi>q</mi></msub><mo>)</mo></mrow><mo>+</mo><mfrac><mn>1</mn><mi>k</mi></mfrac><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>k</mi></munderover><mfrac><mn>1</mn><msub><mi>&omega;</mi><mi>k</mi></msub></mfrac><mo>&CenterDot;</mo><mi>SPFH</mi><mrow><mo>(</mo><msub><mi>P</mi><mi>k</mi></msub><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000604977680000011.GIF" wi="1589" he="146" /></maths>其中,P<sub>q</sub>表示查询点,P<sub>k</sub>表示其邻近点,权重ω<sub>k</sub>表示查询点P<sub>q</sub>和其邻近点P<sub>k</sub>之间的距离;SPFH简化的点特征直方图的计算是依据这个点和它的K邻域点之间的一个元组得到的;步骤二、通过三轴陀螺仪和三轴加速度计获取一个粗略变换矩阵;首先获得三轴陀螺仪和三轴加速度计所测量RGB‑D传感器的XYZ三轴向的位移变化x、y和z以及三轴向的夹角变化α、β和γ;求得旋转矩阵R=R<sub>x</sub> R<sub>y</sub> R<sub>z</sub>,其中R<sub>x</sub>、R<sub>y</sub>以及R<sub>z</sub>分别为传感器绕X轴、Y轴和Z轴的旋转矩阵<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><msub><mi>R</mi><mi>x</mi></msub><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mi>cos</mi><mi>&alpha;</mi></mtd><mtd><mo>-</mo><mi>sin</mi><mi>&alpha;</mi></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mi>sin</mi><mi>&alpha;</mi></mtd><mtd><mi>cos</mi><mi>&alpha;</mi></mtd></mtr></mtable></mfenced><msub><mi>R</mi><mi>y</mi></msub><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><mi>cos</mi><mi>&beta;</mi></mtd><mtd><mn>0</mn></mtd><mtd><mi>sin</mi><mi>&beta;</mi></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mo>-</mo><mi>sin</mi><mi>&beta;</mi></mtd><mtd><mn>0</mn></mtd><mtd><mi>cos</mi><mi>&beta;</mi></mtd></mtr></mtable></mfenced><msub><mi>R</mi><mi>z</mi></msub><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><mi>cos</mi><mi>&gamma;</mi></mtd><mtd><mo>-</mo><mi>sin</mi><mi>&gamma;</mi></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mi>sin</mi><mi>&gamma;</mi></mtd><mtd><mi>cos</mi><mi>&gamma;</mi></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000604977680000012.GIF" wi="1869" he="233" /></maths>定义一个4阶的变换矩阵T如下:<maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><mi>T</mi><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd></mtd><mtd></mtd><mtd></mtd><mtd><mi>x</mi></mtd></mtr><mtr><mtd></mtd><mtd><mi>R</mi></mtd><mtd></mtd><mtd><mi>y</mi></mtd></mtr><mtr><mtd></mtd><mtd></mtd><mtd></mtd><mtd><mi>z</mi></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000604977680000013.GIF" wi="1292" he="311" /></maths>其次通过kd‑tree完成待配准点云集关键点与参考点云集关键点快速点特征直方图FPFH描述子的特征匹配;进行M次随机选点对<maths num="0004" id="cmaths0004"><math><![CDATA[<mrow><mi>M</mi><mo>=</mo><mfrac><mrow><mi>log</mi><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mi>p</mi><mo>)</mo></mrow></mrow><mrow><mi>log</mi><mrow><mo>(</mo><mn>1</mn><mo>-</mo><msup><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mi>&epsiv;</mi><mo>)</mo></mrow><mi>s</mi></msup><mo>)</mo></mrow></mrow></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>4</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000604977680000014.GIF" wi="1383" he="193" /></maths>其中,s为最少要选取点对的个数,ε为局内点的百分比,p是所需的匹配成功概率;通过每次随机选取的点对完成一个变换估计,接着通过扩展卡尔曼滤波算法将此变换与通过惯性测量单元所得到的变换T进行数据融合,得到一个融合后的变换T<sub>EKF</sub>;使用T<sub>EKF</sub>对参考点云集中的关键点进行坐标变换,并计算每一对匹配关键对之间的欧式距离<maths num="0005" id="cmaths0005"><math><![CDATA[<mrow><msub><mi>Dis</mi><mi>ij</mi></msub><mo>=</mo><msup><mrow><mo>[</mo><munderover><mi>&Sigma;</mi><mrow><mi>k</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>k</mi><mo>=</mo><mi>n</mi></mrow></munderover><msup><mrow><mo>(</mo><msub><mi>P</mi><mi>ik</mi></msub><mo>-</mo><msub><mi>P</mi><mi>jk</mi></msub><mo>)</mo></mrow><mn>2</mn></msup><mo>]</mo></mrow><mrow><mn>1</mn><mo>/</mo><mn>2</mn></mrow></msup><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>5</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000604977680000015.GIF" wi="1437" he="158" /></maths>其中,P为点云集中的点,Dis为点对间的距离;将距离Dis小于一定阈值的点对视为局内点对,剩余的点对视为局外点对,选取局内点对数最多的一次进行后续计算,通过局内点对进行N次估计,粗略估计变换T<sub>c</sub>;最终将获得的粗略估计变换T<sub>c</sub>与通过惯性测量单元所得到的变换T作用于其中一点云集,计算与另一点云集间的最小均方根,取使其中值较小的变换作为新的变换T<sub>c</sub>;步骤三、将T<sub>c</sub>作为ICP算法的初始值,避免算法局部收敛;将粗略变换T<sub>c</sub>作用于参考点云集关键点获得一个新的位置的参考关键点云集,其次利用ICP算法精确估计该参考关键点到待匹配关键点的坐标变换,方法如下:首先进行错误匹配点对的去除,然后通过剩余关键点估计坐标变换T<sub>i</sub>;对以上几步进行迭代直到满足任意以下条件时停止:1)迭代到达一定的次数N;2)本次计算得到的精确坐标变换T<sub>i</sub>与上次迭代得到的坐标变换T<sub>i</sub><sup>*</sup>之间的变化小于某一阈值;3)其均方根误差E(a)小于某一阈值<maths num="0006" id="cmaths0006"><math><![CDATA[<mrow><mi>E</mi><mrow><mo>(</mo><mi>a</mi><mo>)</mo></mrow><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>N</mi><mi>d</mi></msub></munderover><msub><mi>&omega;</mi><mi>i</mi></msub><munder><mi>min</mi><mi>j</mi></munder><msup><mi>&epsiv;</mi><mn>2</mn></msup><mrow><mo>(</mo><mo>|</mo><msub><mi>m</mi><mi>j</mi></msub><mo>-</mo><mi>T</mi><mrow><mo>(</mo><msub><mi>a</mi><mi>k</mi></msub><mo>;</mo><msub><mi>d</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>|</mo><mo>)</mo></mrow><mo>,</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>6</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000604977680000021.GIF" wi="1567" he="149" /></maths>式中,m<sub>j</sub>和d<sub>i</sub>分别为不同点云集中的点;最终得到精确坐标变换估计T=T<sub>i</sub>T<sub>c</sub>,利用该坐标变换完成对两个三维点云集的拼接;步骤四、当检测到Loop Closure时,通过ELCH算法快速对全局构图进行优化;计算相邻两节点v<sub>i</sub>与v<sub>j</sub>间边的协方差c<sub>i,j</sub>,通过ICP算法计算对Loop Closure检测到的两个节点进行处理得到一个坐标变换ΔX;然后通过如下方法将权重在每一个节点对之间进行分配:<maths num="0007" id="cmaths0007"><math><![CDATA[<mrow><msub><mi>w</mi><mi>i</mi></msub><mo>=</mo><msub><mi>w</mi><mi>s</mi></msub><mo>+</mo><mfrac><mrow><mi>d</mi><mrow><mo>(</mo><msub><mi>v</mi><mi>s</mi></msub><mo>,</mo><msub><mi>v</mi><mi>i</mi></msub><mo>)</mo></mrow></mrow><mrow><mi>d</mi><mrow><mo>(</mo><msub><mi>v</mi><mi>s</mi></msub><mo>,</mo><msub><mi>v</mi><mi>e</mi></msub><mo>)</mo></mrow></mrow></mfrac><mrow><mo>(</mo><msub><mi>w</mi><mi>e</mi></msub><mo>-</mo><msub><mi>w</mi><mi>s</mi></msub><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>7</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000604977680000022.GIF" wi="1438" he="153" /></maths>其中,w<sub>s</sub>与w<sub>e</sub>为环路开始与结束时的两个节点v<sub>s</sub>与v<sub>e</sub>的权重,w<sub>i</sub>为环路间节点的权重;d(v<sub>l</sub>,v<sub>k</sub>)表示从节点vl到vk所经过边的协方差c<sub>i,j</sub>的求和<maths num="0008" id="cmaths0008"><math><![CDATA[<mrow><mi>d</mi><mrow><mo>(</mo><msub><mi>v</mi><mi>l</mi></msub><mo>,</mo><msub><mi>v</mi><mi>k</mi></msub><mo>)</mo></mrow><mo>:</mo><mo>=</mo><munder><mi>&Sigma;</mi><mfenced open='' close=''><mtable><mtr><mtd><mi>edge</mi><mo>{</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>}</mo><mo>&Element;</mo><mi>Path</mi></mtd></mtr><mtr><mtd><msub><mi>v</mi><mi>l</mi></msub><msub><mi>tov</mi><mi>k</mi></msub></mtd></mtr></mtable></mfenced></munder><msub><mi>c</mi><mi>ij</mi></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>8</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000604977680000023.GIF" wi="1446" he="157" /></maths>最终通过以上权重分配完成对全局地图的初步优化后通过LUM算法求出最优解。
地址 710072 陕西省西安市友谊西路127号