天天看點

PCL中使用FLANN庫(2)

接着上一篇的介紹繼續

關于在使用readHeader函數讀取點雲資料頭的類型的代碼(Read a point cloud data header from a PCD file.)

檢視PCD檔案裡的内容(其實對于如何生成這種高緯度的檔案呢?)

另外一種PCD檔案的比如VFH的PCD檔案

 那麼接下來我們就可以使用PCL給定的資料集,以及FLANN的庫是實作對點雲的識别,方法是按照(1)的思路來做的

首先我們是假設已經有了資料集,以及相應每個資料集的VFH全局表述子的PCD檔案,這樣我們就可以使用(1)中的思路把資料集訓練并儲存到數中,友善之後我們再輸入給定的點雲的VFH的PCD檔案進行查找

那麼其實這裡面,我們如果是自己生成資料集,并對每個資料生成對應的VFH檔案就會有點難度,畢竟這是對采集到的資料,對于一些無關點雲需要剔除,

然後對有用的有價值的點雲資料進行聚類,以及各個角度的點雲聚類,然後對聚類的對象生成對應的VFH的特征PCD檔案,這就是大緻思路,

那麼我們來看一下源代碼是如何讀取并訓練資料源的,并生成可用于FLANN使用的檔案,并存在磁盤中

源代碼分析如下

這裡面就很明顯的生成了兩個可用于FLANN進行搜尋比對的檔案,以及模型的名稱的清單,就是會生成以下三個檔案

kdtree.idx(這個是kdtree模型的索引)

training_data.h5(用于FLANN庫中的一種高效的檔案格式,上一章有介紹),

training_data.list(這是訓練資料集的清單)

(2)那麼對于已經生成好的點雲的資料集,我們就需要使用寫一個程式來實作給定一個點雲的VFH的PCD檔案來尋找這個點雲所在位置并且是什麼角度拍照的結果,閑話少說明,直接就上程式

這裡面就涉及到FLANN的庫的函數的使用,執行的結果

列印的結果,這裡面會顯示最接近的六個資料集,并且計算這六個最近點雲與給定點雲之間的“距離”,這也是衡量兩者之間的相似度的大小

PCL中使用FLANN庫(2)

可視化的結果

PCL中使用FLANN庫(2)

很明顯左下角就是我們給定的資料點雲,而且運作查找的速度非常快~

好了就這樣了

 關注微信公衆号,歡迎大家的無私分享

PCL中使用FLANN庫(2)

繼續閱讀