【问题标题】:Applying temporal median filter to a video将时间中值滤波器应用于视频
【发布时间】:2016-01-26 05:08:54
【问题描述】:

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

首先加载所有帧,

%%% 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);

然后创建一个 3-D 深度矩阵(高 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

最后沿第三方向(时间)应用一维中值滤波器

temp = medfilt1(stack);

但是,由于某种原因,这不起作用。当我尝试查看每一帧时,我得到白色图像。

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

任何帮助将不胜感激!

【问题讨论】:

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


    【解决方案1】:

    我的猜测是这实际上是有效的,但 frame1 属于 double 类并包含值,eg 介于 0 和 255 之间。因为 imshow 默认情况下在 [ 0,1] 比例,您将获得白色的饱和图像。

    因此我建议:

    caxis auto
    

    imshow 之后修复显示问题。

    最好的,

    【讨论】:

    • 是的,你是对的!使用imshow(frame1, []) 也可以解决问题。谢谢!
    猜你喜欢
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多