HOG特征向量维度与规模的理解困惑及技术问询
嘿,我来帮你拆解这些关于HOG特征的疑问:
关于9-bin直方图是否是9维向量:完全没错!每个8×8的patch(也就是HOG里的「cell」)输出的9-bin方向直方图就是一个9维向量。因为它由9个独立的数值构成——每个数值对应一个方向区间内的梯度幅值累加结果,每个数值代表一个维度,完全符合向量的定义。
关于你提到的「8×8×2=128个数值」的误解:这里你可能把中间计算步骤和最终特征输出搞混啦。8×8的cell里,每个像素会计算梯度的x、y两个分量(所以是8×8×2=128个中间值),但HOG会把这些梯度的幅值按方向分到9个区间(bin)里累加,最终每个cell只输出9个数值,也就是那个9维的直方图向量,128是中间计算量,不是最终特征维度哦。
关于patch(cell)总数的计算:你的计算是对的!如果滑动步长和cell尺寸相同(HOG默认是8像素),那么有效cell数量的计算方式是
floor((图像边长 - cell边长)/步长) + 1,代入286的话就是floor((286-8)/8)+1=35,所以35×35=1225个cell,这个结果没问题。
另外补充个实用细节:实际工程中用HOG时,通常会把相邻的cell组成「block」(比如2×2个cell)来做归一化,这样能提升特征的鲁棒性。如果用2×2的block、步长8像素的话,整图的block数量是floor((286-16)/8)+1=34,也就是34×34个block,每个block包含4个cell的9-bin直方图,归一化后每个block是36维,整图的HOG特征维度就是34×34×36=41616维。但如果只是单纯计算每个cell的9-bin直方图不做block归一化,那整图的特征向量就是1225×9=11025维。
内容的提问来源于stack exchange,提问作者Shivanshu Raj

