利用Matlab R2016b 实现图像配准(解决运行官方代码报错The value of 'MovingImage' is invalid的问题)

之前利用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图片转换为灰度图,满足该要求,问题解决。
如果大家有好的解释或者方法,也可以留言交流。

猜你喜欢

转载自blog.csdn.net/Power1_Power2/article/details/81362553