为什么HOG描述符返回float
而不是int
的向量?它假设返回直方图..
答案 0 :(得分:2)
为了补充我认为正确的先前答案,根据HoG note我发现比初始Dalal & Triggs paper更清楚,有两个规范化步骤:
将细胞分组为每个2 x 2个细胞的重叠块,这样 每个块的大小为2C x 2C像素。两个水平或垂直 连续的块由两个单元重叠,即块步幅为 C像素。结果,每个内部单元被四个覆盖 块。将每个块中的四个单元格直方图连接成一个 单块特征b并通过其标准化块特征 欧几里德规范。
最终的标准化使HOG功能与整体无关 图像对比度。
在两个连续的二进制位之间还应该进行双线性插值投票以防止量化伪像。
此外,它不能是一个int,因为您不仅要计算落在bin中的渐变向量的数量,还要添加渐变幅度。
答案 1 :(得分:1)
我相信@Micka是对的:直方图可能正常化(可能不是1)。在Wikipedia page on HOG Descriptors上写着:
为了提高准确度,可以通过计算图像的较大区域(称为块)的强度度量,然后使用该值来标准化块内的所有单元,来对比度标准化局部直方图。这种归一化导致更好的照明和阴影变化的不变性。
因此需要vector<float>
代替vector<int>
。