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.

Herramienta de comparación de imágenes de compilación

Para ilustrar cómo utilizar devoluciones de llamada para realizar las conexiones necesarias para las interacciones entre herramientas, en este ejemplo se usa la API del panel de desplazamiento para crear una GUI de comparación de imágenes sencilla. Esta herramienta personalizada muestra dos imágenes una al lado de la otra en los paneles de desplazamiento que se sincronizan en ubicación y ampliación. La herramienta personalizada también incluye una herramienta Visión general y un cuadro de ampliación.

function my_image_compare_tool(left_image, right_image)  % Create the figure hFig = figure('Toolbar','none',...               'Menubar','none',...               'Name','My Image Compare Tool',...               'NumberTitle','off',...               'IntegerHandle','off');            % Display left image               subplot(121)   hImL = imshow(left_image);  % Display right image subplot(122) hImR = imshow(right_image);  % Create a scroll panel for left image hSpL = imscrollpanel(hFig,hImL); set(hSpL,'Units','normalized',...     'Position',[0 0.1 .5 0.9])  % Create scroll panel for right image hSpR = imscrollpanel(hFig,hImR); set(hSpR,'Units','normalized',...     'Position',[0.5 0.1 .5 0.9])  % Add a Magnification box  hMagBox = immagbox(hFig,hImL); pos = get(hMagBox,'Position'); set(hMagBox,'Position',[0 0 pos(3) pos(4)])  %% Add an Overview tool imoverview(hImL)   %% Get APIs from the scroll panels  apiL = iptgetapi(hSpL); apiR = iptgetapi(hSpR);  %% Synchronize left and right scroll panels apiL.setMagnification(apiR.getMagnification()) apiL.setVisibleLocation(apiR.getVisibleLocation())  % When magnification changes on left scroll panel,  % tell right scroll panel apiL.addNewMagnificationCallback(apiR.setMagnification);  % When magnification changes on right scroll panel,  % tell left scroll panel apiR.addNewMagnificationCallback(apiL.setMagnification);  % When location changes on left scroll panel,  % tell right scroll panel apiL.addNewLocationCallback(apiR.setVisibleLocation);  % When location changes on right scroll panel,  % tell left scroll panel apiR.addNewLocationCallback(apiL.setVisibleLocation);

La herramienta configura una interacción compleja entre los paneles de desplazamiento con solo unas pocas llamadas a las funciones de la API del panel de desplazamiento. En el código, la herramienta especifica una función de devolución de llamada que se ejecutará cada vez que cambie la ampliación. La función especificada es la función API del otro panel de desplazamiento.setMagnification Por lo tanto, cada vez que la ampliación cambia en uno de los paneles de desplazamiento, el otro panel de desplazamiento cambia su ampliación para que coincida. La herramienta configura una conexión similar para los cambios de posición.

La figura siguiente es un diagrama de secuencia que muestra la interacción entre los dos paneles de desplazamiento configurados por la herramienta de comparación para los cambios en la ampliación y la ubicación.

Conexiones del panel de desplazamiento en la herramienta de comparación de imágenes personalizadas

Para utilizar la herramienta de comparación de imágenes, pásele dos imágenes como argumentos.

left_image = imread('peppers.png'); right_image = edge(left_image(:,:,1),'canny'); my_image_compare_tool(left_image,right_image);

La herramienta abre una ventana de figura, que muestra las dos imágenes una al lado de la otra, en paneles de desplazamiento independientes. La herramienta de comparación personalizada también incluye una herramienta Visión general y un cuadro de ampliación. Al mover el rectángulo de detalle en la herramienta Visión general o cambiar la ampliación en una imagen, ambas imágenes responden.