CN107274423A - 一种基于协方差矩阵和投影映射的点云特征曲线提取方法 - Google Patents
一种基于协方差矩阵和投影映射的点云特征曲线提取方法 Download PDFInfo
- Publication number
- CN107274423A CN107274423A CN201710389006.6A CN201710389006A CN107274423A CN 107274423 A CN107274423 A CN 107274423A CN 201710389006 A CN201710389006 A CN 201710389006A CN 107274423 A CN107274423 A CN 107274423A
- Authority
- CN
- China
- Prior art keywords
- cluster
- point
- seed
- curr
- list
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/23—Clustering techniques
- G06F18/232—Non-hierarchical techniques
- G06F18/2321—Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/11—Region-based segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/13—Edge detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/187—Segmentation; Edge detection involving region growing; involving region merging; involving connected component labelling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/04—Indexing scheme for image data processing or generation, in general involving 3D image data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20112—Image segmentation details
- G06T2207/20156—Automatic seed setting
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Probability & Statistics with Applications (AREA)
- Computer Graphics (AREA)
- Artificial Intelligence (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Image Analysis (AREA)
Abstract
本发明具体涉及一种基于协方差矩阵和投影映射的点云特征曲线提取方法,主要解决了现有特征线提取方法存在对模型细微特征不敏感、时间代价高、抗噪性较差的缺点,本发明首先利用协方差矩阵的特征值作为特征聚成多个带状聚类,然后在各个聚类内部根据主方向提取出关键特征点,将关键特征点投影到以该关键点为中心的利用移动最小二乘法拟合出的局部曲面上,形成光滑的特征线。该方法适用于提取三维点云模型表面的特征线,用于描述模型的几何特征,是处理几何模型的一种基本操作,可以广泛地应用于几何模型的可视化、优化和简化,曲面重建,模式识别,逆向工程等领域。
Description
技术领域
本发明属于三维图像技术领域,具体涉及一种基于协方差矩阵和投影映射的点云特征曲线提取方法。该方法适用于提取三维点云模型表面的特征线,用于描述模型的几何特征。
背景技术
随着三维扫描获取技术的快速发展,点云数据处理研究已成为数字几何处理研究发展过程中的研究热点。特征线的提取,是处理几何模型的一种基本操作,可以为三维模型的理解提供重要的信息。因此,广泛地应用于几何模型的可视化、优化和简化,曲面重建,模式识别,逆向工程等领域。
对于三维点云模型,其特征曲线提取过程就是对模型上的数据点进行分析并计算,找出其中的特征点,并连接构成光滑特征曲线。由于扫描获取到的点云数据量大,本身没有自然拓扑连接关系,且还存在噪声、数据缺失等问题。
发明内容
为了解决现有特征线提取方法存在对模型细微特征不敏感、时间代价高、抗噪性较差的缺点,本发明提出了一种基于协方差矩阵和投影映射的特征曲线提取方法。
为解决上述技术问题,本发明采用的技术方案为:
步骤1,对输入的点云数据source计算出点云表面的分辨率mr,计算出每个点的协方差矩阵的最大特征值作为该点的强度intensity。
步骤2,在点云数据source找到第一个强度intensity大于阈值t1的点作为特征点,以该点为种子点进行区域增长,寻找更多符合条件的特征点,将其加入到同一个点集中。直到区域无法增长,集合作为第一个聚类。继续寻找新的种子点,进行区域增长,生成新的聚类,直到遍历完全部点云数据。经过上述骤,点云数据被划分为多个聚类,将这些聚类作为阈值t1条件下的一个聚类集合cluster_list1。
步骤3,根据步骤2同样求出阈值t2且t1<t2条件下的一个聚类集合cluster_list2。根据两个聚类集合中的每个聚类的重合度关系,判断是否将聚类融合。最终形成一个特征更全面的聚类集合cluster_list。
步骤4,取出聚类集合cluster_list中的一个聚类,根据聚类中的第一个点经过计算协方差矩阵的特征值特征向量、修正法向量和主方向、寻找预测点、按权重计算新的关键特征点、将关键特征点投影至最近局部曲面一系列操作生成了一个在模型表面的连接点。以这个连接点为起点同样经过上述生成连接点的步骤不断生成新的连接点,直到无法生成新的连接点。这样就得到一个有序的点的集合,即为一条特征线。重新选取聚类中的点,继续生成特征线,直到遍历聚类内全部的点。
步骤5,选取聚类集合cluster_list中的其他聚类,根据步骤4继续生成特征线,直到聚类集合中的所有集合都已生成特征线。其得到的全部的特征线就是模型的特征线。
进一步,所述步骤2中,在点云数据source找到第一个强度intensity大于阈值t1的点作为特征点,以该点为种子点进行区域增长,寻找更多符合条件的特征点,将其加入到同一个点集中;直到区域无法增长,集合作为第一个聚类;继续寻找新的种子点,进行区域增长,生成新的聚类,直到遍历完全部点云数据;经过上述骤,点云数据被划分为多个聚类,将这些聚类作为阈值t1条件下的一个聚类集合cluster_list1,包括:
将点云数据source在阈值t1条件下生成一个聚类集合cluster_list1的过程通过如下步骤2.1至步骤2.5实现:
步骤2.1,设置一个空的种子点队列、空的聚类和聚类集合,分别记为L、cluster和cluster_list;
步骤2.2,顺序遍历点云source,从中选取第一个强度intensity大于阈值t1且未被检测的点p,作为一个特征点,同时作为区域增长的初始种子点,将其加入种子点队列L和当前聚类cluster中,并将其标记为已检测;
步骤2.3,弹出队列L中第一个元素,作为当前种子点,记为pseed;以其为中心,搜索半径为r范围内的邻域点,记为N(pseed),N(pseed)={pj|pj∈PC,‖pj-p‖≤r};对每一个邻域点pj,计算强度intensity,判断强度是否大于t1,并标记为已检测;若大于t1,则加入当前聚类cluster和种子点队列L中;若不大于t1,继续检测下一个邻域点;
步骤2.4,循环执行步骤2.3,直到种子点序列L为空,结束当前区域增长,得到聚类cluster,并将其置入到cluster_list之中,然后清空cluster;
步骤2.5,循环执行步骤2.2–步骤2.4;直到点云source中所有的点都已检测过,则聚类结束;最终得到一个将点云source分割成若干个特征点聚类的聚类集合cluster_list;cluster_list就是在阈值t1条件下聚类集合cluster_list1。
更进一步,所述步骤3中,根据步骤2同样求出阈值t2且t1<t2条件下的一个聚类集合cluster_list2;根据两个聚类集合中的每个聚类的重合度关系,判断是否将聚类融合;最终形成一个特征更全面的聚类集合cluster_list,包括:
cluster_list2可通过将步骤2中的阈值设置为t2计算获得,将cluster_list1、cluster_list2融合成一个聚类cluster_list可通过步骤3.1至步骤3.7实现:
首先假定两个特征点聚类集合cluster_list1和cluster_list2里的聚类个数分别是m,n;
步骤3.1,为cluster_list2中的每一个聚类cluster_list2j设置一个计数器,其集合记为{count0,count1,...,countn};
步骤3.2,从cluster_list1选取一个聚类,记为cluster_list1i,其中i<m,m为cluster_list1中的聚类个数;
步骤3.3,对cluster_list1i中的每一个点pi,在cluster_list2中的每一个聚类cluster_list2j(j<n)中,找是否存在对应点q使得点pi与其对应点q的距离在一倍分辨率mr以内,若存在,则countj加1;
步骤3.4,计数器总和记为count,count=count0+count1+…+countn;若count为0,即cluster_list1i不存在于cluster_list2中,将cluster_list1i添加到cluster_list2中,执行步骤3.7;若count不为0,则认为cluster_list1i与cluster_list2有一定程度的重合,执行步骤3.5;
步骤3.5,计算count与cluster_list1i中点的个数的比值,记为rate1,若rate1>30%,则认为cluster_list2中存在聚类cluster_list1i,执行步骤3.7;否则,执行步骤3.6;
步骤3.6,计数器集合中的最大值记为countmax;计算count与countmax的比值,记为rate2;若rate2>90%,则认为cluster_list1i比cluster_list2max特征更全面,用cluster_list1i替换cluster_list2max;若rate2<10%,则认为重合度不高,将cluster_list1i添加到cluster_list2中;
步骤3.7,返回步骤3.2,直到遍历cluster_list1中全部聚类;最终得到新的聚类集合cluster_list2就是融合后的特征点的聚类集合cluster_list。
更进一步,所述步骤4中,取出聚类集合cluster_list中的一个聚类,根据聚类中的第一个点经过计算协方差矩阵的特征值特征向量、修正法向量和主方向、寻找预测点、按权重计算新的关键特征点、将关键特征点投影至最近局部曲面一系列操作生成了一个在模型表面的连接点;以这个连接点为起点同样经过上述生成连接点的步骤不断生成新的连接点,直到无法生成新的连接点;这样就得到一个有序的点的集合,即为一条特征线;重新选取聚类中的点,继续生成特征线,直到遍历聚类内全部的点,包括:
在聚类集合cluster_list的一个聚类中生成特征线可由步骤4.1至步骤4.10实现:
首先设特征点的聚类集合cluster_list={clusteri},i=1,…,m;
步骤4.1,设有一个空的种子点队列、线段连接点的列表和特征线列表,分别记为seed_list,point_list,line_list;
步骤4.2,在特征点聚类的集合cluster_list中选取一个聚类clusteri,将该聚类中的第一个点p作为种子点加入种子点队列seed_list中,记为seed0,同时设置为当前种子点,记为pseed_curr,即pseed_curr=seed0;
步骤4.3,在当前聚类clusteri中,以当前种子点pseed_curr为中心,搜索半径为r范围内的邻域点,记为N(pseed_curr),N(pseed_curr)={pj|pj∈clusteri,‖pj-p‖≤r};计算点pseed_curr的协方差矩阵,取最大特征值对应的特征向量作为当前种子点pseed_curr的主方向,记为取最小特征值对应得特征向量作为当前种子点pseed_curr的法向量,记为
步骤4.4,修正法向量和主方向的方向;判断若是,则法向量其中是点云中距离当前种子点pseed_curr最近的点的法向量,是点pseed_curr的法向量;若seed_list<2,即种子点队列中只有一个点,不需要修正主方向;否则,判断是否成立,若是,则主方向其中是当前种子点pseed_curr的主方向;
步骤4.5,根据当前种子点pseed_curr及其邻域点N(pseed_curr)建立局部坐标系;以当前种子点pseed_curr的法向量作为w轴,主方向作为u轴,即为v轴的正方向,形成点pseed_curr的局部坐标系,记为(pseed_curr,u,v,w);平面upseed_currv即为当前种子点pseed_curr邻域内的曲面在点pseed_curr处的切平面;
步骤4.6,利用公式(1),将点pseed_curr的邻域点{p0,p1,…,pj,…,pn}(pj∈N(pseed_curr))投影到平面upseed_currv上,对应的投影后的点记为{q0,q1,…,qj,…,qn};按照公式(2)计算qj和点pseed_curr的连线与坐标轴u轴的夹角αj,将αj≤45°的点加入待选预测点集合,记为pre_points,且将45°≤αj≤90°的点标记为已检测;将pre_points中的点按照与点pseed_curr的距离排序,选择距离最近的点作为预测点,记为ppre,并标记已检测;判断是否成立,若是,则主方向其中是预测点ppre的主方向;
步骤4.7,计算关键特征点;根据公式(3)计算关键特征点,记为pkey;其中d是自定义的步长,w是由当前种子点pseed_curr的主方向和预测点ppre的主方向按照公式(4)计算的方向权重,是当前种子点pseed_curr的主方向,是预测点ppre的主方向;
pkey=pseed_curr+w*d (3)
步骤4.8,计算线段的连接点lk,k=0,1,…;在点云中以关键特征点pkey为中心,搜索半径为r范围的邻域点,从中选取距离点pkey最近的点,用移动最小二乘法拟合该点处的局部曲面,并将关键特征点pkey投影到局部曲面上,得到线段的连接点lk,并加入连接点的列表point_list中;并将第一个连接点l0的主方向保存,记为line_dir;
步骤4.9,将得到的连接点lk加入种子点队列seed_list中,并设置为当前种子点,循环执行步骤4.3–步骤4.9,继续生成新的连接点,直到步骤4.5中找不到预测点,则当前方向line_dir上特征线的连接点提取结束,得到point_list,生成线段,记为L1;清空point_list;依上述步骤,计算相反方向-line_dir,生成线段,记为L2;连接线段L1与L2,生成当前聚类中的一条完整的特征线,将其加入line_list;
步骤4.10,计算该聚类clusteri中未被检测的点数所占聚类中全部点数的比值;若小于一定阈值,则认为该聚类中的全部特征线提取完成;否则,在未被检测到的点中选取新的起始点作为新的种子点,循环执行步骤4.3–步骤4.10,继续生成特征线。
本发明采用以上技术方案,首先利用协方差矩阵的特征值作为点的强度特征,将强度大于阈值的点作为特征点,利用区域增长的方法将特征点划分成多个带状聚类,然后在各个聚类内部根据协方差矩阵得到的主方向趋势计算出关键特征点,将关键特征点投影到距该关键点最近的利用移动最小二乘法拟合出的局部模型曲面上,生成连接点,不断计算连接点形成光滑的贴合模型的特征线。
相对之前的特征线提取方法,本发明利用协方差矩阵求得主方向来描述聚类的趋势,一定程度上弥补了特征点提取不足的情况,比如特征点的带状聚类过宽、过窄等情况,而且特征线的连接点是采用移动最小二乘法拟合的曲面上的点,在符合模型曲面变化的同时,特征线也更光滑。同时,本发明在确定特征线的起始点时,利用的是生成的连接点而不是随机的聚类内的点,避免了其他方法中因为随机选取聚类内的点作为特征线起始点带来的误差。因此,与背景技术相比,本发明具有算法运行时间短、鲁棒性高、抗噪性好和特征线明显的优点。
附图说明
图1是本发明的方法流程图;
图2是Pauly提出的方法对Venus模型提取出的特征线;
图3是庞旭芳提出的方法对Venus模型提取出的特征线;
图4是本发明的方法对Venus模型提取出的特征线。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细描述。
如图1所示,本发明中的基于协方差矩阵和投影映射的点云特征曲线提取方法,其包括步骤1至步骤7:
步骤1,对输入的点云数据source计算出点云表面的分辨率mr,计算出每个点的协方差矩阵的最大特征值作为该点的强度intensity。
其中,计算点云表面分辨率mr和计算协方差矩阵的最大特征值的方式,可以参考已有的点云表面分辨率mr和协方差矩阵的最大特征值的计算方式,此处不做具体阐述。计算出的点云表面的分辨率mr作为后续步骤的参数,计算出的每个点的协方差矩阵的最大特征值作为该点的强度intensity条件,用于后续步骤中判断该点是否为关键点。
步骤2,在点云数据source找到第一个强度intensity大于阈值t1的点作为特征点,以该点为种子点进行区域增长,寻找更多符合条件的特征点,将其加入到同一个点集中。直到区域无法增长,集合作为第一个聚类。继续寻找新的种子点,进行区域增长,生成新的聚类,直到遍历完全部点云数据。经过上述骤,点云数据被划分为多个聚类,将这些聚类作为阈值t1条件下的一个聚类集合cluster_list1。
该步骤中阈值的取值范围一般0.1-0.3。具体的,该步骤可以通过如下步骤2.1至步骤2.5实现:
步骤2.1,设置一个空的种子点队列、空的聚类和聚类集合,分别记为L、cluster和cluster_list。
步骤2.2,顺序遍历点云source,从中选取第一个强度intensity大于阈值t1且未被检测的点p,作为一个特征点,同时作为区域增长的初始种子点,将其加入种子点队列L和当前聚类cluster中,并将其标记为已检测。
步骤2.3,弹出队列L中第一个元素,作为当前种子点,记为pseed。以其为中心,搜索半径为r范围内的邻域点,记为N(pseed),N(pseed)={pj|pj∈PC,‖pj-p‖≤r}。对每一个邻域点pj,计算强度intensity,判断强度是否大于t1,并标记为已检测。若大于t1,则加入当前聚类cluster和种子点队列L中;若不大于t1,继续检测下一个邻域点。
步骤2.4,循环执行步骤2.3,直到种子点序列L为空,结束当前区域增长,得到聚类cluster,并将其置入到cluster_list之中,然后清空cluster。
步骤2.5,循环执行步骤2.2–步骤2.4。直到点云source中所有的点都已检测过,则聚类结束。最终得到一个将点云source分割成若干个特征点聚类的聚类集合cluster_list。cluster_list就是在阈值t1条件下聚类集合cluster_list1。
其中步骤2.3中,搜索半径为r范围内的邻域点已有一些现有的成熟的算法,如:KDTree等,此处不做阐述。r的取值范围一般为3-18倍的分辨率。
步骤3,根据步骤2同样求出阈值t2且t1<t2条件下的一个聚类集合cluster_list2。根据两个聚类集合中的每个聚类的重合度关系,判断是否将聚类融合。最终形成一个特征更全面的聚类集合cluster_list。
聚类集合cluster_list2可以通过将步骤2中的阈值换为t2得到,注意的是要保证t1<t2。做出这样定义是为了后续将两个聚类集合融合时,有一个对应关系。即,cluster_list1是阈值较小的条件下获取的聚类集合,cluster_list2是阈值较大的条件下获取的聚类集合。
将cluster_list1、cluster_list2融合成一个聚类cluster_list可通过步骤3.1至步骤3.7实现:
首先假定两个特征点聚类集合cluster_list1和cluster_list2里的聚类个数分别是m,n。
步骤3.1,为cluster_list2中的每一个聚类cluster_list2j设置一个计数器,其集合记为{count0,count1,...,countn}。
步骤3.2,从cluster_list1选取一个聚类,记为cluster_list1i,其中i<m,m为cluster_list1中的聚类个数。
步骤3.3,对cluster_list1i中的每一个点pi,在cluster_list2中的每一个聚类cluster_list2j(j<n)中,找是否存在对应点q使得点pi与其对应点q的距离在一倍分辨率mr以内,若存在,则countj加1。
步骤3.4,计数器总和记为count,count=count0+count1+…+countn。若count为0,即cluster_list1i不存在于cluster_list2中,将cluster_list1i添加到cluster_list2中,执行步骤3.7;若count不为0,则认为cluster_list1i与cluster_list2有一定程度的重合,执行步骤3.5。
步骤3.5,计算count与cluster_list1i中点的个数的比值,记为rate1,若rate1>30%,则认为cluster_list2中存在聚类cluster_list1i,执行步骤3.7;否则,执行步骤3.6。
步骤3.6,计数器集合中的最大值记为countmax。计算count与countmax的比值,记为rate2;若rate2>90%,则认为cluster_list1i比cluster_list2max特征更全面,用cluster_list1i替换cluster_list2max;若rate2<10%,则认为重合度不高,将cluster_list1i添加到cluster_list2中。
步骤3.7,返回步骤3.2,直到遍历cluster_list1中全部聚类。最终得到新的聚类集合cluster_list2就是融合后的特征点的聚类集合cluster_list。
步骤4,取出聚类集合cluster_list中的一个聚类,根据聚类中的第一个点经过计算协方差矩阵的特征值特征向量、修正法向量和主方向、寻找预测点、按权重计算新的关键特征点、将关键特征点投影至最近局部曲面一系列操作生成了一个在模型表面的连接点。以这个连接点为起点同样经过上述生成连接点的步骤不断生成新的连接点,直到无法生成新的连接点。这样就得到一个有序的点的集合,即为一条特征线。重新选取聚类中的点,继续生成特征线,直到遍历聚类内全部的点。
在聚类集合cluster_list的一个聚类中生成特征线可由步骤4.1至步骤4.10实现:
首先设特征点的聚类集合cluster_list={clusteri},i=1,…,m。
步骤4.1,设有一个空的种子点队列、线段连接点的列表和特征线列表,分别记为seed_list,point_list,line_list。
步骤4.2,在特征点聚类的集合cluster_list中选取一个聚类clusteri,将该聚类中的第一个点p作为种子点加入种子点队列seed_list中,记为seed0,同时设置为当前种子点,记为pseed_curr,即pseed_curr=seed0。
步骤4.3,在当前聚类clusteri中,以当前种子点pseed_curr为中心,搜索半径为r范围内的邻域点,记为N(pseed_curr),N(pseed_curr)={pj|pj∈clusteri,‖pj-p‖≤r}。计算点pseed_curr的协方差矩阵,取最大特征值对应的特征向量作为当前种子点pseed_curr的主方向,记为取最小特征值对应得特征向量作为当前种子点pseed_curr的法向量,记为
步骤4.4,修正法向量和主方向的方向。判断若是,则法向量其中是点云中距离当前种子点pseed_curr最近的点的法向量,是点pseed_curr的法向量。若seed_list<2,即种子点队列中只有一个点,不需要修正主方向;否则,判断是否成立,若是,则主方向其中是当前种子点pseed_curr的主方向。
步骤4.5,根据当前种子点pseed_curr及其邻域点N(pseed_curr)建立局部坐标系。以当前种子点pseed_curr的法向量作为w轴,主方向作为u轴,即为v轴的正方向,形成点pseed_curr的局部坐标系,记为(pseed_curr,u,v,w)。平面upseed_currv即为当前种子点pseed_curr邻域内的曲面在点pseed_curr处的切平面。
步骤4.6,利用公式(1),将点pseed_curr的邻域点{p0,p1,…,pj,…,pn}(pj∈N(pseed_curr))投影到平面upseed_currv上,对应的投影后的点记为{q0,q1,…,qj,…,qn}。按照公式(2)计算qj和点pseed_curr的连线与坐标轴u轴的夹角αj,将αj≤45°的点加入待选预测点集合,记为pre_points,且将45°≤αj≤90°的点标记为已检测。将pre_points中的点按照与点pseed_curr的距离排序,选择距离最近的点作为预测点,记为ppre,并标记已检测。判断是否成立,若是,则主方向其中是预测点ppre的主方向。
步骤4.7,计算关键特征点。根据公式(3)计算关键特征点,记为pkey。其中d是自定义的步长,w是由当前种子点pseed_curr的主方向和预测点ppre的主方向按照公式(4)计算的方向权重,是当前种子点pseed_curr的主方向,是预测点ppre的主方向。
pkey=pseed_curr+w*d (3)
步骤4.8,计算线段的连接点lk,k=0,1,…。在点云中以关键特征点pkey为中心,搜索半径为r范围的邻域点,从中选取距离点pkey最近的点,用移动最小二乘法拟合该点处的局部曲面,并将关键特征点pkey投影到局部曲面上,得到线段的连接点lk,并加入连接点的列表point_list中。并将第一个连接点l0的主方向保存,记为line_dir。
步骤4.9,将得到的连接点lk加入种子点队列seed_list中,并设置为当前种子点,循环执行步骤4.3–步骤4.9,继续生成新的连接点,直到步骤4.5中找不到预测点,则当前方向line_dir上特征线的连接点提取结束,得到point_list,生成线段,记为L1。清空point_list。依上述步骤,计算相反方向-line_dir,生成线段,记为L2。连接线段L1与L2,生成当前聚类中的一条完整的特征线,将其加入line_list。
步骤4.10,计算该聚类clusteri中未被检测的点数所占聚类中全部点数的比值。若小于一定阈值,则认为该聚类中的全部特征线提取完成。否则,在未被检测到的点中选取新的起始点作为新的种子点,循环执行步骤4.3–步骤4.10,继续生成特征线。
其中在步骤4.3中的计算协方差矩阵的特征值和步骤4.4中的计算法向量及步骤4.8中用移动最小二乘法拟合局部曲面都有成熟的算法,本发明对此不做详细阐述。步骤4.10中的阈值可以自己定义,取值范围为0.1–1。
步骤5,选取聚类集合cluster_list中的其他聚类,根据步骤4继续生成特征线,直到聚类集合中的所有集合都已生成特征线。其得到的全部的特征线就是模型的特征线。
为表明本发明具有以上优点,分别利用其中Pauly提出的方法、庞旭芳提出的方法和本发明的方法对Venus模型提取特征线。图2是Pauly提出的方法对Venus模型提取出的特征线。图3是庞旭芳提出的方法提取出的特征线。图4是本发明的方法提取出的特征线。表1为三种方法运行时间的对比。
从图2、图3、图4对比中可以看出本发明提取的特征线更为完整,更加符合模型表面。
表1不同方法配准时间对比
方法 | Pauly提出的方法 | 庞旭芳提出的方法 | 本发明的方法 |
运行时间(ms) | 26827 | 39641 | 28242 |
从表1可以看出本发明的方法比庞旭芳提出的方法运行时间短,效率更高。在和Pauly提出的方法运行时间相近的情况下,由上面提取特征线的结果截图对比可知,本发明提出的方法特征线提取的更加完整,效果更好。
Claims (4)
1.一种基于协方差矩阵和投影映射的点云特征曲线提取方法,其特征在于,所述特征曲线提取方法包括以下步骤:
步骤1,对输入的点云数据source计算出点云表面的分辨率mr,计算出每个点的协方差矩阵的最大特征值作为该点的强度intensity;
步骤2,在点云数据source找到第一个强度intensity大于阈值t1的点作为特征点,以该点为种子点进行区域增长,寻找更多符合条件的特征点,将其加入到同一个点集中;直到区域无法增长,集合作为第一个聚类;继续寻找新的种子点,进行区域增长,生成新的聚类,直到遍历完全部点云数据;经过上述骤,点云数据被划分为多个聚类,将这些聚类作为阈值t1条件下的一个聚类集合cluster_list1;
步骤3,根据步骤2同样求出阈值t2且t1<t2条件下的一个聚类集合cluster_list2;根据两个聚类集合中的每个聚类的重合度关系,判断是否将聚类融合;最终形成一个特征更全面的聚类集合cluster_list;
步骤4,取出聚类集合cluster_list中的一个聚类,根据聚类中的第一个点经过计算协方差矩阵的特征值特征向量、修正法向量和主方向、寻找预测点、按权重计算新的关键特征点、将关键特征点投影至最近局部曲面一系列操作生成了一个在模型表面的连接点;以这个连接点为起点同样经过上述生成连接点的步骤不断生成新的连接点,直到无法生成新的连接点;这样就得到一个有序的点的集合,即为一条特征线;重新选取聚类中的点,继续生成特征线,直到遍历聚类内全部的点;
步骤5,选取聚类集合cluster_list中的其他聚类,根据步骤4继续生成特征线,直到聚类集合中的所有集合都已生成特征线;其得到的全部的特征线就是模型的特征线。
2.根据权利要求1所述的特征曲线提取方法,其特征在于,所述步骤2中,在点云数据source找到第一个强度intensity大于阈值t1的点作为特征点,以该点为种子点进行区域增长,寻找更多符合条件的特征点,将其加入到同一个点集中;直到区域无法增长,集合作为第一个聚类;继续寻找新的种子点,进行区域增长,生成新的聚类,直到遍历完全部点云数据;经过上述骤,点云数据被划分为多个聚类,将这些聚类作为阈值t1条件下的一个聚类集合cluster_list1,包括:
将点云数据source在阈值t1条件下生成一个聚类集合cluster_list1的过程通过如下步骤2.1至步骤2.5实现:
步骤2.1,设置一个空的种子点队列、空的聚类和聚类集合,分别记为L、cluster和cluster_list;
步骤2.2,顺序遍历点云source,从中选取第一个强度intensity大于阈值t1且未被检测的点p,作为一个特征点,同时作为区域增长的初始种子点,将其加入种子点队列L和当前聚类cluster中,并将其标记为已检测;
步骤2.3,弹出队列L中第一个元素,作为当前种子点,记为pseed;以其为中心,搜索半径为r范围内的邻域点,记为N(pseed),N(pseed)={pj|pj∈PC,‖pj-p‖≤r};对每一个邻域点pj,计算强度intensity,判断强度是否大于t1,并标记为已检测;若大于t1,则加入当前聚类cluster和种子点队列L中;若不大于t1,继续检测下一个邻域点;
步骤2.4,循环执行步骤2.3,直到种子点序列L为空,结束当前区域增长,得到聚类cluster,并将其置入到cluster_list之中,然后清空cluster;
步骤2.5,循环执行步骤2.2–步骤2.4;直到点云source中所有的点都已检测过,则聚类结束;最终得到一个将点云source分割成若干个特征点聚类的聚类集合cluster_list;cluster_list就是在阈值t1条件下聚类集合cluster_list1。
3.根据权利要求1所述的特征曲线提取方法,其特征在于,所述步骤3中,
根据步骤2同样求出阈值t2且t1<t2条件下的一个聚类集合cluster_list2;根据两个聚类集合中的每个聚类的重合度关系,判断是否将聚类融合;最终形成一个特征更全面的聚类集合cluster_list,包括:
cluster_list2可通过将步骤2中的阈值设置为t2计算获得,将cluster_list1、cluster_list2融合成一个聚类cluster_list可通过步骤3.1至步骤3.7实现:
首先假定两个特征点聚类集合cluster_list1和cluster_list2里的聚类个数分别是m,n;
步骤3.1,为cluster_list2中的每一个聚类cluster_list2j设置一个计数器,其集合记为{count0,count1,...,countn};
步骤3.2,从cluster_list1选取一个聚类,记为cluster_list1i,其中i<m,m为cluster_list1中的聚类个数;
步骤3.3,对cluster_list1i中的每一个点pi,在cluster_list2中的每一个聚类cluster_list2j(j<n)中,找是否存在对应点q使得点pi与其对应点q的距离在一倍分辨率mr以内,若存在,则countj加1;
步骤3.4,计数器总和记为count,count=count0+count1+…+countn;若count为0,即cluster_list1i不存在于cluster_list2中,将cluster_list1i添加到cluster_list2中,执行步骤3.7;若count不为0,则认为cluster_list1i与cluster_list2有一定程度的重合,执行步骤3.5;
步骤3.5,计算count与cluster_list1i中点的个数的比值,记为rate1,若rate1>30%,则认为cluster_list2中存在聚类cluster_list1i,执行步骤3.7;否则,执行步骤3.6;
步骤3.6,计数器集合中的最大值记为countmax;计算count与countmax的比值,记为rate2;若rate2>90%,则认为cluster_list1i比cluster_list2max特征更全面,用cluster_list1i替换cluster_list2max;若rate2<10%,则认为重合度不高,将cluster_list1i添加到cluster_list2中;
步骤3.7,返回步骤3.2,直到遍历cluster_list1中全部聚类;最终得到新的聚类集合cluster_list2就是融合后的特征点的聚类集合cluster_list。
4.根据权利要求1所述的特征曲线提取方法,其特征在于,所述步骤4中,
取出聚类集合cluster_list中的一个聚类,根据聚类中的第一个点经过计算协方差矩阵的特征值特征向量、修正法向量和主方向、寻找预测点、按权重计算新的关键特征点、将关键特征点投影至最近局部曲面一系列操作生成了一个在模型表面的连接点;以这个连接点为起点同样经过上述生成连接点的步骤不断生成新的连接点,直到无法生成新的连接点;这样就得到一个有序的点的集合,即为一条特征线;重新选取聚类中的点,继续生成特征线,直到遍历聚类内全部的点,包括:
在聚类集合cluster_list的一个聚类中生成特征线可由步骤4.1至步骤4.10实现:
首先设特征点的聚类集合cluster_list={clusteri},i=1,…,m;
步骤4.1,设有一个空的种子点队列、线段连接点的列表和特征线列表,分别记为seed_list,point_list,line_list;
步骤4.2,在特征点聚类的集合cluster_list中选取一个聚类clusteri,将该聚类中的第一个点p作为种子点加入种子点队列seed_list中,记为seed0,同时设置为当前种子点,记为pseed_curr,即pseed_curr=seed0;
步骤4.3,在当前聚类clusteri中,以当前种子点pseed_curr为中心,搜索半径为r范围内的邻域点,记为N(pseed_curr),N(pseed_curr)={pj|pj∈clusteri,‖pj-p‖≤r};计算点pseed_curr的协方差矩阵,取最大特征值对应的特征向量作为当前种子点pseed_curr的主方向,记为取最小特征值对应得特征向量作为当前种子点pseed_curr的法向量,记为
步骤4.4,修正法向量和主方向的方向;判断若是,则法向量其中是点云中距离当前种子点pseed_curr最近的点的法向量,是点pseed_curr的法向量;若seed_list<2,即种子点队列中只有一个点,不需要修正主方向;否则,判断是否成立,若是,则主方向其中是当前种子点pseed_curr的主方向;
步骤4.5,根据当前种子点pseed_curr及其邻域点N(pseed_curr)建立局部坐标系;以当前种子点pseed_curr的法向量作为w轴,主方向作为u轴,即为v轴的正方向,形成点pseed_curr的局部坐标系,记为(pseed_curr,u,v,w);平面upseed_currv即为当前种子点pseed_curr邻域内的曲面在点pseed_curr处的切平面;
步骤4.6,利用公式(1),将点pseed_curr的邻域点{p0,p1,…,pj,…,pn}(pj∈N(pseed_curr))投影到平面upseed_currv上,对应的投影后的点记为{q0,q1,…,qj,…,qn};按照公式(2)计算qj和点pseed_curr的连线与坐标轴u轴的夹角αj,将αj≤45°的点加入待选预测点集合,记为pre_points,且将45°≤αj≤90°的点标记为已检测;将pre_points中的点按照与点pseed_curr的距离排序,选择距离最近的点作为预测点,记为ppre,并标记已检测;判断是否成立,若是,则主方向其中是预测点ppre的主方向;
步骤4.7,计算关键特征点;根据公式(3)计算关键特征点,记为pkey;其中d是自定义的步长,w是由当前种子点pseed_curr的主方向和预测点ppre的主方向按照公式(4)计算的方向权重,是当前种子点pseed_curr的主方向,是预测点ppre的主方向;
pkey=pseed_curr+w*d (3)
步骤4.8,计算线段的连接点lk,k=0,1,…;在点云中以关键特征点pkey为中心,搜索半径为r范围的邻域点,从中选取距离点pkey最近的点,用移动最小二乘法拟合该点处的局部曲面,并将关键特征点pkey投影到局部曲面上,得到线段的连接点lk,并加入连接点的列表point_list中;并将第一个连接点l0的主方向保存,记为line_dir;
步骤4.9,将得到的连接点lk加入种子点队列seed_list中,并设置为当前种子点,循环执行步骤4.3–步骤4.9,继续生成新的连接点,直到步骤4.5中找不到预测点,则当前方向line_dir上特征线的连接点提取结束,得到point_list,生成线段,记为L1;清空point_list;依上述步骤,计算相反方向-line_dir,生成线段,记为L2;连接线段L1与L2,生成当前聚类中的一条完整的特征线,将其加入line_list;
步骤4.10,计算该聚类clusteri中未被检测的点数所占聚类中全部点数的比值;若小于一定阈值,则认为该聚类中的全部特征线提取完成;否则,在未被检测到的点中选取新的起始点作为新的种子点,循环执行步骤4.3–步骤4.10,继续生成特征线。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710389006.6A CN107274423B (zh) | 2017-05-26 | 2017-05-26 | 一种基于协方差矩阵和投影映射的点云特征曲线提取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710389006.6A CN107274423B (zh) | 2017-05-26 | 2017-05-26 | 一种基于协方差矩阵和投影映射的点云特征曲线提取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107274423A true CN107274423A (zh) | 2017-10-20 |
CN107274423B CN107274423B (zh) | 2020-06-26 |
Family
ID=60064158
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710389006.6A Active CN107274423B (zh) | 2017-05-26 | 2017-05-26 | 一种基于协方差矩阵和投影映射的点云特征曲线提取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107274423B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108805143A (zh) * | 2018-06-01 | 2018-11-13 | 苏州工业园区测绘地理信息有限公司 | 一种基于切片点云的数据特征提取方法 |
CN109035207A (zh) * | 2018-07-03 | 2018-12-18 | 电子科技大学 | 密度自适应的激光点云特征检测方法 |
CN109242894A (zh) * | 2018-08-06 | 2019-01-18 | 广州视源电子科技股份有限公司 | 一种基于移动最小二乘法的图像对齐方法及系统 |
CN110377640A (zh) * | 2019-07-23 | 2019-10-25 | 江南大学 | 一种基于深度学习投票统计方法 |
CN111179297A (zh) * | 2018-11-13 | 2020-05-19 | 北京航空航天大学 | 点云的多重轮廓生成方法、装置及系统 |
WO2021114027A1 (zh) * | 2019-12-09 | 2021-06-17 | 深圳大学 | 一种基于sgh描述3d局部特征的3d形状匹配方法及装置 |
WO2021114026A1 (zh) * | 2019-12-09 | 2021-06-17 | 深圳大学 | 一种基于局部参考坐标系的3d形状匹配方法及装置 |
CN113378800A (zh) * | 2021-07-27 | 2021-09-10 | 武汉市测绘研究院 | 基于车载三维点云的道路标志线自动分类与矢量化方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2562688A2 (en) * | 2011-08-22 | 2013-02-27 | Samsung Electronics Co., Ltd. | Method of Separating Object in Three Dimensional Point Cloud |
US20130268862A1 (en) * | 2012-03-07 | 2013-10-10 | Willow Garage Inc. | Point cloud data hierarchy |
CN103473734A (zh) * | 2013-09-16 | 2013-12-25 | 南京大学 | 一种基于车载LiDAR数据的电力线提取与拟合方法 |
US20140098094A1 (en) * | 2012-10-05 | 2014-04-10 | Ulrich Neumann | Three-dimensional point processing and model generation |
US20140192050A1 (en) * | 2012-10-05 | 2014-07-10 | University Of Southern California | Three-dimensional point processing and model generation |
CN106529431A (zh) * | 2016-10-31 | 2017-03-22 | 武汉大学 | 基于车载激光扫描数据的路坎点自动提取及矢量化方法 |
-
2017
- 2017-05-26 CN CN201710389006.6A patent/CN107274423B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2562688A2 (en) * | 2011-08-22 | 2013-02-27 | Samsung Electronics Co., Ltd. | Method of Separating Object in Three Dimensional Point Cloud |
US20130268862A1 (en) * | 2012-03-07 | 2013-10-10 | Willow Garage Inc. | Point cloud data hierarchy |
US20140098094A1 (en) * | 2012-10-05 | 2014-04-10 | Ulrich Neumann | Three-dimensional point processing and model generation |
US20140192050A1 (en) * | 2012-10-05 | 2014-07-10 | University Of Southern California | Three-dimensional point processing and model generation |
CN103473734A (zh) * | 2013-09-16 | 2013-12-25 | 南京大学 | 一种基于车载LiDAR数据的电力线提取与拟合方法 |
CN106529431A (zh) * | 2016-10-31 | 2017-03-22 | 武汉大学 | 基于车载激光扫描数据的路坎点自动提取及矢量化方法 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108805143A (zh) * | 2018-06-01 | 2018-11-13 | 苏州工业园区测绘地理信息有限公司 | 一种基于切片点云的数据特征提取方法 |
CN109035207A (zh) * | 2018-07-03 | 2018-12-18 | 电子科技大学 | 密度自适应的激光点云特征检测方法 |
CN109242894A (zh) * | 2018-08-06 | 2019-01-18 | 广州视源电子科技股份有限公司 | 一种基于移动最小二乘法的图像对齐方法及系统 |
CN111179297A (zh) * | 2018-11-13 | 2020-05-19 | 北京航空航天大学 | 点云的多重轮廓生成方法、装置及系统 |
CN111179297B (zh) * | 2018-11-13 | 2023-09-19 | 北京航空航天大学 | 点云的多重轮廓生成方法、装置及系统 |
CN110377640A (zh) * | 2019-07-23 | 2019-10-25 | 江南大学 | 一种基于深度学习投票统计方法 |
WO2021114027A1 (zh) * | 2019-12-09 | 2021-06-17 | 深圳大学 | 一种基于sgh描述3d局部特征的3d形状匹配方法及装置 |
WO2021114026A1 (zh) * | 2019-12-09 | 2021-06-17 | 深圳大学 | 一种基于局部参考坐标系的3d形状匹配方法及装置 |
US11625454B2 (en) | 2019-12-09 | 2023-04-11 | Shenzhen University | Method and device for 3D shape matching based on local reference frame |
CN113378800A (zh) * | 2021-07-27 | 2021-09-10 | 武汉市测绘研究院 | 基于车载三维点云的道路标志线自动分类与矢量化方法 |
CN113378800B (zh) * | 2021-07-27 | 2021-11-09 | 武汉市测绘研究院 | 基于车载三维点云的道路标志线自动分类与矢量化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107274423B (zh) | 2020-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107274423A (zh) | 一种基于协方差矩阵和投影映射的点云特征曲线提取方法 | |
Han et al. | Occuseg: Occupancy-aware 3d instance segmentation | |
Lahoud et al. | 3d instance segmentation via multi-task metric learning | |
Qi et al. | Deep hough voting for 3d object detection in point clouds | |
CN102930246B (zh) | 一种基于点云片段分割的室内场景识别方法 | |
CN102682302B (zh) | 一种基于关键帧的多特征融合的人体姿态识别方法 | |
Carneiro et al. | Robust left ventricle segmentation from ultrasound data using deep neural networks and efficient search methods | |
Keselman et al. | Many-to-many graph matching via metric embedding | |
Wang et al. | Point linking network for object detection | |
CN106326841A (zh) | 一种快速虹膜识别算法 | |
CN107657625A (zh) | 融合时空多特征表示的无监督视频分割方法 | |
CN109887021A (zh) | 基于跨尺度的随机游走立体匹配方法 | |
Ma et al. | 3DMAX-Net: A multi-scale spatial contextual network for 3D point cloud semantic segmentation | |
CN103810271A (zh) | 基于路径跟随的三维点云物体形状特征匹配方法 | |
Lei et al. | Echocardiographic image multi‐structure segmentation using Cardiac‐SegNet | |
CN110349159A (zh) | 基于权重能量自适应分布的三维形状分割方法及系统 | |
Zhang et al. | Deep 3D facial landmark localization on position maps | |
CN106022359A (zh) | 基于有序信息熵的模糊熵空间聚类分析方法 | |
Hirose | Geodesic-based bayesian coherent point drift | |
Pratikakis et al. | Partial 3d object retrieval combining local shape descriptors with global fisher vectors | |
Kleiman et al. | Robust structure-based shape correspondence | |
CN102289661A (zh) | 一种基于谱匹配的三维网格模型的匹配方法 | |
CN102254353A (zh) | 一种三维模型的特征描述方法 | |
Marton et al. | Part-Based Geometric Categorization and Object Reconstruction in Cluttered Table-Top Scenes: Paper Type: Categories (7) and (5) | |
CN116109649A (zh) | 一种基于语义错误修正的3d点云实例分割方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |