您的位置:首页 > 编程语言 > MATLAB

图像处理 加法练习 Matlab 图像叠加求平均去噪

2013-10-23 20:25 459 查看
读入视频中同一场景的数帧图像,然后将图像叠加,通过求平均值来降低图像中的噪声。

matlab程序实现

输入:.avi视频

输出:叠加求平均后的图像

Obj = VideoReader('zgn1.avi');
save_path = '.\';
index_start = 1;
index_end = 50;

nFrames = Obj.NumberOfFrames;
vidHeight = Obj.Height;
vidWidth = Obj.Width;

frame_start = index_start;
frame_end = index_end;

if frame_num < index_start
disp('total frame < parameter index_start');
return;
end

if frame_num < index_end
frame_end = frame_num;
end

% 预分配空间 Preallocate movie structure.
mov =  struct('cdata',zeros(vidHeight,vidWidth,3,'uint8'),...
'colormap',[]);

% Read one frame at a time.
for k = frame_start : frame_end
mov.cdata = read(Obj,k);
file_data = frame2im( mov );

if ( 3 == ndims( file_data ) )
file_data = rgb2gray( file_data );
end

roi_data = file_data;

if k == 1
I = double(roi_data);
else
I = I + double(roi_data);
end
end

I2 = uint8(I/(index_end-index_start+1));
imwrite(I2, 'out.png');
figure;
imshow(I2);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息