Main Content

Crear herramienta de comparación de imágenes mediante ROI

En este ejemplo se muestra cómo utilizar las nuevas funciones de ROI para crear una herramienta de comparación de imágenes interactiva. Cuando trabajamos con imágenes, a menudo necesitamos evaluar visualmente el impacto que una función tiene en una imagen. Algunos efectos son claramente distinguibles, como un filtro de borde. Pero algunos impactos son más sutiles y necesitan una inspección más cercana.

Leer imagen de muestra en el espacio de trabajo

Lea una imagen de ejemplo en el espacio de trabajo y, a continuación, cree una versión en escala de grises de la imagen. Utilice la función para ver las dos imágenes.imshowpair La opción muestra las imágenes en paralelo.montage

im = imread('peppers.png'); imgray = rgb2gray(im); figure; imshowpair(im,imgray,'montage') 

Con un ROI, establezca la capa alfa (transparencia) de dos imágenes apiladas para que una imagen se muestre solo dentro del ROI. Esta vista selectiva sigue el ROI para que se pueda mover de forma interactiva. Cree una nueva figura y un eje.

hFigure = figure(); hAxes = axes('Parent', hFigure); 

Apilar ambas imágenes en los mismos ejes.

hImage1 = imshow(im, 'Parent', hAxes); drawnow; % Ensure the image gets drawn. hold on; hImage2 = imshow(imgray, 'Parent', hAxes); hold off; 

Cree un ROI circular en los ejes.

centerLocation = [220, 100]; radius = 60; hC = images.roi.Circle(...     'Parent', hAxes,...     'FaceAlpha',0,...     'Center',centerLocation,...     'Radius', radius); 

Cree un agente de escucha que escuche los cambios en la posición del ROI (el círculo). La función updateAlpha se define al final de este ejemplo.

addlistener(hC,'MovingROI', @updateAlpha); 

Ejecute la devolución de llamada manualmente la primera vez

updateAlpha(hC) 

Simular el acercamiento a una región.

hC.Parent.XLim = [75 370]; hC.Parent.YLim = [0 205]; 

Este archivo contiene el código fuente de una función que implementa esta herramienta de comparación de imágenes. Este código escucha dos eventos adicionales. Cuando un usuario introduce la tecla 't/T' para cambiar qué imagen está en la parte superior. El código también escucha la rueda de desplazamiento del ratón para aumentar o disminuir el radio del ROI.

edit helperImageComparer 

Una animación de la herramienta en uso

Función de devolución de llamada para actualizar la capa alfa

Función de devolución de llamada para actualizar la capa alfa a medida que se mueve el objeto ROI.

function updateAlpha(hC, ~) hImages = findobj(hC.Parent,'Type','image'); % Create a BW mask from the Circle ROI mask = hC.createMask(hImages(1).CData); % Set the alpha data so that the underlying image shows through % only inside the circle set(hImages(1),'AlphaData', ~mask); end 

Consulte también

| |

Temas relacionados