发明名称 基于重采样方法和仿射聚类算法的点云简化处理方法
摘要 一种基于重采样方法和仿射聚类算法的点云简化处理方法,包括以下步骤:步骤1:设定简化目标点数目的阈值;步骤2:对初始点云D均匀采样获得其子点集SD,对子集SD中的每一个点搜索k最近邻近点;步骤3:利用步骤2获得的k最近邻近点计算SD中每一个点的曲率CV;步骤4:计算SD中点与点之间的相似度,得到相似度矩阵S;步骤5:运用AP聚类算法,S和CV作为AP算法输入,计算点间的代表度矩阵和适选度矩阵,依照迭代结果选出代表点,如代表点的数目D小于阈值,即D=D-SD,返回到步骤2;每次选出的代表点标号加入到同一个矩阵中,直到达到目标值得到最终点集FD。本发明简化计算、减少占用的内存容量、具有良好的有效性。
申请公布号 CN101650838A 申请公布日期 2010.02.17
申请号 CN200910102226.1 申请日期 2009.09.04
申请人 浙江工业大学 发明人 陈胜勇;李兰兰;管秋;刘盛;杜小艳;胡正周
分类号 G06T17/00(2006.01)I 主分类号 G06T17/00(2006.01)I
代理机构 杭州天正专利事务所有限公司 代理人 王 兵;王利强
主权项 1、一种基于重采样方法和仿射聚类算法的点云简化处理方法,其特征在于:所述点云简化处理方法包括以下步骤:步骤1:设定简化目标点数目的阈值;步骤2:对初始点云D均匀采样获得其子点集SD,对子集SD中的每一个点搜索k最近邻近点,即数据点q的k个最近的点:KNN(q)={|pi-q |≤|p-q|,pi∈D},pi(i=1,2...k)是点q的邻近点;步骤3:利用步骤2获得的k最近邻近点计算SD中每一个点的曲率CV,设点i有k个邻近点pik(k=1,2...k),k+1个点的坐标平均值为api,点i的协方差矩阵为C;相互关系表示如下:api=(pi1+pi2+...pik)/(k+1)<maths id="math0001" num="0001" ><math><![CDATA[ <mrow> <mi>C</mi> <mo>=</mo> <msup> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msub> <mi>p</mi> <mrow> <mi>i</mi> <mn>1</mn> </mrow> </msub> <mo>-</mo> <msub> <mi>ap</mi> <mi>i</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>p</mi> <mrow> <mi>i</mi> <mn>2</mn> </mrow> </msub> <mo>-</mo> <msub> <mi>ap</mi> <mi>i</mi> </msub> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>p</mi> <mi>ik</mi> </msub> <mo>-</mo> <msub> <mi>ap</mi> <mi>i</mi> </msub> </mtd> </mtr> </mtable> </mfenced> <mi>T</mi> </msup> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msub> <mi>p</mi> <mrow> <mi>i</mi> <mn>1</mn> </mrow> </msub> <mo>-</mo> <msub> <mi>ap</mi> <mi>i</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>p</mi> <mrow> <mi>i</mi> <mn>2</mn> </mrow> </msub> <mo>-</mo> <msub> <mi>ap</mi> <mi>i</mi> </msub> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>p</mi> <mi>ik</mi> </msub> <mo>-</mo> <msub> <mi>ap</mi> <mi>i</mi> </msub> </mtd> </mtr> </mtable> </mfenced> </mrow>]]></math></maths>C*=λ*V其中,C是一个对称的半正定矩阵,特征值为实值,V是协方差矩阵的特征向量,λ1,λ2,λ3是C的对应特征向量的特征值;取λi是最小特征值,用特征值来表示点i的曲率变化值:cvi=λ1/(λ1+λ2+λ3);步骤4:计算SD中点与点之间的相似度,得到相似度矩阵S,具体有:点i和点k的相似度标记为S(i,k),相似度能够反映两点间的亲密关系,相似度值选取两点之间距离平方的负值,如S(i,k)=-(||xi-xk||2+||yi-yk||2+||zi-zk||2) (1)(xi,yi,zi)为数据点i的三维坐标值;步骤5:运用AP聚类算法,S和CV作为AP算法输入,计算点间的代表度矩阵和适选度矩阵,具体有:对于任意点来说,计算代表度和适合度之和R+A:R(i,k)+A(i,k)=S(i,k)+A(i,k)-{A(i,j)+S(i,j)}.R+A的值表示点作为类代表点的有效性以及能够表征点被选中的概率;A(k,k)和R(k,k)的增长与偏向参数P即S(k,k)有关;引入了一个衰减因子λ进行迭代,加入此参数后,R,S,A三个矩阵之间关系变化为如下:<maths id="math0002" num="0002" ><math><![CDATA[ <mrow> <msup> <mi>R</mi> <mrow> <mo>(</mo> <mi>t</mi> <mo>)</mo> </mrow> </msup> <mrow> <mo>(</mo> <mi>i</mi> <mo>,</mo> <mi>k</mi> <mo>)</mo> </mrow> <mo>=</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <mi>&lambda;</mi> <mo>)</mo> </mrow> <mo>*</mo> <mo>{</mo> <mi>S</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>,</mo> <mi>k</mi> <mo>)</mo> </mrow> <mo>-</mo> <mi>max</mi> <mo>{</mo> <mi>A</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>,</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>+</mo> <mi>S</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>,</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>}</mo> <mo>}</mo> <mo>+</mo> <mi>&lambda;</mi> <mo>*</mo> <msup> <mi>R</mi> <mrow> <mo>(</mo> <mi>t</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> </msup> <mrow> <mo>(</mo> <mi>i</mi> <mo>,</mo> <mi>k</mi> <mo>)</mo> </mrow> </mrow>]]></math></maths><maths id="math0003" num="0003" ><math><![CDATA[ <mrow> <msup> <mi>A</mi> <mrow> <mo>(</mo> <mi>t</mi> <mo>)</mo> </mrow> </msup> <mrow> <mo>(</mo> <mi>i</mi> <mo>,</mo> <mi>k</mi> <mo>)</mo> </mrow> <mo>=</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <mi>&lambda;</mi> <mo>)</mo> </mrow> <mo>*</mo> <mo>{</mo> <mn>0</mn> <mo>,</mo> <mi>R</mi> <mrow> <mo>(</mo> <mi>k</mi> <mo>,</mo> <mi>k</mi> <mo>)</mo> </mrow> <mo>+</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>&NotElement;</mo> <mo>{</mo> <mi>i</mi> <mo>,</mo> <mi>k</mi> <mo>}</mo> </mrow> <mrow> <mi>j</mi> <mo>&NotEqual;</mo> <mi>k</mi> </mrow> </munderover> <mi>max</mi> <mo>{</mo> <mn>0</mn> <mo>,</mo> <mi>R</mi> <mrow> <mo>(</mo> <mi>j</mi> <mo>,</mo> <mi>k</mi> <mo>)</mo> </mrow> <mo>}</mo> <mo>}</mo> <mo>}</mo> <mo>+</mo> <mi>&lambda;</mi> <mo>*</mo> <msup> <mi>A</mi> <mrow> <mo>(</mo> <mi>t</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> </msup> <mrow> <mo>(</mo> <mi>i</mi> <mo>,</mo> <mi>k</mi> <mo>)</mo> </mrow> </mrow>]]></math></maths><maths id="math0004" num="0004" ><math><![CDATA[ <mrow> <msup> <mi>A</mi> <mrow> <mo>(</mo> <mi>t</mi> <mo>)</mo> </mrow> </msup> <mrow> <mo>(</mo> <mi>k</mi> <mo>,</mo> <mi>k</mi> <mo>)</mo> </mrow> <mo>=</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <mi>&lambda;</mi> <mo>)</mo> </mrow> <mo>*</mo> <mo>{</mo> <munder> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>&NotEqual;</mo> <mi>k</mi> </mrow> </munder> <mi>max</mi> <mo>{</mo> <mn>0</mn> <mo>,</mo> <mi>R</mi> <mrow> <mo>(</mo> <mi>j</mi> <mo>,</mo> <mi>k</mi> <mo>)</mo> </mrow> <mo>}</mo> <mo>}</mo> <mo>+</mo> <mi>&lambda;</mi> <mo>*</mo> <msup> <mi>A</mi> <mrow> <mo>(</mo> <mi>t</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> </msup> <mrow> <mo>(</mo> <mi>k</mi> <mo>,</mo> <mi>k</mi> <mo>)</mo> </mrow> </mrow>]]></math></maths>依照迭代结果选出代表点,如代表点的数目D小于阈值,即D=D-SD,返回到步骤2;每次选出的代表点标号加入到同一个矩阵中,直到达到目标值得到最终点集FD。
地址 310014浙江省杭州市下城区朝晖六区