将时间中值滤波器应用于视频

时间:2015-10-26 22:48:19

标签: matlab image-processing coding-style video-processing

我想将时间中值滤镜应用于深度贴图视频,以确保时间一致性并防止闪烁效果。 因此,我试图通过以下方式立即对所有视频帧应用滤镜:

首先加载所有帧,

%%% Read video sequence
numfrm = 5;
infile_name = 'depth_map_1920x1088_80fps.yuv';
width = 1920; %xdim
height = 1088; %ydim

fid_in = fopen(infile_name, 'rb');
[Yd, Ud, Vd] = yuv_import(infile_name,[width, height],numfrm);
fclose(fid_in);

然后创建一个三维深度矩阵(高x宽x帧数),

%%% Build a stack of images from the video sequence
stack = zeros(height, width, numfrm);
for i=1:numfrm
  RGB = yuv2rgb(Yd{i}, Ud{i}, Vd{i});
  RGB = RGB(:, :, 1);
  stack(:,:,i) = RGB;
end

最后沿第三个方向(时间)应用1-D中值滤波器

temp = medfilt1(stack);

然而,由于某种原因,这是行不通的。当我尝试查看每个帧时,我会看到白色图像。

 frame1 = temp(:,:,1);
 imshow(frame1);

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:4)

我的猜测是,这实际上有效,但frame1属于double类并且包含值,例如介于0到255之间。由于imshow代表双默认情况下,在[0,1]比例下,您可以获得白色饱和图像。

因此我建议:

caxis auto

imshow之后解决显示问题。

最佳,