HOG—梯度直方图描述符

一. 计算梯度直方图(HOG)

利用Sobel算子卷积原图得到gx和gy,然后计算全局梯度和方向。请添加图片描述
为了后续更有效率,将8x8的小方形称为一个单元(cell),2x2的cell组成有一个块(block)。然后计算cell中的HOG(9bins),那么一个block就拥有一个2x2x9=36维向量。之后以8为步长,进行block窗口滑动。
Bloc归一化:对于一个向量,b = (a1, a2, …an)。归一化后的向量为b’ = (a1/A, a2/A, …an/A)。A为b中各元素平方和开方。这样可以防止消除整体光照的影响。
当每滑动一次,一个block就得到一个长度为36的特征向量,那会得到多少个特征向量呢?
将一幅图像划分成cell的个数为8x16,就是横向有8个cell,纵向有16个cell。每个block有2x2个cell的话,那么block的个数为:(16-1)x(8-1)=105。即有7个水平block和15个竖直block。
再将这105个block合并,就得到了整个图像的特征描述符,长度为 105×36=3780。

Python中模块的内置函数实现HOG可视化:

def HOG_des(image):
    fd, hog_image = feature.hog(image, orientations=9, pixels_per_cell=(8, 8), cells_per_block=(2, 2), visualize=True)
    # Rescale histogram for better display  # 描述符长度 : ((w/8)-1) * ((h/8)-1) * (4*9) 
    hog_image_rescaled = exposure.rescale_intensity(hog_image, in_range=(0, 10))
    return image, hog_image_rescaled

Reference:
https://zhuanlan.zhihu.com/p/85829145
该文讲的很清晰。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值