首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用openCV实现C中三维函数[视频]的一维DFT

用openCV实现C中三维函数[视频]的一维DFT
EN

Stack Overflow用户
提问于 2012-05-18 19:25:06
回答 1查看 1.1K关注 0票数 0

我正试图计算C编程中的一个GOP(一组图片-基本上是一个视频)的一维DFT。我需要应用沿时间方向的一维DFT,将gop转换成时间频率域。在这一领域中,空间信息和时频信息都存在于同一帧中。

因此,视频f(x,y,t)的一维DFT (M,N,T),其中M是每个帧的大小,T是GOP中的帧总数,由以下方程计算:

公式方程

有人知道我如何使用openCV或类似的工具来处理这个问题吗?

如果你需要更多的信息,请告诉我!

EN

回答 1

Stack Overflow用户

发布于 2012-05-18 20:52:54

如果我正确理解你的问题,你想要计算时间坐标的傅里叶变换。

为了做到这一点,我认为你需要把你的三维立方体重塑成一个二维矩阵,其中垂直坐标是像素索引(在0,MN-1范围内),水平坐标是时间(范围0,T1),也就是说每一行包含序列中一个像素的值。然后,您可以使用cv::dft()函数和标志CV_DFT_ROWS沿每一行应用DFT例程。

矩阵创建

要创建矩阵,您可以进行如下操作(假设一个视频帧有M行和N列):

  1. cv::Mat分配一个NM行和T列,其中T是时间窗口的宽度(可以是几个帧,也可以是时间序列长度)。让我们将这个矩阵称为W (用于窗口)。
  2. 对于窗口中的每一帧I(.,t),将每个像素I (x,y,t) (x范围为0,N-1和y in ]0,M-1]复制到W中相应的位置,即W(y*M+x,t)

在此过程结束时,W将在每一行中包含一个像素的时间变化值。然后,在W上调用带有标志cv::dftCV_DFT_ROWS,将二维傅里叶变换限制在水平方向,这就是时间。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10658603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档