求matlab如何对多帧图像同一像素点取中值

现有100帧640*320的灰度图像1.bmp~100.bmp,怎么才能用matlab对这100帧图像的每一个像素点的值取中值,并且显示这张中值图像?希望高手帮我一下。

1、算法:
一个循环语句,分别读取每帧图像。对于每帧图像,用一个矩阵变量储存每一个像素的值,累加起来,最后除以帧数,得到中值。
2、例程:
clear all;
s=[];
for k=1:100
filename=[num2str(k), '.bmp']; % 图像文件要放在当前目录下,否则前面要加路径
b=imread(filename, 'bmp');
s=[s, double(b(:))]; % 图像分辨率必须一致,要不然会出错。
end
siz=size(b);
s=s';

% 显示最后一幅图像
subplot(2,2,1);
imshow(b)
title('原图像之一')

% 求均值图像
bm=sum(s)/100; % 求100幅图的均值
bm=reshape(bm,siz);
bm=uint8(bm);
subplot(2,2,2);
imshow(bm); % 显示均值图像
title('均值图像')

% 求中值图像
bm=median(s); % 求100幅图像的中间值
bm=reshape(bm,siz);
bm=uint8(bm);
subplot(2,2,3);
imshow(bm) % 显示中值图像
title('中值图像');

% 最大亮度图
n=hist(s,0:255); % 求灰度分布
[maxn, ind]=max(n); % 频数最高的灰度值,maxn为该灰度值出现的次数,ind为该灰度值在0:255中的下标
bm=reshape(ind-1,siz);
bm=uint8(bm);
subplot(2,2,4);
imshow(bm)
title('最高频数图像')
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-06-14
clear all;
s=[];
for k=1:100
filename=[num2str(k), '.bmp']; % 图像文件要放在当前目录下,否则前面要加路径
b=imread(filename, 'bmp');
s=[s, double(b(:))]; % 图像分辨率必须一致,要不然会出错。
end
siz=size(b);
s=s';

% 显示最后一幅图像
subplot(2,2,1);
imshow(b)
title('原图像之一')

% 求均值图像
bm=sum(s)/100; % 求100幅图的均值
bm=reshape(bm,siz);
bm=uint8(bm);
subplot(2,2,2);
imshow(bm); % 显示均值图像
title('均值图像')

% 求中值图像
bm=median(s); % 求100幅图像的中间值
bm=reshape(bm,siz);
bm=uint8(bm);
subplot(2,2,3);
imshow(bm) % 显示中值图像
title('中值图像');

% 最大亮度图
n=hist(s,0:255); % 求灰度分布
[maxn, ind]=max(n); % 频数最高的灰度值,maxn为该灰度值出现的次数,ind为该灰度值在0:255中的下标
bm=reshape(ind-1,siz);
bm=uint8(bm);
subplot(2,2,4);
imshow(bm)
title('最高频数图像')本回答被提问者采纳
相似回答