2

我正在尝试使用 MATLAB重现本文的结果。我需要对视频的 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 矩阵。

任何帮助深表感谢。

4

1 回答 1

0

每个通道在图像对象 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

于 2013-02-12T05:31:48.090 回答