tags:

views:

448

answers:

3

Can we show an image in its original size in MATLAB?

Right now when we are showing, it is exactly fitted to the image window size. However, I want to show the image in its original size. When the image is of larger size, a scroll bar should appear in the image window. This would allow the user to view the image in its original size.

Any ideas on how to achieve this? Is is possible?

+3  A: 

I believe what you're looking for is the IMTOOL utility (which is a part of the Image Processing Toolbox). It's a MATLAB GUI that allows you to view images in their original size (100% magnification) with horizontal and vertical sliders.

EDIT:

The above solution will display your image in a new figure window (the IMTOOL GUI). If you don't want the image appearing in a new window, but instead want to adjust its size in a window of your own, it will be more difficult. To adjust the size of the image, which I assume you've displayed on a set of axes using the IMAGE command, you will have to adjust a number of axes properties for the axes containing the image. The following are the properties you will likely end up modifying:

  • 'Units': This can be set to 'inches', 'centimeters', or 'pixels', for example.
  • 'Position': This controls where the axes are placed in the figure window, in units governed by the 'Units' property.
  • 'DataAspectRatio'/'PlotBoxAspectRatio': These control the relative scaling of the axes and the surrounding plot box.
  • 'XLim'/'YLim': The minimum and maximum values of the axes.

After getting the size and scaling of the image to display the way you want, parts of the image could be outside the figure window area. Unfortunately, horizontal and vertical sliders will not be automatically added. You will have to create these slider controls yourself using the UICONTROL function. You will have to write the callback functions for the slider controls such that they move the axes around in the window.

If you choose to venture down the above path, here are a few links to GUI design tutorials that may help you: a slider tutorial on blinkdagger, a blog post by Doug Hull, and a video from Doug on GUIDE basics.

gnovice
It should maybe be pointed out that imtool is in the Image Processing Toolbox.
Richie Cotton
@Richie: Good point. I added your comment to the answer.
gnovice
An explanation for the downvote would be nice.
gnovice
+1  A: 

Matlab slider has a problem that it fires callback only on MouseUp and not on MouseMove, so pure matlab implementation would always feels strange.

Better way - go for Java in Matlab. So you do not have to re-implement whole scroll logics. You can put Java Swing GUI component inside Matlab window, it is not difficult at all.

Specifically you have to use Swing JScrollPane Class. With Matlab javacomponent() function you can put it inside matlab window.

There are tons of examples on the web on how to get image into scroll pane, just browse for JScrollPane image. You can use Java classes inside matlab with usual Matlab syntax (no need for new keyword, ecc.)

Mikhail
A: 

Could anyone give an example of code to display an image in its 100% using image command?

Thanks.

Drazick