Main Content

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.

imregdemons

Campo de desplazamiento estimado que alinea dos imágenes 2D o 3D

Descripción

ejemplo

[D,moving_reg] = imregdemons(moving,fixed) estima el campo de desplazamiento que alinea la imagen que se va a registrar, , con la imagen de referencia, .Dmovingfixed Los vectores de desplazamiento en cada ubicación de píxel asignan ubicaciones desde la cuadrícula de la imagen a una ubicación correspondiente en la imagen. es una versión deformada de la imagen que se deforma según el campo de desplazamiento y se remuestrea mediante interpolación lineal.fixedmovingmoving_regmovingD

Opcionalmente, puede estimar el campo de desplazamiento usar una GPU (requiere ).Parallel Computing Toolbox™

[D,moving_reg] = imregdemons(moving,fixed,N) especifica el número de iteraciones que se calcularán. Esta función no utiliza un criterio de convergencia y, por lo tanto, siempre se garantiza que se ejecute para el número especificado o predeterminado de iteraciones.

ejemplo

[D,moving_reg] = imregdemons(___,Name,Value) registra la imagen en movimiento utilizando pares nombre-valor para controlar aspectos del cálculo del peso.

Ejemplos

contraer todo

Este ejemplo muestra cómo resolver un problema de registro en el que la misma mano ha sido fotografiada en dos posturas diferentes. La desalineación de las imágenes varía localmente a lo largo de cada imagen. Por lo tanto, se trata de un problema de registro no rígido.

Lea las dos imágenes en el espacio de trabajo.

fixed  = imread('hands1.jpg'); moving = imread('hands2.jpg');

Convierta las imágenes a escala de grises para su procesamiento.

fixed  = rgb2gray(fixed); moving = rgb2gray(moving);

Observe la desalineación inicial. Los dedos están en diferentes poses.

imshowpair(fixed,moving,'montage')

Superponga las dos imágenes para que sea fácil ver dónde difieren las imágenes. Las diferencias se resaltan en verde y magenta.

imshowpair(fixed,moving)

Corrija las diferencias de iluminación entre las imágenes y las imágenes que utilizan la coincidencia de histograma.movingfixed Este es un paso de preprocesamiento común.

moving = imhistmatch(moving,fixed);

Calcule la transformación necesaria para alinear las dos imágenes.

[~,movingReg] = imregdemons(moving,fixed,[500 400 200],...     'AccumulatedFieldSmoothing',1.3);

Mostrar los resultados del registro. En la primera figura, las imágenes se superponen para mostrar la alineación.

imshowpair(fixed,movingReg)

imshowpair(fixed,movingReg,'montage')

Argumentos de entrada

contraer todo

Imagen que se va a registrar, especificada como una imagen en escala de grises 2D o 3D.

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

Imagen de referencia en la orientación de destino, especificada como una imagen en escala de grises 2D o 3D.

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

Número de iteraciones, especificadas como un vector o escalar entero positivo.

Cuando se especifica un vector, es el número de iteraciones por nivel de pirámide (nivel de resolución).N Por ejemplo, si hay 3 niveles de pirámide, puede especificar el vector, donde realiza 100 iteraciones en el nivel de resolución más bajo, 50 iteraciones en el siguiente nivel de pirámide y 25 iteraciones en el último nivel de iteración: el nivel con resolución completa.[100,50,25]imregdemons Dado que se tarda menos tiempo en procesar los niveles de resolución más bajos, ejecutar más iteraciones a baja resolución y menos iteraciones en las resoluciones más altas de la pirámide puede ayudar al rendimiento.

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

Argumentos de par nombre-valor

Especifique pares opcionales separados por comas de argumentos. es el nombre del argumento y es el valor correspondiente. deben aparecer entre comillas.Name,ValueNameValueName Puede especificar varios argumentos de par de nombre y valor en cualquier orden como .Name1,Value1,...,NameN,ValueN

Ejemplo: [D,movingReg] = imregdemons(moving,fixed,[500 400 200],'AccumulatedFieldSmoothing',1.5);

Suavizado aplicado en cada iteración, especificado como el par separado por comas que consta de y un valor numérico.'AccumulatedFieldSmoothing' Este parámetro controla la cantidad de regularización similar a la difusión. aplica la desviación estándar del suavizado gaussiano para regularizar el campo acumulado en cada iteración.imregdemons Los valores más grandes dan como resultado campos de desplazamiento de salida más suaves. Los valores más pequeños dan como resultado una deformación más localizada en el campo de desplazamiento de salida. Los valores suelen estar en el intervalo [0.5, 3.0]. Cuando se especifica varios , la desviación estándar utilizada en el suavizado gaussiano sigue siendo la misma en cada nivel de pirámide.PyramidLevels

Tipos de datos: double

Número de niveles de pirámide de imagen de varias resoluciones que se deben utilizar, especificados como el par separado por comas que consta de un entero positivo.'PyramidLevels'

Tipos de datos: double

Mostrar barra de espera para indicar el progreso, especificado como el par separado por comas que consta de y el valor o .'DisplayWaitbar'truefalse Cuando se establece en , muestra una barra de espera para indicar el progreso de las operaciones de ejecución prolongada.trueimregdemons Para evitar que se muestre una barra de espera, establezca en .imregdemonsDisplayWaitbarfalse

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

Argumentos de salida

contraer todo

Campo de desplazamiento, especificado como una matriz numérica. Los valores de desplazamiento están en unidades de píxeles.

  • Si es una imagen en escala de grises 2D de tamaño -por- , entonces la matriz de campos de desplazamiento es -by- -by-2. contiene desplazamientos a lo largo del eje y contiene desplazamientos a lo largo del eje.fixedmnmnD(:,:,1)xD(:,:,2)y

  • Si es una imagen en escala de grises 3D de tamaño -por- -por- , entonces la matriz de campos de desplazamiento es -by- -by- -by-3. contiene desplazamientos a lo largo del eje, contiene desplazamientos a lo largo del eje- y contiene desplazamientos a lo largo del eje.fixedmnpmnpD(:,:,:,1)xD(:,:,:,2)yD(:,:,:,3)z

Tipos de datos: double

Imagen registrada, devuelta como una imagen en escala de grises 2D o 3D. La imagen se deforma según el campo de desplazamiento y se remuestrea mediante interpolación lineal.D

Sugerencias

  • Para transformar una imagen utilizando el campo de desplazamiento , utilice .Dimwarp

Referencias

[1] Thirion, J.-P. "Image matching as a diffusion process: an analogy with Maxwell’s demons". Medical Image Analysis. Vol. 2, Number 3, 1998, pp. 243–260.

[2] Vercauteren, T., X. Pennec, A. Perchant, N. Ayache, "Diffeomorphic Demons: Efficient Non-parametric Image Registration", NeuroImage. Vol. 45, Number 1, Supplement 1, March 2009, pp. 61–72.

Capacidades ampliadas

Consulte también

Apps

Funciones

Introducido en R2014b