關鍵點也稱為興趣點,它是2D圖像或是3D點雲或者曲面模型上,可以通過定義檢測标準來擷取的具有穩定性,差別性的點集,從技術上來說,關鍵點的數量相比于原始點雲或圖像的資料量減小很多,與局部特征描述子結合在一起,組成關鍵點描述子常用來形成原始資料的表示,而且不失代表性和描述性,進而加快了後續的識别,追蹤等對資料的處理了速度,故而,關鍵點技術成為在2D和3D 資訊進行中非常關鍵的技術
NARF(Normal Aligned Radial Feature)關鍵點是為了從深度圖像中識别物體而提出的,對NARF關鍵點的提取過程有以下要求:
a) 提取的過程考慮邊緣以及物體表面變化資訊在内;
b)在不同視角關鍵點可以被重複探測;
c)關鍵點所在位置有足夠的支援區域,可以計算描述子和進行唯一的估計法向量。
其對應的探測步驟如下:
(1) 周遊每個深度圖像點,通過尋找在近鄰區域有深度變化的位置進行邊緣檢測。
(2) 周遊每個深度圖像點,根據近鄰區域的表面變化決定一測度表面變化的系數,及變化的主方向。
(3) 根據step(2)找到的主方向計算興趣點,表征該方向和其他方向的不同,以及該處表面的變化情況,即該點有多穩定。
(4) 對興趣值進行平滑濾波。
(5) 進行無最大值壓縮找到的最終關鍵點,即為NARF關鍵點。
關于NARF的更為具體的描述請檢視這篇部落格www.cnblogs.com/ironstark/p/5051533.html。
PCL中keypoints子產品及類的介紹
(1)class pcl::Keypoint<PointInT,PointOutT> 類keypoint是所有關鍵點檢測相關類的基類,定義基本接口,具體實作由子類來完成,其繼承關系時下圖:

具體介紹:
virtual void
設定搜尋時所用搜尋點雲,cloud為指向點雲對象的指針引用
void
int
采用setSearchMethod設定搜尋對象,以及setSearchSurface設定搜尋點雲,進行近鄰搜尋,傳回近鄰在點雲中的索引向量,
indices以及對應的距離向量distance其中為查詢點的索引,parameter為搜尋時所用的參數半徑或者K
(2)class pcl::HarrisKeypoint2D<PointInT,PointOutT,IntensityT>
類HarrisKeypoint2D實作基于點雲的強度字段的harris關鍵點檢測子,其中包括多種不同的harris關鍵點檢測算法的變種,其關鍵函數的說明如下:
重構函數,method需要設定采樣哪種關鍵點檢測方法,有HARRIS,NOBLE,LOWE,WOMASI四種方法,預設為HARRIS,window_width window_height為檢測視窗的寬度和高度min_distance 為兩個關鍵點之間 容許的最小距離,threshold為判斷是否為關鍵點的感興趣程度的閥值,小于該閥值的點忽略,大于則認為是關鍵點
(3)pcl::HarrisKeypoint3D< PointInT, PointOutT, NormalT >
類HarrisKeypoint3D和HarrisKeypoint2D類似,但是沒有在點雲的強度空間檢測關鍵點,而是利用點雲的3D空間的資訊表面法線向量來進行關鍵點檢測,關于HarrisKeypoint3D的類與HarrisKeypoint2D相似,除了
重構函數,method需要設定采樣哪種關鍵點檢測方法,有HARRIS,NOBLE,LOWE,WOMASI四種方法,預設為HARRIS,radius為法線估計的搜尋半徑,threshold為判斷是否為關鍵點的感興趣程度的閥值,小于該閥值的點忽略,大于則認為是關鍵點。
(4)pcl::HarrisKeypoint6D< PointInT, PointOutT, NormalT >
類HarrisKeypoint6D和HarrisKeypoint2D類似,隻是利用了歐式空間域XYZ或者強度域來候選關鍵點,或者前兩者的交集,即同時滿足XYZ域和強度域的關鍵點為候選關鍵點,
(5)pcl::SIFTKeypoint< PointInT, PointOutT >
類SIFTKeypoint是将二維圖像中的SIFT算子調整後移植到3D空間的SIFT算子的實作,輸入帶有XYZ坐标值和強度的點雲,輸出為點雲中的SIFT關鍵點,其關鍵函數的說明如下:
設定搜尋時與尺度相關的參數,min_scale在點雲體素尺度空間中标準偏差,點雲對應的體素栅格中的最小尺寸
int nr_octaves是檢測關鍵點時體素空間尺度的數目,nr_scales_per_octave為在每一個體素空間尺度下計算高斯空間的尺度所需要的參數
(6)還有很多不再一一介紹
執行個體分析
實驗實作提取NARF關鍵點,并且用圖像和3D顯示的方式進行可視化,可以直覺的觀察關鍵點的位置和數量 narf_feature_extraction.cpp:
運作結果:
未完待續**********************88888
有興趣這可以掃描下面的二維碼關注公衆号與我交流,