このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
イメージのシーケンスでの演算の実行
この例では、イメージのシーケンスで演算を実行する方法を説明します。この例では、複数のイメージの配列を作成し、配列全体を関数 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