Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

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