Problem with "imregister" function
20 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Adrian
el 21 de Ag. de 2013
Comentada: sathiya sankari T.V
el 20 de Ag. de 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 comentarios
sathiya sankari T.V
el 20 de Ag. de 2015
how to check the dimension of the image?.In properties it shows the dimension is 225*225.
Respuesta aceptada
Alex Taylor
el 26 de Sept. de 2013
Editada: Alex Taylor
el 26 de Sept. de 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 comentarios
Image Analyst
el 26 de Sept. de 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
el 26 de Sept. de 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.
Más respuestas (2)
Adrian
el 23 de Ag. de 2013
1 comentario
Yazan Awwad
el 25 de Sept. de 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
el 25 de Sept. de 2013
Editada: Image Analyst
el 25 de Sept. de 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 comentarios
Ver también
Categorías
Más información sobre Image Processing Toolbox en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!