如何在MATLAB中找到几个图像的方差

时间:2016-10-01 10:55:04

标签: matlab

我对MATLAB和图像处理比较陌生,所以请跟我理解。我正在进行图像处理实验,而我目前的阶段,我需要 1)读取一些图像(大约100个相同尺寸的图像) 2)将它们存储在变量(单元格数组,向量或结构)中 3)找出每个图像中每个像素的方差 4)形成一个新的矩阵来存储每个计算的方差

这是我的代码,但我不确定它是否解决了这个问题,而不是因为我得到了结果

clc;
im_File = dir('*.bmp');
files = {im_File.name};

for k=1:numel(files)

   im{k}  = imread(files{k});

   %# Get the number of dimensions for your arrays 
   dim = ndims(im{k});                    

   all_images = cat(dim+1,im{:});

   % Use linear combine to acquire all the images
   Linear_comb_im = imlincomb(1,all_images,'uin'); 

   %get the variance of all images
   computed_variance = var(double(Linear_comb_im),1,dim+1); 

end

1 个答案:

答案 0 :(得分:1)

所以看起来你在这里有一个冗余变量:imall_im基本上都保存了相同的信息。如果尺寸不相同我将使用单元格数组,否则matlab更喜欢矩阵。

另外,我不确定你为什么要进行线性组合。

我会做以下事情:

clc;
im_File = dir('*.bmp');
files = {im_File.name};

for k=1:numel(files)

   im(:,:,k)  = imread(files{k}); % to save time you should initialize im begore the loop i.e. im = zeros(m,n,numerl(files)), where m,n are the size of the images

end

%get the variance of all images
computed_variance = var(double(im),1,3);

所以im这里是一个包含第三维图像的3D矩阵。要访问idx图像:

im(:,:,idx)