我正试图计算C编程中的一个GOP(一组图片-基本上是一个视频)的一维DFT。我需要应用沿时间方向的一维DFT,将gop转换成时间频率域。在这一领域中,空间信息和时频信息都存在于同一帧中。
因此,视频f(x,y,t)的一维DFT (M,N,T),其中M是每个帧的大小,T是GOP中的帧总数,由以下方程计算:
公式方程
有人知道我如何使用openCV或类似的工具来处理这个问题吗?
如果你需要更多的信息,请告诉我!
发布于 2012-05-18 20:52:54
如果我正确理解你的问题,你想要计算时间坐标的傅里叶变换。
为了做到这一点,我认为你需要把你的三维立方体重塑成一个二维矩阵,其中垂直坐标是像素索引(在0,MN-1范围内),水平坐标是时间(范围0,T1),也就是说每一行包含序列中一个像素的值。然后,您可以使用cv::dft()
函数和标志CV_DFT_ROWS
沿每一行应用DFT例程。
矩阵创建
要创建矩阵,您可以进行如下操作(假设一个视频帧有M行和N列):
cv::Mat
分配一个NM行和T列,其中T是时间窗口的宽度(可以是几个帧,也可以是时间序列长度)。让我们将这个矩阵称为W (用于窗口)。在此过程结束时,W将在每一行中包含一个像素的时间变化值。然后,在W上调用带有标志cv::dft
的CV_DFT_ROWS
,将二维傅里叶变换限制在水平方向,这就是时间。
https://stackoverflow.com/questions/10658603
复制相似问题