Error message in Intensity-Based Automatic Image Registration

26 visualizzazioni (ultimi 30 giorni)
Hi
I am trying to compare and analyze blank and dermatome maps (attached) in order to quantify number of shaded pixels and percentage of shaded pixels within the template body outline. Ultimately this will be used with pain and paresthesia maps. My understanding is that I wil want to use Image Registration in the Image processing toolbox, and that 'Intensity-Based Automatic Image Registration' would serve my purposes. While following the online tutorial I keep running into this error when I try to use imRegister:
Error using imregtform>parseInputs (line 252) The value of 'MovingImage' is invalid. All dimensions of the moving image should be greater than 4.
Error in imregtform (line 123) parsedInputs = parseInputs(varargin{:});
Error in imregister (line 119) tform = imregtform(varargin{:});
Any help on how to solve this problem or any general information on image registration would be greatly appreciated. My entire coding attempt is below for your viewing pleasure:
>> fixed = imread ('blankmap.jpg');
>> moving = imread ('dermatomemap.jpg');
>> figure, imshowpair (moving, fixed, 'montage')
Warning: Image is too big to fit on screen; displaying at 13% > In imuitools/private/initSize at 71 In imshow at 282 In imshowpair at 124
>> title ('unregistered')
>> [optimizer, metric] = imregconfig ('multimodal'); >> movingRegisteredDefault = imregister (moving, fixed, 'affine', optimizer, metric);
Error using imregtform>parseInputs (line 252) The value of 'MovingImage' is invalid. All dimensions of the moving image should be greater than 4.
Error in imregtform (line 123) parsedInputs = parseInputs(varargin{:});
Error in imregister (line 119) tform = imregtform(varargin{:});
Matt

Risposta accettata

Ben11
Ben11 il 11 Giu 2014
It might be that you need to use grayscale images (using rgb2gray). Eg:
movingRegisteredDefault = imregister (rgb2gray(moving), rgb2gray(fixed), 'affine', optimizer, metric);
or you can register using a single channel :
movingRegisteredDefault = imregister (moving(:,:,Channel), fixed(:,:,Channel), 'affine', optimizer, metric);
  4 Commenti
mengying zhao
mengying zhao il 2 Mar 2021
the second idea,shows don't define channel?how to solve?
Walter Roberson
Walter Roberson il 2 Mar 2021
If you are registering a particular single channel, then assign the channel number to Channel before executing the code.

Accedi per commentare.

Più risposte (1)

Anand
Anand il 11 Giu 2014
imregister expects the 2-D images to be in grayscale. It does not use color information as part of the registration.
If you're images are in RGB colorspace, you can do this:
moving = rgb2gray(moving);
fixed = rgb2gray(fixed);
[optimizer, metric] = imregconfig('multimodal');
movingRegisteredDefault = imregister(moving, fixed, 'affine', optimizer, metric);

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by