之前利用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圖片轉換爲灰度圖,滿足該要求,問題解決。
如果大家有好的解釋或者方法,也可以留言交流。
如果覺得本文寫的還不錯的夥伴,可以給個關注一起交流進步,如果有在找工作且對阿里感興趣的夥伴,也可以發簡歷給我進行內推: