具体细节:
title : Histograms of Oriented Gradients for Human Detection
from : CVPR-2005
motivation : 用于提取图像的特征
主要操作流程 :
step - 1. Normalize gamma & colour
step - 2. Compute gradient
step - 3. weighted vote into spatial & orientation cells
step - 4. Contrast normalize over overlapping spatial blocks
step - 5. collect HoG over detection window
step - 6. Linear SVM
具体操作流程 :
@ Normalize gamma & colour
grayscale, RGB, LAB colour space | RGB, LAB samilar; grayscale worse
@ Gradient Computation
首先进行 Gaussian smoothing, 然后再用梯度算子提取梯度信息
特别地对于BGR彩图, 对其三个通道分别提取梯度算子, 然后取范数较大者作为当前pixel的gradient vector
@ Spatial / Orientation Binning
vote = f(gradient magnitude) ; f : I, square, square root
在[0, 180]的方向范围内, 增加bins的个数,性能显著提高;
@ Normalization and Descriptor Blocks
R-HOG
C-HOG
Block Normalization schemes : L2_norm, L2_Hys, L1_norm, L1_sqrt
HoG和SIFT的区别:
SIFT’s are optimized for sparse wide baseline matching;
R-HOG’s for dense robust coding of spatial form
demo
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on 2019/02/17
author: On_theway
"""
from IPython import embed
from skimage.feature import hog
from skimage import io
if __name__ == '__main__':
im = io.imread('./test_id.jpeg', as_grey = True)
normalised_blocks, hog_image = hog(im, orientations=9, pixels_per_cell=(8, 8), cells_per_block=(3, 3), visualise=True, transform_sqrt=True)
io.imshow(hog_image)