Realizar una operación en una secuencia de imágenes
Este ejemplo muestra cómo realizar una operación en una secuencia de imágenes. Este ejemplo crea un arreglo de imágenes y pasa todo el arreglo a la función stdfilt para realizar el filtrado de desviación estándar en cada imagen de la secuencia.
Cree un arreglo de nombres de archivos.
fileFolder = fullfile(matlabroot,'toolbox','images','imdata'); dirOutput = dir(fullfile(fileFolder,'AT3_1m4_*.tif')); fileNames = {dirOutput.name}' numFrames = numel(fileNames)
fileNames =
10×1 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
Preasigne un arreglo de m por n por p y lea imágenes en el arreglo.
I = imread(fileNames{1});
sequence = zeros([size(I) numFrames],class(I));
sequence(:,:,1) = I;
for p = 2:numFrames
sequence(:,:,p) = imread(fileNames{p});
end
Procese cada una de las imágenes de la secuencia realizando el filtrado de desviación estándar. Tenga en cuenta que, para utilizar stdfilt con una secuencia de imágenes, debe especificar el argumento nhood pasando un entorno 2D.
sequenceNew = stdfilt(sequence,ones(3));
Visualice cada imagen de entrada seguida de su imagen procesada.
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
