首先我們知道Hog特征結合SVM分類器已經被廣泛應用于圖像識别中,尤其在行人檢測中獲得了極大的成功,HOG+SVM進行行人檢測的方法是法國研究人員Dalal在2005的CVPR上提出的,而如今雖然有很多行人檢測算法不斷提出,但基本都是以HOG+SVM的思路為主,那麼PCL中也是利用這一思想來進行行人的檢測,
總體思路:
1、提取正負樣本hog特征
2、投入svm分類器訓練,得到model
3、由model生成檢測子
4、利用檢測子檢測負樣本,得到hardexample
5、提取hardexample的hog特征并結合第一步中的特征一起投入訓練,得到最終檢測子。
首先整合一下理論知識
HOG特征:
方向梯度直方圖(Histogram of Oriented Gradient, HOG)特征是一種在計算機視覺和圖像進行中用來進行物體檢測的特征描述子。它通過計算和統計圖像局部區域的梯度方向直方圖來構成特征。
具體的是實作方法:首先将圖像分成小的連通區域,我們把它叫細胞單元。然後采集細胞單元中各像素點的梯度的或邊緣的方向直方圖。最後把這些直方圖組合起來就可以構成特征描述器。
提高性能: 把這些局部直方圖在圖像的更大的範圍内(我們把它叫區間或block)進行對比度歸一化(contrast-normalized),所采用的方法是:先計算各直方圖在這個區間(block)中的密度,然後根據這個密度對區間中的各個細胞單元做歸一化。通過這個歸一化後,能對光照變化和陰影獲得更好的效果。
優點:與其他的特征描述方法相比,HOG有很多優點。首先,由于HOG是 在圖像的局部方格單元上操作,是以它對圖像幾何的和光學的形變都能保持很好的不變性,這兩種形變隻會出現在更大的空間領域上。其次,在粗的空域抽樣、精細 的方向抽樣以及較強的局部光學歸一化等條件下,隻要行人大體上能夠保持直立的姿勢,可以容許行人有一些細微的肢體動作,這些細微的動作可以被忽略而不影響 檢測效果。是以HOG特征是特别适合于做圖像中的人體檢測的。
HOG特征提取算法的實作過程:
1)HOG特征提取方法就是将一個image(你要檢測的目标或者掃描視窗)灰階化(x,y,z的三維圖像);
2)采用Gamma校正法對輸入圖像進行顔色空間的标準化(歸一化);目的是調節圖像的對比度,降低圖像局部的陰影和光照變化所造成的影響,同時可以抑制噪音的幹擾;
3)計算圖像每個像素的梯度(包括大小和方向);主要是為了捕獲輪廓資訊,同時進一步弱化光照的幹擾。
4)将圖像劃分成小cells(例如6*6像素/cell);
5)統計每個cell的梯度直方圖(不同梯度的個數),即可形成每個cell的descriptor;
6)将每幾個cell組成一個block(例如3*3個cell/block),一個block内所有cell的特征descriptor串聯起來便得到該block的HOG特征descriptor。
7)将圖像image内的所有block的HOG特征descriptor串聯起來就可以得到該image(你要檢測的目标)的HOG特征descriptor了。這個就是最終的可供分類使用的特征向量了。
關于SVM可以參看www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/ml/introduction_to_svm/introduction_to_svm.html
(2)那麼使用PCL 檢測行人該如何使用呢?
目标: detecting people walking on the ground plane
輸入:RGBXYZ pointcloud ground coeficients
輸出:people clusters
流程圖:

步驟
detected on point cloud
(1)groud plane estimation and removal
(2)Euclidean clustering of remaining points
(3)people vertically splitted int more clusters
sub-clustering procedure
(4)candidates pruning based on height from the ground plane
(5) merging of clusters close in groud plane coordinates
(6)Subdivision of big clusters by means of head detection
HOG+SVM evaluation
(7)candidate clusters are extened until the ground for achieving robustness to lower limbs occlusion
(8)HOG detector applied to image patches that are projection of 3Dclusters onto the RGB image
pcl::people代碼的構架
GroundBasedPeopleDetectionAPP<PointT>
________________|_____________________
| | |
PersonClassifier<pcl::RGB> PersonCluster<PointT> headBasedSubclustering<pointT>
| |
HOG detector HeightMap2D<PointT>
代碼解析
但是我們知道這需要其他的頭檔案配合。那麼其他程式就不再一一貼出來。PCL源碼裡也有,但是如果你直接編譯是編譯不過去的,是以需要我們自己寫一個CMakeLists.txt檔案來編譯。
暫時就到這裡了。。。。。。
微信公衆号号可掃描二維碼一起共同學習交流