【问题标题】:Video filter in MATLABMATLAB 中的视频过滤器
【发布时间】:2013-02-11 01:47:35
【问题描述】:

我正在尝试使用 MATLAB 重现 this paper 的结果。我需要对视频的 RGB 通道序列应用过滤器(每个通道每帧有 1 个颜色值,对应于该帧中该通道的所有像素值的总和,即如果有 200 帧我有200x3 矩阵,列是 RGB,行是帧)。

我应该过滤得到的 3 个信号并应用 PCA 和 ICA。

我是信号处理的新手,我一直在尝试使用 FDATool 和过滤器功能,但我做不好。我应该制作一个 FIR 带通滤波器,0.5-3.7 Hz,32 点汉明窗。我用 FDATool 做了一个这样的过滤器,但我不确定 Fs 并且我无法获得一致的结果。

我正在这样做(这可能是错误的):

filt_channels = filter(my_coefficients,1,channels);

channels 是我的 200x3 矩阵。

非常感谢任何帮助。

【问题讨论】:

    标签: matlab image-processing filter signal-processing


    【解决方案1】:

    每个通道在图像对象 img 中都是这样定义的:

    R = img(:,:,1);
    G = img(:,:,2);
    B = img(:,:,3);
    

    您应该能够从 FDATool 导出到过滤器对象。然后,您可以使用以下语法应用过滤器:

    Rfilt=filter2(Object_name, R);
    Gfilt=filter2(Object_name, G);
    Bfilt=filter2(Object_name, B);
    

    其中 Object_name 是生成的过滤器对象,R、G 和 B 是您要过滤的对象。

    如果您想查看它们以查看是否获得了所需的结果,请形成一个矩阵 A,并使用imshow(A)。对视频流中的每一帧执行此操作。

    例如

    filtImg = [];
    
    filtImg(:,:,1) = Rfilt;
    filtImg(:,:,2) = Gfilt;
    filtImg (:,:,3) = Bfilt;
    
    imshow(filtImg)
    

    每个通道(R、G、然后 B)可以像这样在每个帧上单独过滤,然后您可以将 processpca Matlab 函数应用于生成的 RGB 矩阵 filtImg。

    参考文献 http://www.mathworks.com/matlabcentral/newsreader/view_thread/301472 http://www.mathworks.com/help/nnet/ref/processpca.html

    【讨论】:

    • 我尝试将过滤器应用到this 并得到this。我不知道如何正确应用过滤器。
    • 我想在所有帧上应用过滤器,我有 3 个信号,它们是 R、G 和 B 通道,其中每个信号上的每个点都是某一帧中一个通道的像素之和。在灰度图中,我有 100 帧(横轴)。
    • 您提到您不知道 FDAtools 中的 Fs 是什么。那是您的采样频率。前任。你的图像流是 50 fps,所以 Fs = 50。你为此放了什么?
    • 要从这里解决这个问题,我最好的建议是尝试一些事情来调试或评估您的代码。首先,您可以尝试使用 fir1()、fir2() 甚至 butter() 来制作一个更简单的滤波器来过滤相同的信号。然后尝试在 FDATools 中进行相同的设计。比较结果以确定您是否正确使用 FDATools。如果那里没有出现任何奇怪的情况,您可以更进一步,尝试使用 fir1() 和 hamming() 在 FDATools 之外实现整个过滤器,以确定您是否获得了正确的输出。我想通过这些可以告诉你问题出在哪里。
    • 没问题。希望我能提供更多帮助。
    猜你喜欢
    • 2021-05-08
    • 2013-07-17
    • 2020-04-18
    • 2017-01-07
    • 2014-08-08
    • 1970-01-01
    • 2018-06-27
    • 1970-01-01
    • 2013-10-29
    相关资源
    最近更新 更多