hog特徵檢測,它是通過計算區域性區域的梯度方向直方圖來構成特徵。
其中檢測視窗win、塊block、單元格cell的基本資訊
(1)大小:
a、檢測視窗:winsize=128*64畫素,在影象中滑動的步長是8畫素(水平和垂直都是)
b、塊:blocksize=16*16畫素,在檢測視窗中滑動的步長是8畫素(水平和垂直都是)
c、單元格:cellsize=8*8畫素
d、梯度方向:乙個cell的梯度方向分為9個方向,在乙個單元格內統計9個方向的梯度直方圖
(2)hog描述子
opencv中乙個hog描述子是針對乙個檢測視窗而言的,乙個檢測視窗有((128-16)/8+1)*((64-16)/8+1)=105個block,乙個block有4個cell,乙個cell的hog描述子向量的長度是9,所以乙個檢測視窗的hog描述子的向量長度是105*4*9=3780維。
hog特徵提取是統計梯度直方圖特徵。具體來說就是將梯度方向(0->360°)劃分為9個區間,將影象化為16x16的若干個block,每個block再化為4個cell(8x8)。對每乙個cell,算出每一畫素點的梯度方向和模,按梯度方向增加對應bin的值,最終綜合n個cell的梯度直方圖形成乙個高維描述子向量。實際實現的時候會有各種插值。
1、hog與sift的區別
hog和sift都是描述子,以及由於在具體操作上有很多相似的步驟,所以致使很多人誤認為hog是sift的一種,其實兩者在使用目的和具體處理細節上是有很大的區別的。hog與sift的主要區別如下:
(1)sift是基於關鍵點特徵向量的描述。
(2)hog是將影象均勻的分成相鄰的小塊,然後在所有的小塊內統計梯度直方圖。
(3)sift需要對影象尺度空間下對畫素求極值點,而hog中不需要。
(4)sift一般有兩大步驟,第乙個步驟對影象提取特徵點,而hog不會對影象提取特徵點。
2、hog的優缺點
優點:(1)hog表示的是邊緣(梯度)的結構特徵,因此可以描述區域性的形狀資訊;
(2)位置和方向空間的量化一定程度上可以抑制平移和旋轉帶來的影響;
(3)採取在區域性區域歸一化直方圖,可以部分抵消光照變化帶來的影響;
(4)由於一定程度忽略了光照顏色對影象造成的影響,使得影象所需要的表徵資料的維度降低了;
(5)而且由於這種分塊分單元的處理方法,也使得影象區域性畫素點之間的關係可以很好得到表徵。
缺點:(1)描述子生成過程冗長,導致速度慢,實時性差;
(2)很難處理遮擋問題;
(3)由於梯度的性質,該描述子對噪點相當敏感。
hog特徵檢測**示例(需要objdetect庫):
最後檢測出3780維向量。
實際上hog更多的用在 hog+svm 行人檢測上
hog+svm行人檢測**示例
#include #include "opencv2/opencv.hpp"
using namespace cv;
using namespace std;
int main(int argc, char** argv)
hogdescriptor hog = hogdescriptor();
hog.setsvmdetector(hog.getdefaultpeopledetector());
vectorfoundlocations;
hog.detectmultiscale(src, foundlocations, 0, size(8, 8), size(32, 32), 1.05, 2);
mat result = src.clone();
for (size_t t = 0; t < foundlocations.size(); t++)
rectangle(result, foundlocations[t], scalar(0, 0, 255), 2, 8, 0);
imshow("hog svm detector demo", result);
waitkey();
return 0;
}執行截圖:
特徵檢測之HOG
參考 原始碼解讀 下面給出opencv的hog特徵提取 hogdescriptor類可以完成hog的特徵提取過程,建構函式 hogdescriptor size win size size 64,128 size block size size 16,16 size block stride siz...
基於Hog特徵的行人檢測
1 先建立相應的txt檔案 f pedestrian image 00000101 0.png f pedestrian image 00000105 0.png f pedestrian image 00000108 0.png f pedestrian image 00000110 0.png ...
OpenCV 基於HOG特徵的行人檢測
opencv中提供了hog的行人檢測 pedestrain detection 類。cv hogdescriptor類的建構函式的各引數的定義 cpp view plain copy cv wrap hogdescriptor winsize 64,128 detect window blocksi...