[2D Mutual Information Matching using Optimization toolbox]
This is an updated automatic image registration using mutual information for users of IP toolbox coded by Kateryna Artyushkova from The University of New Mexico.
The object function 'image_registr_MI.m' was originally coded by the person and modified by me.
I added a scale factor for complete image registration using Optimization toolbox. Therefore, the Optimization toolbox is required to run this program.
The zip file contains three files.
- opti_MI_scaling.m % Main code
- image_registr_MI.m % Object function
- image.mat % Image matrics
In 'image.mat', IM1 and IM2 were included only for example purpose.
- IM1: 230 X 230 MRI 8-bit image
- IM2: 512 X 512 CT 8-bit image
To run this code, enter the commands as follows:
>> x0=[50; 50; -15; 0.5];
>> [x, fval]=fminsearch(@image_registr_MI,x0)
Run 'opti_MI_scaling' without any options to see an example.
Your selection of initial point, x0, is critical for this matching.
-x0(1): First index of row for cropping the rotated IM2 with x0(3) angle
-x0(2): First index of column for cropping the rotated IM2 with x0(3) angle
-x0(4): Scale factor
Select them as close to the final matching points as possible; otherwise the matching will fail.
The 'fminsearch' function in the Optimization Toolbox is used. The objection function for this optimization technique is 'image_registr_MI.m'
The pixel size of IM1 is bigger than IM2 and the image size of IM1 is smaller than that of IM2. Every image should be 8-bit gray scale image. If not, you must change it.
How to convert IM1 and IM2 images into a single .mat file(here as image.mat)
It works fine and i thank for it .After running the code ,in command window it shows like below.
Elapsed time is 15.828456 seconds.
what is that "x,fval,elapsed time"and that elapsed time changes for each time i run it . why it is so .... I am very new to this area please explain
I appriciate this helpful profile for MI
There seems to be an error in your code, you normalize the histogram by the size of the histogram instead of the size of the image! Otherwise the total probability is != 1
[r,c] = size(h); % THIS SHOULD BE size(image_1) !
b= h./(r*c); % normalized joint histogram
It is very helfull for may tesis, thanks
I may try at once,thank you very much
It is good and helpful
Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.