scikit-image:提取HOG(Histogram of Oriented Gradients)
原文链接: http://scikit-image.org/docs/dev/auto_examples/features_detection/plot_hog.html
Histogram of Oriented Gradients
方向梯度直方图特征描述子在目标检测中经常用到,在接下来的实例中,我将计算HOG描述子并将其可视化。
算法说明
HOG特征计算步骤
- (可选)全局图像归一化
- 计算x和y方向的梯度图像
- 计算梯度直方图
- 跨区块正规化
- 展平为一个特征向量
每步详细步骤
第一阶段应用可选的全局图像归一化均衡,旨在减少光线的影响。实际上,使用gamma(幂定律)压缩,计算每个颜色通道的平方根或对数。图像纹理强度通常与局部表面光线成比例,因此这种压缩有助于减少局部阴影和照明变化的影响。
第二阶段计算一阶图像梯度。这将捕获轮廓,侧影和一些纹理信息,同时提供对光线变化更强的抵抗性。使用局部主导色彩通道,在很大程度上提供了色彩不变性。变体方法还可以包括作为primitive bar detectors的二阶图像衍生物 - 用于捕获的有用特征。例如:像自行车结构和人类四肢的bar。
第三阶段旨在产生对局部图像内容敏感的编码,同时对抵抗姿态或外观的小变化保持抵抗性。采用的方法与SIFT特征相同的方式在本地集中方向梯度信息。图像窗口分为小空间区域,称为“cell”。对于每个cell,我们在cell中的累计所有像素上的局部1-D梯度或边缘方向直方图。这种组合的cell级1-D直方图形成基本的“方向直方图”表示。每个方向直方图将梯度角范围分为固定数量的预定bins。cell中的像素的梯度大小用于投影到方向直方图中。
第四阶段计算标准化,在进入下一阶段之前,将局部的cell群和对比度归一化其总体反应。 归一化引入更好的照度,阴影和边缘对比度的不变性。 通过在本地称为“block”的cell的本地组上累积局部直方图“能量”的度量来执行。 结果用于标准化块中的每个单元格。 通常,每个单独的单元在多个块之间共享,但是其标准化是块依赖的,因此是不同的。 因此,细胞在具有不同归一化的最终输出向量中出现多次。 这似乎是多余的,但它提高了性能。 我们将归一化块描述符称为定向梯度(HOG)直方图描述符。
最后一步将覆盖检测窗口的块的密集重叠网格的所有块的HOG描述符收集到用于窗口分类器的组合特征向量中。
代码与结果
import matplotlib.pyplot as plt |