之前利用MATLAB配准图像,按照官网的代码进行配准:
clc;clear;
%配准图片的导入
fixed=imread('D:\Test\患侧1组白光图.tif');
moving=imread('D:\Test\健侧1组白光图.tif');
%显示配准之前的图片
figure, imshowpair(moving, fixed, 'montage')
title('Unregistered')
figure, imshowpair(moving, fixed)
title('Unregistered')
%粗配准
[optimizer,metric] = imregconfig('multimodal');
movingRegisteredDefault = imregister(moving, fixed, 'affine', optimizer, metric);
%显示粗配准的图片
figure, imshowpair(movingRegisteredDefault, fixed)
title('A: Default registration')
以上就是粗配准的代码了,但是实际运行过程中,并不会如官网的MRI示例一样顺利,而是会出现如下错误:
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{:});"
可以看到是:
movingRegisteredDefault = imregister(moving, fixed, 'affine', optimizer, metric);
这一行代码出错,网上也没有具体的解决办法,勉强一试,修改为:
movingRegisteredDefault = imregister(rgb2gray(moving), rgb2gray(fixed), 'affine', optimizer, metric);
完美解决。去外网咨询过后,还有另一种解决方法:
movingRegistered = imregister(moving(:,:,Channel), fixed(:,:,Chanel), 'affine', optimizer, metric);
同样可以,究其原因,分析报错:All dimensions of the moving image should be greater than 4.
运动图像的所有尺寸应大于4。将原始RGB图片转换为灰度图,满足该要求,问题解决。
如果大家有好的解释或者方法,也可以留言交流。