Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

images.geotrans.Warper

Aplicar la misma transformación geométrica a muchas imágenes de manera eficiente

Descripción

Un objeto Warper crea un deformador de imagen a partir de un objeto de transformación geométrica affine2d o projective2d para imágenes con un tamaño específico.

Creación

Sintaxis

w = images.geotrans.Warper(tform,inputSize)
w = images.geotrans.Warper(tform,inputRef)
w = images.geotrans.Warper(tform,inputRef,outputRef)
w = images.geotrans.Warper(sourceX,sourceY)
w = images.geotrans.Warper(___,Name,Value)

Descripción

ejemplo

w = images.geotrans.Warper(tform,inputSize) crea un Warper de imagen a partir del objeto de transformación geométrica tform para imágenes con tamaño inputSize.

w = images.geotrans.Warper(tform,inputRef) crea un Warper de imagen, donde inputRef especifica el sistema de coordenadas de las imágenes de entrada.

w = images.geotrans.Warper(tform,inputRef,outputRef) crea un Warper de imagen, donde outputRef especifica el sistema de coordenadas de la imagen de salida. Esta sintaxis puede utilizarse para mejorar el rendimiento limitando la aplicación de la transformación geométrica a una región de salida específica de interés.

w = images.geotrans.Warper(sourceX,sourceY) crea un Warper de imagen, donde sourceX y sourceY especifican las coordenadas de la imagen de entrada necesarias para realizar la transformación geométrica. sourceX y sourceY son matrices en 2-D del mismo tamaño que la imagen de salida requerida. Cada índice (x, y) de sourceX y sourceY especifica la ubicación en la imagen de entrada para el píxel de salida correspondiente.

w = images.geotrans.Warper(___,Name,Value) establece las propiedades mediante uno o varios pares nombre-valor, para cualquiera de las sintaxis anteriores. Por ejemplo, warper = images.geotrans.Warper(tform,size(im),'FillValue',1) especifica el valor utilizado para los píxeles fuera de la imagen original. Incluya cada nombre de propiedad en comillas simples.

Argumentos de entrada

expandir todo

Transformación geométrica, especificada como un objeto de transformación geométrica affine2d o projective2d .

Tamaño de imagen de entrada, especificado como un vector 1-por-2 o 1-por-3 de la forma [m n] o [m n p].

Tipos de datos: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

Referencia del objeto asociado a la imagen de entrada, especificada como un objeto de referencia espacial imref2d .

Referencia del objeto asociado a la imagen de salida, especificado como un objeto de referencia espacial imref2d .

Coordenadas de imagen de entrada, especificadas como una matriz 2-D del mismo tamaño que la imagen de salida requerida.

Tipos de datos: single

Propiedades

expandir todo

Tamaño de las imágenes de entrada, especificadas como un vector de dos elementos de la forma [m n] o un vector de tres elementos de la forma [m n p].

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Tamaño de las dos primeras dimensiones de la imagen de salida, especificada como un vector de dos elementos del formulario [m n].

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Método de interpolación, especificado como 'linear', 'nearest'o 'cubic'.

Tipos de datos: char | string

Valor utilizado para los píxeles de salida fuera de los límites de la imagen de entrada, especificado como escalar numérico. Warper lanza el valor de relleno al tipo de datos de la imagen de entrada.

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Funciones del objeto

warpAplicar transformación geométrica

Ejemplos

contraer todo

Escoge un conjunto de imágenes del mismo tamaño. En el ejemplo se utiliza un conjunto de imágenes que muestran celdas.

imds = imageDatastore(fullfile(matlabroot,'toolbox','images','imdata','AT*'));

Crear una transformación geométrica para girar cada imagen por 45 grados y reducir cada imagen.

tform = affine2d([ 0.5*cos(pi/4) sin(pi/4)     0;                   -sin(pi/4)     0.5*cos(pi/4) 0;                    0             0             1]);

Cree un objeto Warper , especificando el objeto de transformación geométrica, tformy el tamaño de las imágenes de entrada.

im = readimage(imds,1); warper = images.geotrans.Warper(tform,size(im));

Determine el número de imágenes que se procesarán y preasigne la matriz de resultados.

numFiles = numel(imds.Files); imr = zeros([warper.OutputSize 1 numFiles],'like',im);

Aplique la transformación geométrica a cada una de las imágenes de entrada llamando a la función warp del objeto Warper .

for ind = 1:numFiles     im = read(imds);     imr(:,:,1,ind) = warp(warper,im); end

Visualice las imágenes de salida. (desactive el mensaje de advertencia acerca de las imágenes que se están escalando para la visualización.)

warning('off','images:initSize:adjustingMag') montage(imr);

Sugerencias

  • Si las imágenes de entrada tienen planos p ([m, n, p]), warp aplica la transformación a cada plano de forma independiente.

Algoritmos

Warper está optimizado para aplicar la misma transformación geométrica a través de un lote de imágenes de mismo tamaño. Warper logra esta optimización dividiendo el proceso de deformación en dos pasos: la compartición de las coordenadas convertidas (realizadas una vez) y la interpolación en la imagen (hecha para cada imagen). En comparación con imwarp, este enfoque acelera todo el proceso significativamente para imágenes pequeñas y medianas, con rendimientos decrecientes para imágenes de mayor tamaño.

Consulte también

Funciones

Objetos

Introducido en R2017b