我已经阅读了一篇论文(Human activity recognition with metric learning)并尝试实施它。
作者使用了通道(轮廓,光流),之后,他计算了每个通道的直方图,如附图所示。
我计算了视频的轮廓和光流。但问题是,
1-上述直方图的重点是什么?是用于以合适的形式表示特征吗?
2-此方法与HOG相同。
3-如何实现上述直方图?它只是划分边界框? ..非常感谢。
抱歉给您带来不便
此致
答案 0 :(得分:1)
我会尝试回答各种不同的问题,使用后者的伪代码。
1-作者的最终目的似乎是获取他们追踪的窗口描述符(我猜是跟踪,我还没读过这篇论文)。因此,在计算剪影S
和Fx
以及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`