Zoom in on two images simultaneously displayed using imshowpair
16 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaire
Réponse acceptée
Adam Danz
le 9 Fév 2021
Modifié(e) : Adam Danz
le 9 Fév 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 commentaires
Siddharth Pantoji
le 21 Déc 2022
Modifié(e) : Siddharth Pantoji
le 21 Déc 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
le 21 Déc 2022
You need to specify which axis the lines should be added to .
line(ax(1), ...)
line(ax(2), ...)
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Basic Display dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!