在3D點雲目標識別中,除了傳統的利用二維圖像來輔助識別,然后映射到3D的方式;學術界在十幾年前就開始研究3D點雲的特征描述子。
本文主要詳解意大利博洛尼亞大學教授提出的SHOT(Signature of Histogram of Orientation)http://www.vision.deis.unibo.it/SHOT。
1、3D特征描述子
圖1.1 3D描述子編碼通用規則
描述子的構建一般分為兩個過程特征編碼(Signature)和直方圖統計(Histogram),特征編碼是關鍵,直方圖是表述特征的分布情況,增強特征的魯棒性(概率的角度)。
Signature:類似於2D圖像的特征描述子,對特征點附近的信息進行編碼,圖像是圓形或矩形Patch中的灰度、梯度變化信息。相似的,點雲特征描述子就是對點領域附近的幾何信息和顏色、紋理信息進行編碼;幾何信息主要有K-近鄰點(或者support)的法線方向、夾角、曲率等;
Histogram:有了K-鄰域內(支撐區域)點的一系列特征描述子,采用對每個子區域進行特征統計的思路,可以構建出整個支撐區域的直方圖特征。
2、局部坐標系(Local Reference Frame)
有了K-近鄰點后,怎么去提取特征點的幾何信息呢??文獻中一般是采用局部坐標系(Local Reference Frame)來作為幾何信息的參考原點。
圖1.2 Local Reference Frame
局部坐標系的Z軸確定方式:對K-近鄰點擬合平面,平面法向量作為局部坐標系的Z軸,Z軸的方向由法向量n和K-近鄰法向量均值的方向相同。法向量計算理論參考
SHOT在計算Z軸的時候,加了距離權重,
局部坐標系的X軸確定方式:計算法向量n與每個近鄰的點乘,找夾角最大的的P(即cos最小),然后計算P到過特征點F點平面的投影P′。特征點F與投影P′組成的方向為X軸方向。
局部坐標系的Y軸確定方式:x軸和Z軸叉乘得到。
需要注意,局部坐標系中的重心一般和特征點不是同一個點。
3、SHOT直方圖編碼
圖1.3 SHOT特征
借鑒2D圖像的SIFT特征,鄰域內法向量整體的直方圖特征魯棒性較低,采用局部直方圖形式進行編碼。SHOT將整個鄰域划分為32小塊,緯度2分,半徑2分,經度8分。
計算每個近鄰點相對於法向量的夾角(特征值),對每個小塊內的特征值構建直方圖(11級),累積直方圖采用插值的形式(這里理解起來相對困難,編碼也很復雜,看了PCL的源碼,費心),角度差值,緯度方向插值、經度方向插值和半徑方向插值。
起始就是定義一個規則,判斷當前特征值落在哪個區間里面,每個曲面的特征值按照下圖方式計算。最后得到的特征向量為32x11 = 352維。
圖1.4 插值方式
4、SHOT描述在紋理上的擴展
由於最初提出的SHOT描述子是不針對紋理和顏色信息的,單純的幾何信息編碼影響識別的准確率,因此后來SHOT加入了顏色信息。SHOT中的顏色編碼主要是LAB空間(CIELAB計算)中的顏色;直方圖31級,因此顏色描述子長度32x31 = 992;添加顏色信息的SHOT描述子共1344維。
一般顏色域都是RGB或者HSV(色度、飽和度、亮度),lab空間是開發出來近似人眼視覺系統的,色域比RGB大得多。感覺Lab只有在做為顏色標定或者參考時才用的上,沒想到這里用了,應該是為表達顏色更准確。
RGB需要先轉換到XYZ,然后XYZ轉LAB。顏色空間轉換代碼
圖1.5 LAB轉XYZ(逆變換見這里)