我尝试使用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);
其中channel是我的200x3矩阵。
非常感谢任何帮助。
答案 0 :(得分: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