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.

OnePlusOneEvolutionary

Configuración de optimizador evolutivo de uno-más-uno

Descripción

Un objeto OnePlusOneEvolutionary describe una configuración de optimización evolutiva uno-más-uno que se pasa a la función imregister para resolver problemas de registro de imágenes.

Creación

Puede crear un objeto OnePlusOneEvolutionary utilizando los métodos siguientes:

  • imregconfig — Devuelve un objeto OnePlusOneEvolutionary emparejado con una métrica apropiada para registrar imágenes multimodales

  • Al introducir

    metric = registration.optimizer.OnePlusOneEvolutionary;
    en la línea de comandos se crea un objeto OnePlusOneEvolutionary con la configuración predeterminada

Propiedades

expandir todo

Factor de crecimiento del radio de búsqueda, especificado como escalar positivo. El optimizador utiliza GrowthFactor para controlar la velocidad a la que el radio de búsqueda crece en el espacio de parámetros. Si establece GrowthFactor en un valor grande, la optimización es rápida, pero podría resultar en encontrar sólo el extremo local de la métrica. Si establece GrowthFactor en un valor pequeño, la optimización es más lenta, pero es probable que converja en una solución mejor.

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

Tamaño mínimo del radio de búsqueda, especificado como escalar positivo. Epsilon controla la exactitud de la convergencia ajustando el tamaño mínimo del radio de búsqueda. Si establece Epsilon en un valor pequeño, la optimización de la métrica es más precisa, pero el cálculo tarda más tiempo. Si establece Epsilon en un valor grande, el tiempo de cálculo desista a expensas de la precisión.

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

Tamaño inicial del radio de búsqueda, especificado como escalar positivo. Si establece InitialRadius en un valor grande, el tiempo de cálculo disminuye. Sin embargo, los valores demasiado grandes de InitialRadius podrían resultar en una optimización que no converja.

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

Número máximo de iteraciones optimizadas, especificada como escalar entero positivo. MaximumIterations determina el número máximo de iteraciones que el optimizador realiza en cualquier nivel de pirámide dado. El registro podría converger antes de que el optimizador alcance el número máximo de iteraciones.

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

Ejemplos

contraer todo

Cree un objeto OnePlusOneEvolutionary y utilícelo para registrar dos imágenes de IRM de una rodilla que se obtuvieron utilizando diferentes protocolos.

Lee las imágenes en el espacio de trabajo. Las imágenes son multimodales porque tienen diferente brillo y contraste.

fixed  = dicomread('knee1.dcm'); moving = dicomread('knee2.dcm');

Ver las imágenes desalineadas.

figure imshowpair(fixed, moving,'Scaling','joint');

Cree el objeto de configuración del optimizador adecuado para registrar imágenes multimodales.

optimizer = registration.optimizer.OnePlusOneEvolutionary
optimizer =    registration.optimizer.OnePlusOneEvolutionary    Properties:          GrowthFactor: 1.050000e+00               Epsilon: 1.500000e-06         InitialRadius: 6.250000e-03     MaximumIterations: 100 

Cree el objeto de configuración métrico adecuado para registrar imágenes multimodales.

metric = registration.metric.MattesMutualInformation;

Afine las propiedades del optimizador para que el problema se converja en un máximo global. Aumente el número de iteraciones que el optimizador usará para resolver el problema.

optimizer.InitialRadius = 0.009; optimizer.Epsilon = 1.5e-4; optimizer.GrowthFactor = 1.01; optimizer.MaximumIterations = 300;

Realizar el registro.

movingRegistered = imregister(moving,fixed,'affine',optimizer,metric);

Ver las imágenes registradas.

figure imshowpair(fixed, movingRegistered,'Scaling','joint');

Algoritmos

Un algoritmo evolutivo itera para encontrar un conjunto de parámetros que produzcan el mejor resultado de registro posible. Lo hace perturbando, o mutando, los parámetros de la última iteración (el padre). Si los nuevos parámetros (secundarios) obtienen un mejor resultado, entonces el niño se convierte en el nuevo padre cuyos parámetros se perturban, quizás más agresivamente. Si el padre rinde un mejor resultado, sigue siendo el padre y la perturbación siguiente es menos agresiva.

Referencias

[1] Styner, M., C. Brechbuehler, G. Székely, and G. Gerig. "Parametric estimate of intensity inhomogeneities applied to MRI." IEEE Transactions on Medical Imaging. Vol. 19, Number 3, 2000, pp. 153-165.

Introducido en R2012a