2015-10-26 75 views
3

我想將時間中值濾波器應用於深度圖視頻以確保時間一致性並防止閃爍效應。 因此,我試圖應用於所有視頻幀的過濾器一次通過:對視頻應用時間中值濾波器

第一裝載的所有幀,

%%% 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深度矩陣(高度×寬度×數的-frames)

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

任何幫助將不勝感激!

回答

4

我的猜測是,這實際上是工作,但frame1是類double和包含值,例如,介於0和255之間。由於imshow默認情況下表示爲[0,1]比例的雙重圖像,因此會獲得白色飽和圖像。

因此,我要建議:

caxis auto 

imshow後修復顯示問題。

最好,

+0

是的,你是對的!使用'imshow(frame1,[])'也解決了這個問題。謝謝! – DML2014