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 = 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
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