发明名称 一种基于空间直线识别与匹配的多视角三维数据拼接方法
摘要 一种基于空间直线识别与匹配的多视角三维数据拼接方法,适用于具有明显棱边特征的数据多视角拼接,主要包括以下步骤:提取三维点云数据中的直线段;根据所提直线段间的位置和角度等固有约束关系实现不同视角下公共直线段的匹配;在直线段匹配的基础上找到不同视角下旋转不变的对应点,基于对应点获得最优全局姿态转换矩阵,实现多视角三维数据拼接。
申请公布号 CN102968400A 申请公布日期 2013.03.13
申请号 CN201210397752.7 申请日期 2012.10.18
申请人 北京航空航天大学 发明人 李旭东;赵慧洁;李伟;姜宏志
分类号 G06F17/10(2006.01)I 主分类号 G06F17/10(2006.01)I
代理机构 北京慧泉知识产权代理有限公司 11232 代理人 王顺荣;唐爱华
主权项 1.一种基于空间直线识别与匹配的多视角三维数据拼接方法,其特征在于:该方法具体步骤如下:步骤一:从原始点云数据中提取直线特征参数:首先根据点云数据的曲率大小找到属于线特征的点云,假设点云集合用P{(x<sub>1</sub>,y<sub>1</sub>,z<sub>1</sub>)…(x<sub>n</sub>,y<sub>n</sub>,z<sub>n</sub>)}表示,<img file="FDA00002273948600011.GIF" wi="157" he="46" />为坐标的均值,由均值构建矩阵<img file="FDA00002273948600012.GIF" wi="495" he="59" />则P的协方差矩阵:X=[P-N]<sup>T</sup>·[P-N]根据特征值以及特征向量的特性,X·α=λ·α,设λ<sub>1</sub>,λ<sub>2</sub>,λ<sub>3</sub>为X的特征值,且大小关系有λ<sub>1</sub>&lt;λ<sub>2</sub>&lt;λ<sub>3</sub>,则曲率的估计值为:<img file="FDA00002273948600013.GIF" wi="499" he="137" />根据曲率的大小分布设立阈值threth,则曲率估值大于threth的被认为是线特征点云;在提取的线特征点云的基础上,对线特征点云包含的直线参数进行求取,对线特征点云的特征值和特征向量分析,α<sub>1</sub>,α<sub>2</sub>,α<sub>3</sub>为λ<sub>1</sub>,λ<sub>2</sub>,λ<sub>3</sub>对应的特征向量,则α<sub>3</sub>就是点云的直线方向估计;将所有的点云的直线方向估计进行归一化得到<img file="FDA00002273948600014.GIF" wi="250" he="129" />将归一化后的向量在高斯向量球中进行三维映射,得到的高斯向量球中的点云聚类的中心认为是直线的方向,通过聚类分析得到各个聚类的中心,也就得到了点云中包含直线特征的所有可能方向;在获取三维直线的方向之后,再找到三维直线的空间位置就实现对三维直线的确定;沿着一条直线的方向投影到平面上,获得汇聚于一点的线特征点云聚类,由于可能存在平行的空间三维直线,因此汇聚平面上可能有超过一个的汇聚点;运用聚类分析方法得到各个聚类的中心,从而实现直线参数的获取;运用Household矩阵实现将线特征点云沿着自身方向往平面上进行投影,若直线的方向用向量表示为<img file="FDA00002273948600021.GIF" wi="298" he="83" /><img file="FDA00002273948600022.GIF" wi="176" he="135" />令<img file="FDA00002273948600023.GIF" wi="217" he="114" />则转换矩阵为R=I-2bb<sup>T</sup>,对于线特征点云集P,经过投影后的点云P'=R·P,如果人为的将P'的z轴坐标设为零,则得到在平面上投影结果;在平面范围内进行聚类分析得到聚类中心,则直线的投影位置得到,从而实现了对直线参数的确定;步骤二:实现不同视角相关直线的匹配:假设某个视角下有直线l<sub>1</sub>:(x<sub>1</sub>,y<sub>1</sub>,z<sub>1</sub>)过一点(a<sub>1</sub>,b<sub>1</sub>,c<sub>1</sub>),直线l<sub>2</sub>:(x<sub>2</sub>,y<sub>2</sub>,z<sub>2</sub>)过一点(a<sub>2</sub>,b<sub>2</sub>,c<sub>2</sub>),若:k<sub>1</sub>=a<sub>1</sub>(x<sub>2</sub>-x<sub>1</sub>)+b<sub>1</sub>(y<sub>2</sub>-y<sub>1</sub>)+c<sub>1</sub>(z<sub>2</sub>-z<sub>1</sub>)k<sub>2</sub>=a<sub>2</sub>(x<sub>2</sub>-x<sub>1</sub>)+b<sub>2</sub>(y<sub>2</sub>-y<sub>1</sub>)+c<sub>2</sub>(z<sub>2</sub>-z<sub>1</sub>)M=a<sub>1</sub>a<sub>2</sub>+b<sub>1</sub>b<sub>2</sub>+c<sub>1</sub>c<sub>2</sub>N=a<sub>1</sub><sup>2</sup>+b<sub>1</sub><sup>2</sup>+c<sub>1</sub><sup>2</sup>P=a<sub>2</sub><sup>2</sup>+b<sub>2</sub><sup>2</sup>+c<sub>2</sub><sup>2</sup>t=(k<sub>2</sub>·N-k<sub>1</sub>·M)/(M<sup>2</sup>-P·N)s=(k<sub>2</sub>·M-k<sub>1</sub>·P)/(M<sup>2</sup>-P·N)式中k1、k2、M、N、P、t、s是由直线l<sub>1</sub>:(x<sub>1</sub>,y<sub>1</sub>,z<sub>1</sub>),直线l<sub>2</sub>:(x<sub>2</sub>,y<sub>2</sub>,z<sub>2</sub>),点(a<sub>1</sub>,b<sub>1</sub>,c<sub>1</sub>),点(a<sub>2</sub>,b<sub>2</sub>,c<sub>2</sub>)数据组成的代数式的等价表示形式;则两条空间直线的距离dist=|x<sub>2</sub>-x<sub>1</sub>+s·(a<sub>2</sub>-a<sub>1</sub>),y<sub>2</sub>-y<sub>1</sub>+s·(b<sub>2</sub>-b<sub>1</sub>),z<sub>2</sub>-z<sub>1</sub>+s·(c<sub>2</sub>-c<sub>1</sub>)|两条空间直线的夹角:<maths num="0001"><![CDATA[<math><mrow><mi>angle</mi><mo>=</mo><mi>arccos</mi><mfrac><mrow><msub><mi>a</mi><mn>1</mn></msub><msub><mi>a</mi><mn>2</mn></msub><mo>+</mo><msub><mi>b</mi><mn>1</mn></msub><msub><mi>b</mi><mn>2</mn></msub><mo>+</mo><msub><mi>c</mi><mn>1</mn></msub><msub><mi>c</mi><mn>2</mn></msub></mrow><mrow><mn>2</mn><mo>|</mo><msup><msub><mi>a</mi><mn>1</mn></msub><mn>2</mn></msup><mo>+</mo><msup><msub><mi>b</mi><mn>1</mn></msub><mn>2</mn></msup><mo>+</mo><msup><msub><mi>c</mi><mn>1</mn></msub><mn>2</mn></msup><mo>|</mo><mo>&CenterDot;</mo><mo>|</mo><msubsup><mi>a</mi><mn>2</mn><mn>2</mn></msubsup><mo>+</mo><msubsup><mi>b</mi><mn>2</mn><mn>2</mn></msubsup><mo>+</mo><msubsup><mi>c</mi><mn>2</mn><mn>2</mn></msubsup><mo>|</mo></mrow></mfrac></mrow></math>]]></maths>两条空间直线的距离和夹角在空间变换过程中保持不变,根据向量和夹角的公式构建各条直线的描述向量:v<sub>line</sub>=[dist<sub>1</sub>…dist<sub>n</sub>;angle<sub>l</sub>…angle<sub>n</sub>]每条直线对应有不同的描述向量,由于夹角和距离同空间旋转没关系,不同视角下的相关直线的描述向量保持一致或近似,根据向量的相似性进行匹配,实现不同视角对应直线的匹配;步骤三:按照直线匹配关系找到空间变换对应点:互为异面直线的两条直线上存在两点,它们的连线和两条异面直线都垂直,它们间的距离为异面直线距离,由垂直关系可以知道两点具有唯一性,在不同视角下这样的点是对应点,假设某个视角下有直线l<sub>1</sub>:(x<sub>1</sub>,y<sub>1</sub>,z<sub>1</sub>)过一点(a<sub>1</sub>,b<sub>1</sub>,c<sub>1</sub>),直线l<sub>2</sub>:(x<sub>2</sub>,y<sub>2</sub>,z<sub>2</sub>)过一点(a<sub>2</sub>,b<sub>2</sub>,c<sub>2</sub>),同步骤三一样,若有:k<sub>1</sub>=a<sub>1</sub>(x<sub>2</sub>-x<sub>1</sub>)+b<sub>1</sub>(y<sub>2</sub>-y<sub>1</sub>)+c<sub>1</sub>(z<sub>2</sub>-z<sub>1</sub>)k<sub>2</sub>=a<sub>2</sub>(x<sub>2</sub>-x<sub>1</sub>)+b<sub>2</sub>(y<sub>2</sub>-y<sub>1</sub>)+c<sub>2</sub>(z<sub>2</sub>-z<sub>1</sub>)M=a<sub>1</sub>a<sub>2</sub>+b<sub>1</sub>b<sub>2</sub>+c<sub>1</sub>c<sub>2</sub>N=a<sub>1</sub><sup>2</sup>+b<sub>1</sub><sup>2</sup>+c<sub>1</sub><sup>2</sup>P=a<sub>2</sub><sup>2</sup>+b<sub>2</sub><sup>2</sup>+c<sub>2</sub><sup>2</sup>t=(k<sub>2</sub>·N-k<sub>1</sub>·M)/(M<sup>2</sup>-P·N)s=(k<sub>2</sub>·M-k<sub>1</sub>·P)/(M<sup>2</sup>-P·N)则对应点:p<sub>1</sub>=[x<sub>1</sub>+s·a<sub>1</sub>,y<sub>1</sub>+s·b<sub>1</sub>,z<sub>1</sub>+s·c<sub>1</sub>]p<sub>2</sub>=[x<sub>2</sub>+s·a<sub>2</sub>,y<sub>2</sub>+s·b<sub>2</sub>,z<sub>2</sub>+s·c<sub>2</sub>]p<sub>1</sub>、p<sub>2</sub>表示为两条异面直线之间的垂足;按照直线的匹配关系可以找到直线上的相关点p<sub>1</sub>p<sub>2</sub>,以及他们的不同视角下的对应点q<sub>1</sub>,q<sub>2</sub>,同理得到全部直线对应点对:P:{p<sub>1</sub>,p<sub>2</sub>,…p<sub>n</sub>},Q:{q<sub>1</sub>,q<sub>2</sub>,…q<sub>n</sub>},这样就将匹配直线拼接转化成为对应点对的拼接,步骤四:基于对应点计算不同视角之间转换矩阵,假设:P:{p<sub>1</sub>,p<sub>2</sub>,…p<sub>n</sub>},Q:{q<sub>1</sub>,q<sub>2</sub>,…q<sub>n</sub>}为对应的点对集,要得到最优的空间变换矩阵R,T,满足:<img file="FDA00002273948600041.GIF" wi="558" he="131" />运用SVD分解的方法对方程最优解进行计算:令<maths num="0002"><![CDATA[<math><mrow><mover><mi>p</mi><mo>&OverBar;</mo></mover><mo>=</mo><mfrac><mn>1</mn><mi>n</mi></mfrac><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><msub><mi>p</mi><mi>i</mi></msub><mo>,</mo><mover><mi>q</mi><mo>&OverBar;</mo></mover><mo>=</mo><mfrac><mn>1</mn><mi>n</mi></mfrac><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><msub><mi>q</mi><mi>i</mi></msub><mo>,</mo></mrow></math>]]></maths><maths num="0003"><![CDATA[<math><mrow><msup><mi>P</mi><mo>&prime;</mo></msup><mo>=</mo><mo>{</mo><msub><mi>p</mi><mn>1</mn></msub><mo>-</mo><mover><mi>p</mi><mo>&OverBar;</mo></mover><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><msub><mi>p</mi><mi>n</mi></msub><mo>-</mo><mover><mi>p</mi><mo>&OverBar;</mo></mover><mo>}</mo><mo>,</mo></mrow></math>]]></maths><maths num="0004"><![CDATA[<math><mrow><msup><mi>Q</mi><mo>&prime;</mo></msup><mo>:</mo><mo>{</mo><msub><mi>q</mi><mn>1</mn></msub><mo>-</mo><mi>q</mi><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><msub><mi>q</mi><mi>n</mi></msub><mo>-</mo><mover><mi>q</mi><mo>&OverBar;</mo></mover><mo>}</mo></mrow></math>]]></maths>则矩阵H=P′<sup>T</sup>·Q',进行奇异值分解[U,D,V]=SVD(H),则最终的空间变换矩阵为:R=V·U<sup>T</sup>,T=q-R·p上式中符号说明如下:R为旋转矩阵,T为平移矩阵,p为点集P中的任意点,q为点集Q中的任意点,H为点集P、Q运算组成的矩阵,U、D、V是对H奇异值分解得到的相应矩阵;用R,T作为变换关系将原始三维点云数据进行对准,则能够得到不同视角下点云数据的拼接结果。
地址 100191 北京市海淀区学院路37号