[發明專利]一種直接提取的k個最近鄰點搜索方法有效
| 申請號: | 201310717019.3 | 申請日: | 2013-12-23 |
| 公開(公告)號: | CN103744886A | 公開(公告)日: | 2014-04-23 |
| 發明(設計)人: | 肖曉萍;李自勝 | 申請(專利權)人: | 西南科技大學 |
| 主分類號: | G06F17/30 | 分類號: | G06F17/30 |
| 代理公司: | 成都九鼎天元知識產權代理有限公司 51214 | 代理人: | 卿誠;吳彥峰 |
| 地址: | 621010 四川*** | 國省代碼: | 四川;51 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 直接 提取 近鄰 搜索 方法 | ||
1.一種直接提取的k個最近鄰點搜索方法,其特征在于包括:載入模型的點云數據,針對點云數據中任意一點,從其反最近鄰點的最近鄰點中提取k1個最近鄰點,然后通過KNN算法搜索的最近鄰點中k-k1個最近鄰點,所述最近鄰點有k個最近鄰點,其中k是正整數,k1≤k。
2.根據權利要求1所述的一種直接提取的k個最近鄰點搜索方法,其特征在于所述從qhead的最近鄰點中提取k1個最近鄰點,然后通過KNN算法搜索qhead的最近鄰點中k-k1個最近鄰點具體步驟包括:
步驟1:根據模型的點云數據,建立點云數據鏈表PCDPointLink,qhead是點云數據中任意一點,pcdPoint是PCDPointLink中的一個節點,鏈表中的第一個節點指針為head,令鏈表遍歷變量qhead=PCDPointLink→head,即用變量指針qhead指向鏈表的第一個節點,qhead的最近鄰點集合kNN(qhead)、qhead的反最近鄰點集合rkNN(qhead)、指向下一個節點的指針Next,qhead與最近鄰點的最大距離dmax;
步驟2:判斷qhead的k個最近鄰點集合kNN(qhead)是否為空,若kNN(qhead)為空,則執行步驟3;否則,執行步驟7;
步驟3:判斷rkNN(qhead)是否為空,若rkNN(qhead)為空,則采用KNN算法進行搜索;否則,令遍歷變量qdata=rkNN(qhead)→head,計數變量k1=0,執行步驟4;
步驟4:判斷kNN(qdata)是否為空,若kNN(qdata)為空,則從qhead的反最近鄰點集合的下一個點去提取,因此qdata=qdata→Next,重復步驟4;若kNN(qdata)不為空,令遍歷變量pdata=kNN(qdata)→head,執行步驟5;
步驟5:判斷qhead的最近鄰點是否為pdata,若pdata是qhead的最近鄰點,則將pdata加入到qhead的最近鄰點集合中,將qhead加入到pdata的k個反最近鄰點集合,同時k1=k1+1;否則,pdata不是qhead的最近鄰點,則需要判斷qdata的最近鄰點集合中的下一個點,因此pdata=pdata→Next,并重復步驟5;
步驟6:當步驟5中,qhead的所有反近鄰點的遍歷完了后,比較k1與k的關系,如果k1<k,則qhead提取的最近鄰點個數不足k個,通過KNN算法為qhead點搜索k-k1個最近鄰點,將qhead的k1個最近鄰點加入到集合kNN(qhead)中,將qhead加入到剩余的k-k1個最近鄰點的反最近鄰點集合rkNN(pi)中,其中pi表示通過KNN算法搜索得到的k-k1個最近鄰點;如果k1=k,說明算法為qhead直接提取到了k個最近鄰點,執行步驟7;
步驟7:qhead=qhead→Next,讓qhead指向鏈表PCDPointLink下一個節點,重復步驟2到步驟6,得到qhead的k個最近鄰點kNN(qhead)。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于西南科技大學,未經西南科技大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310717019.3/1.html,轉載請聲明來源鉆瓜專利網。





