2016-10-01 8 views
1

私はMATLABと画像処理が比較的新しいので、私と一緒に理解してください。私は画像処理の実験に取り組んでいます。現在の段階では、 が必要です。1)いくつかの画像(同じ寸法の画像が約100枚あります) 2)変数(セル配列、ベクトルまたは構造体)に保存します。 3 )各計算された分散ここでMATLABでいくつかの画像の分散を見つける方法

私のコードがあるを格納するための新しいマトリックスを形成する各画像 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 
+0

なぜ「imlincomb」を呼びますか?あなたは(あなたが行ったように)あなたが行ったように 'dim + 1'に沿って連結することができます(ループの外に移動します)。そして、dim + 1次元に沿って分散を計算することができます。 – Suever

答えて

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) 
関連する問題