直方图箱的HOG三线性插值

时间:2011-07-03 20:35:31

标签: image-processing computer-vision

我正致力于定向梯度直方图(HOG)功能,我正在尝试实现Dalal博士论文中描述的直方图箱的三线性插值。他解释了下面引用的插值过程:

编辑:粗略地说,HOG功能是从64x128像素窗口中提取的,该窗口被分成块。每个块由2x2个单元组成,单元为8x8像素区域。提取从计算图像的一阶导数开始,然后计算每个像素的方向和大小。计算每个8×8像素单元的块内的取向直方图,其中像素基于像素的取向对具有幅度值的直方图作出贡献,并且在取向和位置两者中在相邻的箱中心之间插值。直方图包含9个区间代表0-180度,步幅为20度。这里可以看到算法的总体描述:http://4.bp.blogspot.com/_7NBDeKCsVHg/TKBbldI8GmI/AAAAAAAAAG0/G-OXUz1ouPQ/s1600/a1.bmp

  

我们首先描述线性插值   在一维空间然后   将其扩展到3-D。设h是直方图   具有bin间距离(带宽)b。   h(x)表示的值   以x为中心的bin的直方图。   假设我们想要插入一个   重量w在点x进入   直方图。设x1和x2为二   最近的邻近垃圾箱   x使得x1≤x<1。 X2。线性   插值分配权重w   如下两个最近的邻居   linear interpolation

     

让w在三维点x = [x,y,z]   是要插值的权重。让   x1和x2是两个角矢量   包含x的直方图立方体,其中   在每个分量中x1≤x<1。 X2。假设   直方图的带宽   沿x,y和z轴给出   b = [bx,by,bz]。三线   插值分配权重w   到周围的8个垃圾箱中心   如下:   trilinear interpolation formula

     

我们计算单元格的直方图,并且每个像素对其直方图的幅度值有贡献。我从配方中理解的是,x和y表示检测窗口中细胞的位置,z是bin编号。在64x128检测窗口中,有8x16个单元格和9个方向区域,因此我们的直方图表示为h(8,16,9)。如果以上陈述是正确的,do(x1,y1)和(x2,y2)分别代表前一个和字母单元格? z1和z2是指前一个和字母方向的箱子吗?那么带宽b = [bx,by,bz]?

如果有人能澄清这些问题,我将非常感激。

感谢。

2 个答案:

答案 0 :(得分:4)

将(x1,y1,z1)和(x2,y2,z2)视为跨越围绕要为其插值h的点(x,y,z)的立方体的两个点。 一组八个点(x1,y1,z1),(x2,y1,z1),(x1,y2,z1),(x1,y1,z2),(x2,y2,z1),(x2,y1, z2),(x1,y2,z2),(x2,y2,z2)形成完整的立方体。因此,(x1,y1,z1)和(x2,y2,z2)之间的三线性插值实际上意味着在您感兴趣的点周围的3D直方图空间中的8个点之间进行插值!现在回答你的问题:

(x1,y1),(x2,y2)(和(x1,y2)和(x2,y1)代表(x,y)平面中的区域中心。在你的情况下,这些将是方向向量。

正如你所说,

z1和z2代表方向上的两个bin级别。结合图像平面中的四个点,这总共为您提供了8个箱。

带宽b = [bx,by,bz]基本上是x,y和z方向上相邻区间的中心之间的距离。在你的情况下,x方向有8个区,那个方向有64个像素,y方向有16个bin,y方向有128个像素:

bx = 8 pixels
by = 8 pixels

这留下了bz,我实际上需要更多的数据,因为我不知道你的渐变的整个范围(即从最低到最高的可能值),但如果该范围是rg那么:

bz = rg/9

一般来说,任何方向的带宽都等于该方向的全部可用范围除以该方向的箱数。

有关使用图片的三线性插值的详细解释,请查看whoplisp's answer中的链接。

答案 1 :(得分:3)

让我们先来看看矩形HOG。图片分为几个图块,如第32页所示。 第46页显示了(f)中的R-HOG描述符。第49页解释了数据的分区方式。

我通过阅读Paul Burke的文章了解了如何进行3D插值:http://paulbourke.net/miscellaneous/interpolation/

抱歉,我必须生成自己的图片,以了解发生了什么。 这当然是一项有趣的技术。