Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

イメージのシーケンスでの演算の実行

この例では、イメージのシーケンスで演算を実行する方法を説明します。この例では、複数のイメージの配列を作成し、配列全体を関数 stdfilt に渡してシーケンス内の各イメージに対して標準偏差フィルター処理を実行します。

ファイル名の配列を作成します。

fileFolder = fullfile(matlabroot,'toolbox','images','imdata');
dirOutput = dir(fullfile(fileFolder,'AT3_1m4_*.tif'));
fileNames = {dirOutput.name}'
numFrames = numel(fileNames)
fileNames =

  10x1 cell array

    {'AT3_1m4_01.tif'}
    {'AT3_1m4_02.tif'}
    {'AT3_1m4_03.tif'}
    {'AT3_1m4_04.tif'}
    {'AT3_1m4_05.tif'}
    {'AT3_1m4_06.tif'}
    {'AT3_1m4_07.tif'}
    {'AT3_1m4_08.tif'}
    {'AT3_1m4_09.tif'}
    {'AT3_1m4_10.tif'}


numFrames =

    10

m x n x p の配列を事前に割り当てて、イメージを配列に読み取ります。

I = imread(fileNames{1});
sequence = zeros([size(I) numFrames],class(I));
sequence(:,:,1) = I;

for p = 2:numFrames
    sequence(:,:,p) = imread(fileNames{p});
end

標準偏差フィルター処理を実行してシーケンス内の各イメージを処理します。イメージ シーケンスに stdfilt を使用するには、nhood 引数を指定し、2 次元の近傍を渡さなければならないことに注意してください。

sequenceNew = stdfilt(sequence,ones(3));

各入力イメージに続き、その処理後のイメージを表示します。

figure;
for k = 1:numFrames
      imshow(sequence(:,:,k));
      title(sprintf('Original Image # %d',k));
      pause(1);
      imshow(sequenceNew(:,:,k),[]);
      title(sprintf('Processed Image # %d',k));
      pause(1);
end