File Exchange

image thumbnail

Image Registration App

version (202 KB) by Brett Shoelson
UI environment for registering a Moving image to a Fixed image


Updated 01 Sep 2016

View License

Provided interactive access to ALL parameters and components used by the IMREGISTER tool chain.

REQUIRES the Image Processing Toolbox and MATLAB R2012a or later!

Launches a GUI with default images.
(New images can be loaded from the menu.)

Launches a UI with user-specified Moving and Fixed images. Images can be specified by name, or provided directly.

CLASS SUPPORT/NOTE: ImageRegistrationGUI supports the same (2D grayscale) image classes supported by IMREGISTER. However, it will also work on RGB images (using RGB2GRAY under the hood), and on logical images (using IM2DOUBLE).
Direct calculation of the transformation matrix("TFORM") is now supported (requires R2013a)!

Cite As

Brett Shoelson (2020). Image Registration App (, MATLAB Central File Exchange. Retrieved .

Comments and Ratings (35)


Brett Shoelson


(Note: this is a duplicated/modified comment from 2014 to remove some broken links.)

Image Registration App is just a front end for the functionality of IMREGISTER.
IMREGISTER is actually a collection of algorithms (optimization + similarity metrics). Because of this, the correct citation would depend on what flavor of optimization and metric you're using.
Here are some applicable references:
Mutual Information based registration:
"Nonrigid multimodality image registration" D. Mattes, D. R. Haynor, H. Vesselle, T. Lewellen and W. Eubank Medical Imaging 2001: Image Processing, 2001, pp. 1609-1620. [2] "PET-CT Image Registration in the Chest Using Free-form Deformations" D. Mattes, D. R. Haynor, H. Vesselle, T. Lewellen and W. Eubank IEEE Transactions in Medical Imaging. Vol.22, No.1, January 2003. pp.120-128. [3] "Optimization of Mutual Information for MultiResolution Image Registration" P. Thevenaz and M. Unser IEEE Transactions in Image Processing, 9(12) December 2000.
One Plus One Evolutionary Optimizer:
"Parametric estimate of intensity inhomogeneities applied to MRI" Martin Styner, G. Gerig, Christian Brechbuehler, Gabor Szekely, IEEE TRANSACTIONS ON MEDICAL IMAGING; 19(3), pp. 153-165, 2000.
"Evaluation of 2D/3D bias correction with 1+1ES-optimization" Martin Styner, Prof. Dr. G. Gerig (IKT, BIWI, ETH Zuerich), TR-197.
Most of the literature seems to take the basic similarity metric/ optimization framework for granted without citing references. The references are usually for specific parts of the framework (numeric optimization, image similarity metrics, ways of pyramiding, etc.).
Hope that helps,

José Rosario

Brett Shoelson

@aravindh: This UI is just a front end for the functionality in the Image Processing Toolbox. The references you need are in the documentation for the functions my app accesses.

aravindh raju

will you give atleat one refernce paper please

Brett Shoelson

No...not by design. Not unless you can extrapolate image-wide parameters from planewise registrations. Sorry.

John Thompson

Hello Brett,

Will this work on 3D image sets (e.g., MRI)?


oussama moujahed

can i see this file

Vali ollah Maraghi


can i use this tool for 3D rigid image registration for MRI in matlab

Brett Shoelson

@Zhiwei and Wang: Thanks for the notes and ratings.

You can just cite MATLAB and the Image Processing Toolbox. For example: MATLAB and Image Processing Toolbox Release 2015a, The MathWorks, Inc., Natick, Massachusetts, United States.

zhiwei Li

I want to apply this code in my thesis, thank you, what should I reference?

Wang Hongyu

I appreciate the work you have done and I want to cite it in my article. How can I cite it in references?? Thank You

Brett Shoelson

Thanks for the rating. I guess I would still call this an intensity-based segmentation, unless you are extracting properties of the regions (centers, radii) and using some algorithm to match. In this case your intensities are binary-valued, but they're still intensities.


Dear Brett,

I have 2 images which they contain a circle.
First, I segmented the circle in both images, then apply your registration app to register them.

My question is, what will be the name of my registration?

* Intensity-based?
* Feature-based?
* Segmentation-based?

Since, my images are "black & white", I think I cannot name it "intensity-based", right?

Thank you

Brett Shoelson

Just click on the "Download Submission" button on the upper right of this page.

binu livingston

i want coding for this

Thank you very much Brett to provide me a comprehensive information. Appreciate your help and looking forward to see more great jobs from you. If I face any issue, i will back to ask you.

Best Wishes.
S.M.M. Kahaki

Hello Mr. Brett Shoelson,

Thank you very much for provide this implementation. i want to use this method as comparison in my journal paper. i need to cite the basic journal paper of this implementation. please provide me the citation if any.
Thank you very much.
S.M.M. Kahaki



Brett Shoelson

Hi Emily,
I am not sure what you mean by "manual...GUI." But it probably wouldn't make any difference if I did. While IMREGCONFIG, IMREGISTER, and IMREF3D all facilitate 3D image registration, I haven't incorporated that capacity into this application, nor am I aware of any GUI that does. You might find the demo on "Registering Multimodal 3-D Medical Images" useful, though.


Hello Brett,
Do you know of any manual registration GUIs for 3D images?
Thank you!

Brett Shoelson

Eric, "it doesn't work properly" doesn't help me fix it. I use this frequently in both R2013a and R2013b, and without problems. If you can steer me to the issues you're finding, perhaps I can get to the bottom of them.

And the inability to generate the tform reflects the current status of IMREGISTER, and isn't necessarily a limitation of this tool. That said, function IMREGTFORM was added to the Image Processing Toolbox in R2013a, and my updated version reflects that change. (And provides the tform as an output.)

Thanks for the rating,


It doesn't work properly in 2013a and 2013b, in that there doesn't seem to be a way to have it generate the t-form matrix.... Otherwise, it works great in older versions! I was bit harsh in the last rating...



hi brett,

i was taken noise image as a fixed image and the 45 degree rotated image as moving image.

after doing the image registration i am getting different different angle rotation..

please any suggest solution for above..



I think I have the same question as Panagiotis... I am able to successfully register two images with the program and want to use the t matrix provided in the command window to perform the same transformation to another image. However, when performing this operation the scaling seems all wrong (it moves the image way too far I think). Can you provide any suggestions on how to better use that t matrix? Is this due to the images possibly being in a spatial vs. pixel coordinate system? Thanks!


I figure it out! I used the following example:
and it worked!!! Thanks again!



Hi Brett, this is a very good program, well done! When finishing the process a t matrix for transformation appears in the command window. How can I use that matrix to transform and register another image without re-running the whole code? I'm saying this because I'm collecting the same image in 3 different "colors" and I want to transform/register all the images with the properties from the initial run. Any suggestions?

PS. When I'm saying "colors" I mean that the same captured frame is collected through a different filter that reveals different information each time.


Brett Shoelson

Thanks for the feedback, John. ImageRegistrationGUI was designed to expose and allow control over every possible input to the new IMREGISTER function, and to show interactively the results of changing those inputs. Internally, IMREGISTER generates a TFORM (which is appropriate for use in a call to IMTRANSFORM, exactly as is a tform generated with CP2TFORM); internally, in fact, IMREGISTER _uses_ IMTRANSFORM. The TFORM structure is not currently provided as an output, but if you modified the syntax of the function, you could easily avail yourself of that TFORM.
The < CPSELECT> tool does have a "point prediction" mode.
HTH, Brett

John D

The Gui is very helpful and works really well as a tool for evaluating intensity based image registration. However the core function is a convergence algorithm and possibly because of this, never seems to produce pixel perfect or near perfect registration. It's main advantage is obviously to automate the process without requiring control point user intervention.
Conversely from my experience, imtransform seems to produce better registration results and I can get pixel perfect registration in most cases for my application, but this requires user intervention for control point generation.
What would be really good, from my viewpoint is an algorithm which takes the initial control points from the base image and then automatically searches for equivalent matches in the unregistered image. Any help you can provide in this direction would be a definite five star!

Brett Shoelson

Ray, IMSHOWPAIR (like IMREGISTER) is in the Image Processing Toolbox in R2012a. (See "requirements" above.) Compelling reason to upgrade... :)


missing imshowpair function(?)

mohamed nagah


Updated license

Bug fixes. Should be more robust over a wider range of MATLAB versions.

Just changed the description to indicate that as of R2013a, now supports calculation of TFORM.

Updated to work with IMREGTFORM/IMWARP in R2013a, and to output code for TFORM creation. Also renamed from "GUI" to "App."

Updated to include an App file for R2012b.

Better path management when loading new files. (Now queries for second image starting in the directory of the first image.)


MATLAB Release Compatibility
Created with R2012b
Compatible with any release
Platform Compatibility
Windows macOS Linux