Zoom in on two images simultaneously displayed using imshowpair
17 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
BC
el 9 de Feb. de 2021
Comentada: Adam Danz
el 21 de Dic. de 2022
I have two images of the same dimensions. I'm using the code below to display them side by side.
imshowpair(imageA, imageB, "montage")
Currently if I zoom into an area of imageA in the figure ouput, it zooms solely into this area, treating the two images as one image. I want to be able to zoom into an area in imageA, and for the display to also zoom into the corresponding area of imageB at the same time, so I can compare the same areas of both images when zooming in.
Can I do this using imshowpair, the tools in the figure output, or some other way?
Thanks for the help!
1 comentario
Respuesta aceptada
Adam Danz
el 9 de Feb. de 2021
Editada: Adam Danz
el 9 de Feb. de 2021
> If I zoom into an area of imageA in the figure ouput, it zooms solely into this area, treating the two images as one image
That's because the two images are merged into one image on the same axes.
To achieve a dual display with independent axis tools, you need to plot the images in different axes. Then use linkaxes to yoke the axis limits when zooming/panning.
% Read in demo image
img = imread('cameraman.tif');
fig = figure();
ax(1) = axes('Units','normalized','Position', [ .1 .1 .4 .8]);
ax(2) = axes('Units','normalized','Position', [ .5 .1 .4 .8]);
imshow(img, 'Parent', ax(1))
imshow(img, 'Parent', ax(2))
linkaxes(ax)
4 comentarios
Siddharth Pantoji
el 21 de Dic. de 2022
Editada: Siddharth Pantoji
el 21 de Dic. de 2022
Hi Adam,
I cant seem to get my annotations (red lines) to appear on both the images. Any suggestions?
Hold didnt work either
fig = figure();
ax(1) = axes('Units','normalized','Position', [ .1 .1 .4 .8]);
ax(2) = axes('Units','normalized','Position', [ .5 .1 .4 .8]);
imshow(ReferenceImage2, 'Parent', ax(1))
line([0 2464],[MW_lowerlimit-1 MW_lowerlimit-1],get(gca,'Ylim'),'Color',[1 0 0],'linewidth',0.5);
line([0 2464], [MW_upperlimit+1 MW_upperlimit+1],get(gca,'Ylim'),'Color',[1 0 0],'linewidth',0.5);
line([MW_leftlimit-1 MW_leftlimit-1],[0 2056],get(gca,'Ylim'),'Color',[1 0 0],'linewidth',0.5);
line([MW_rightlimit+1 MW_rightlimit+1],[0 2056],get(gca,'Ylim'),'Color',[1 0 0],'linewidth',0.5);
line([CenterLinePosition CenterLinePosition],[0 2056],get(gca,'Ylim'),'Color',[1 0 0],'linewidth',0.5,'LineStyle','--');
imshow(ReferenceImage1, 'Parent', ax(2))
line([0 2464],[MW_lowerlimit-1 MW_lowerlimit-1],get(gca,'Ylim'),'Color',[1 0 0],'linewidth',0.5);
line([0 2464], [MW_upperlimit+1 MW_upperlimit+1],get(gca,'Ylim'),'Color',[1 0 0],'linewidth',0.5);
line([MW_leftlimit-1 MW_leftlimit-1],[0 2056],get(gca,'Ylim'),'Color',[1 0 0],'linewidth',0.5);
line([MW_rightlimit+1 MW_rightlimit+1],[0 2056],get(gca,'Ylim'),'Color',[1 0 0],'linewidth',0.5);
line([CenterLinePosition CenterLinePosition],[0 2056],get(gca,'Ylim'),'Color',[1 0 0],'linewidth',0.5,'LineStyle','--');
linkaxes(ax)
Adam Danz
el 21 de Dic. de 2022
You need to specify which axis the lines should be added to .
line(ax(1), ...)
line(ax(2), ...)
Más respuestas (0)
Ver también
Categorías
Más información sobre Basic Display en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!