Problem with "imregister" function
7 views (last 30 days)
Show older comments
Adrian
on 21 Aug 2013
Commented: sathiya sankari T.V
on 20 Aug 2015
Hello,
I'm trying to use the imregister function to register two pictures. To get some experience with this function I did nothing else than typing in the code I found on http://www.mathworks.de/de/help/images/ref/imregconfig.html (Open: Examples). My code than looked like that:
fixed = imread('foto.jpg');
moving = imrotate(fixed, 5, 'bilinear', 'crop');
imshowpair(fixed, moving,'Scaling','joint');
[optimizer, metric] = imregconfig('monomodal');
movingRegistered = imregister(moving,fixed,'rigid',optimizer, metric);
After that I get the Error: Error using imregister>parseInputs (line 208) Argument 'MovingImage' failed validation with error: All dimensions of the moving image should be greater than 4.
Error in imregister (line 91) parsedInputs = parseInputs(varargin{:});
Please help me. Thank You.
3 Comments
sathiya sankari T.V
on 20 Aug 2015
how to check the dimension of the image?.In properties it shows the dimension is 225*225.
Accepted Answer
Alex Taylor
on 26 Sep 2013
Edited: Alex Taylor
on 26 Sep 2013
Because imregister works with volumetric input as well as with planar 2-D images, there is ambiguity with multi-channel 2-D images, like your RGB input image.
To avoid this ambiguity, you need to form a 2-D image from your RGB image prior to calling imregister. One way to do this is to use rgb2gray on your moving and fixed images prior to calling imregister:
fixed = rgb2gray(fixed);
moving = rgb2gray(moving);
You could also use a particular color channel, as ImageAnalyst suggested.
Otherwise, imregister is going to interpret your input imagery as a 3-plane volume. The error message you are getting is telling you that with the default number of PyramidLevels, there aren't enough pixels along the 3rd dimension to form a pyramid.
2 Comments
Image Analyst
on 26 Sep 2013
Once you've done the registration with the grayscale version of the image, how do you get and apply the transform to another image (i.e. the RGB image)?
Alex Taylor
on 26 Sep 2013
If you are using R2013a (and later), then you can use imregtform to obtain the geometric transformation that relates moving to fixed. imregtform uses the exact same algorithm as imregister, but returns a geometric transformation as the LHS argument:
You can then use the function imwarp to apply the geometric transformation to your RGB image. When a 2-D geometric transformation is applied to an N-D volume, imwarp interprets this as a 2-D plane at a time geometric transformation, which is what you want for an RGB image.
More Answers (2)
Adrian
on 23 Aug 2013
1 Comment
Yazan Awwad
on 25 Sep 2013
Hi, I am trying to register two images using imregister as well. I get the same error as urs. I was wondering if u were able to figure out how to get rid of this error. Please let me know. Thank you, Yazan
Image Analyst
on 25 Sep 2013
Edited: Image Analyst
on 25 Sep 2013
It ran for me with no problem, once I changed to the standard demo image cameraman.tif. You obviously have a lot more stuff going on that you didn't show us because the error showed up on line 91 but you didn't post 91 lines of code.
4 Comments
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!