我怎样才能进行3D傅立叶变换......?

时间:2014-04-28 07:58:40

标签: matlab fft

我正在尝试使用fftn功能,但我收到错误。我的代码是:

clc;
clear all;
close all;
% video=VideoReader('C:\Users\Public\Videos\Sample Videos\Wildlife.wmv');
video=read('C:\Users\Public\Videos\Sample Videos\gray\myvideo.avi');
f=fftn(v);
i=imread('C:\Users\Public\Videos\Sample Videos\gray\2.jpg');
f=fftshift(fftn(i));
figure,imshow(i);
figure,imshow(log(1+f),[]);
  1. 当我为单个框架应用fftn时,我得到与fft2函数相同的结果

    i=imread('C:\Users\Public\Videos\Sample Videos\gray\2.jpg');
    f=fftshift(fftn(i));
    
  2. 但是当我在fftn上应用video时,我收到了错误消息:

  3.   

    ???未定义的功能或方法'读取'输入参数类型' char'
      在线
      v = read(' C:\ Users \ Public \ Videos \ Sample Videos \ gray \ myvideo.avi');

    当我取消评论此行时:

    video=VideoReader('C:\Users\Public\Videos\Sample Videos\Wildlife.wmv');  
    

    我收到此错误:

      

    ???未定义的功能或方法' VideoReader'对于' char'类型的输入参数。

    我浏览了fftnifftn的算法,但无法找到解决方案。

    问题:

    1. 我应该如何使用fftnifftn对视频序列应用3d FFT并仅从相位光谱中取回帧?
    2. 此外,在视频中应用fftn功能之前是否需要将rgb视频转换为灰色视频?

1 个答案:

答案 0 :(得分:1)

如果我理解正确,问题不在于“fftn”,而在于“read”和“VideoReader”功能。通常“对于'char'类型的输入参数的未定义函数或方法'读'错误源于特定函数不在MATLAB路径或pwd中的事实(之前已经回答过,你应该能够找到它)更多关于此的信息)。

无论如何,

  

$ - -all read

  

$ -all VideoReader

会告诉你他们在哪里。如果你看到''read'/'VideoReader'找不到。“然后他们不在那里。 在这种情况下,请检查它们是否位于实际位于matlab路径(>> PATH)的子目录中。 确保它不是私人目录,或者cmd行无法访问它们(有关详细信息,请参阅http://www.mathworks.ch/ch/help/matlab/matlab_prog/private-functions.html

一旦你对它进行了排序,检查它是否正确加载,执行:

  

$ video = VideoReader('C:\ Users \ Public \ Videos \ Sample Videos \ Wildlife.wmv');

     

$ get(视频)

干杯