HOG特徵檢測

2021-09-02 08:14:58 字數 2731 閱讀 1349

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...