如何计算轮廓直方图?

时间:2016-08-09 19:36:41

标签: algorithm image-processing histogram descriptor

我已经阅读了一篇论文(Human activity recognition with metric learning)并尝试实施它。

作者使用了通道(轮廓,光流),之后,他计算了每个通道的直方图,如附图所示。

我计算了视频的轮廓和光流。但问题是,

1-上述直方图的重点是什么?是用于以合适的形式表示特征吗?

2-此方法与HOG相同。

3-如何实现上述直方图?它只是划分边界框? ..非常感谢。

抱歉给您带来不便

此致

1 个答案:

答案 0 :(得分:1)

我会尝试回答各种不同的问题,使用后者的伪代码。

1-作者的最终目的似乎是获取他们追踪的窗口描述符(我猜是跟踪,我还没读过这篇论文)。因此,在计算剪影SFx以及Fy频道后,作者通过附加MxMx3有一个[S, Fx, Fy]窗口,3个频道。这不是一个非常合适的表示窗口的形式,因为(1)是非常高的维度(MxMx3可能变量M),(2)不是缩放或方向不变的,(3)它不是一个强大的描述符。作者只是使用直方图方法(类似于HoG中的方法但不相同)将MxMx3通道转换为216维描述符(MxMx3 -> 216,而不管M)。

2-上面那种答案吧。不是HoG,但类似于HoG,SIFT和其他特征提取方法。

3-如果我没有理解错误(只有少量信息),只需将边界框划分为2x2网格(4个方格/子窗口)。对于每个子窗口将它分成18个20度的切片(这不是直接的,但是知道像素相对于子窗口中心的位置,你可以计算角度,因此,饼图切片在其中它落了。

然后,让像素p属于子窗口(i,j)(带0 <= i,j < 2)和饼图片k,添加其值(在每个通道中) )到直方图:

hist(i, j, k, c) += data(p, c)

其中c是频道(3个频道[S, Fy, Fx]),data(p, c)是您在3个频道的数据p和频道c

您将获得2x2x18x3 = 216描述符。你提供的摘录并没有提到关于规范化描述符的任何内容,但我想如果它没有说什么,那就是:

hist(i, j, k, c) /= sum(abs(flatten(hist)))

或者可以分别对每个子窗口和通道进行标准化(如在猪中执行):

hist(i, j, k, c) /= sum(abs(hist(i, j, :, c)) # summing over the 3rd axis `k`