Zoom in on two images simultaneously displayed using imshowpair
16 views (last 30 days)
Show older comments
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 Comment
Accepted Answer
Adam Danz
on 9 Feb 2021
Edited: Adam Danz
on 9 Feb 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 Comments
Siddharth Pantoji
on 21 Dec 2022
Edited: Siddharth Pantoji
on 21 Dec 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
on 21 Dec 2022
You need to specify which axis the lines should be added to .
line(ax(1), ...)
line(ax(2), ...)
More Answers (0)
See Also
Categories
Find more on Basic Display in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!