图像配准的方法
轉(zhuǎn)自:http://blog.sina.com.cn/s/blog_4b9b714a0100d5k5.html
?圖像配準(zhǔn)的方法
1? 基于特征的圖像配準(zhǔn)
基于特征的圖像配準(zhǔn)首先提取圖像信息的特征,然后以這些特征為模型進(jìn)行配準(zhǔn)。特征提取的結(jié)果是一含有特征的表和對(duì)圖像的描述,每個(gè)特征由一組屬性表示,對(duì)屬性的進(jìn)一步描述包括邊緣的定向和弧度、區(qū)域的大小等。局部特征之間存在著相互關(guān)系,如幾何關(guān)系、輻射度量關(guān)系、拓?fù)潢P(guān)系等。可以用這些局部特征之間的關(guān)系描述全局特征。通常基于局部特征配準(zhǔn)大多都是基于點(diǎn)、線或邊緣的,而全局特征的配準(zhǔn)則是利用局部特征之間的關(guān)系進(jìn)行配準(zhǔn)的方法。
由于圖像的特征點(diǎn)比圖像的像素點(diǎn)要少很多,因此大大減少了配準(zhǔn)過程的計(jì)算量,但特征提取方法的計(jì)算代價(jià)通常較大,不便于實(shí)時(shí)應(yīng)用。特征點(diǎn)的配準(zhǔn)度量值對(duì)位置的變化比較敏感,可以大大提高配準(zhǔn)的精確程度。對(duì)于紋理較少的圖像區(qū)域提取的特征的密度通常比較稀少,局部特征的提取就比較困難。特征點(diǎn)的提取過程可以減少噪聲的影響,對(duì)灰度變化、圖像形變和遮擋等都有較好的適應(yīng)能力。因此,在圖像配準(zhǔn)領(lǐng)域得到了廣泛應(yīng)用。基于特征的圖像配準(zhǔn)方法有兩個(gè)重要環(huán)節(jié):特征提取和特征配準(zhǔn)。
2? 基于互信息的圖像配準(zhǔn)
醫(yī)學(xué)圖像配準(zhǔn)技術(shù)從基于特征的配準(zhǔn)方法發(fā)展到基于統(tǒng)計(jì)的配準(zhǔn)方法有其突破性的意義。與基于特征的配準(zhǔn)方法相比,基于統(tǒng)計(jì)的配準(zhǔn)方法的突出優(yōu)點(diǎn)為魯棒性好、配準(zhǔn)精度高、人工干預(yù)少。基于統(tǒng)計(jì)的配準(zhǔn)方法通常是指最大互信息的圖像配準(zhǔn)方法。
基于互信息的圖像配準(zhǔn)是用兩幅圖像的聯(lián)合概率分布與完全獨(dú)立時(shí)的概率分布的廣義距離來估計(jì)互信息,并作為多模態(tài)醫(yī)學(xué)圖像配準(zhǔn)的測度。當(dāng)兩幅基于共同的解剖結(jié)構(gòu)的圖像達(dá)到最佳配準(zhǔn)時(shí),它們的對(duì)應(yīng)像素的灰度互信息應(yīng)為最大。由于基于互信息的配準(zhǔn)對(duì)噪聲比較敏感,首先,通過濾波和分割等方法對(duì)圖像進(jìn)行預(yù)處理。然后進(jìn)行采樣、變換、插值、優(yōu)化從而達(dá)到配準(zhǔn)的目的。
基于互信息的配準(zhǔn)技術(shù)屬于基于像素相似性的方法。它基于圖像中所有的像素進(jìn)行配準(zhǔn),基于互信息的圖像配準(zhǔn)引入了信息論中的概念,如熵、邊緣熵、聯(lián)合熵和互信息等,可使配準(zhǔn)精度達(dá)到亞像素級(jí)的高精度。????
基于互信息只依賴于圖像本身的信息,不需要對(duì)圖像進(jìn)行特征點(diǎn)提取和組織分類等預(yù)處理,是一種自動(dòng)而有效的配準(zhǔn)算法。該算法可靠,對(duì)圖像中的幾何失真、灰度不均勻和數(shù)據(jù)的缺失等不敏感。不依賴于任何成像設(shè)備,可應(yīng)用于多模態(tài)醫(yī)學(xué)圖像配準(zhǔn)。基于互信息的圖像配準(zhǔn)也有其缺點(diǎn),它運(yùn)算量大,對(duì)噪聲敏感,要求待配準(zhǔn)圖像間聯(lián)合概率分布函數(shù)必須是嚴(yán)格正性的。
【例1】計(jì)算兩幅圖像的互信息。
function mi = MI(a,b)
%Caculate MI of a and b in the region of the overlap part
%計(jì)算重疊部分
[Ma,Na] = size(a);
[Mb,Nb] = size(b);
M=min(Ma,Mb);
N=min(Na,Nb);
%初始化直方圖數(shù)組
hab = zeros(256,256);
ha = zeros(1,256);
hb = zeros(1,256);
%歸一化
if max(max(a))~=min(min(a))
a = (a-min(min(a)))/(max(max(a))-min(min(a)));
else
a = zeros(M,N);
end
if max(max(b))-min(min(b))
b = (b-min(min(b)))/(max(max(b))-min(min(b)));
else
b = zeros(M,N);
end
a = double(int16(a*255))+1;
b = double(int16(b*255))+1;
%統(tǒng)計(jì)直方圖
for i=1:M
for j=1:N
indexx = a(i,j);
indexy = b(i,j) ;
hab(indexx,indexy) = hab(indexx,indexy)+1;%聯(lián)合直方圖
ha(indexx) = ha(indexx)+1;%a圖直方圖
hb(indexy) = hb(indexy)+1;%b圖直方圖
end
end
%計(jì)算聯(lián)合信息熵
hsum = sum(sum(hab));
index = find(hab~=0);
p = hab/hsum;
Hab = sum(sum(-p(index).*log(p(index))));
%計(jì)算a圖信息熵
hsum = sum(sum(ha));
index = find(ha~=0);
p = ha/hsum;
Ha = sum(sum(-p(index).*log(p(index))));
%計(jì)算b圖信息熵
hsum = sum(sum(hb));
index = find(hb~=0);
p = hb/hsum;
Hb = sum(sum(-p(index).*log(p(index))));
%計(jì)算a和b的互信息
mi = Ha+Hb-Hab;
%計(jì)算a和b的歸一化互信息
%mi = hab/(Ha+Hb);
3? 醫(yī)學(xué)圖像配準(zhǔn)
目前,圖像配準(zhǔn)技術(shù)在醫(yī)學(xué)領(lǐng)域應(yīng)用得相當(dāng)廣泛。醫(yī)學(xué)圖像配準(zhǔn)具有很重要的臨床應(yīng)用價(jià)值。對(duì)各種使用相同或者不同的成像手段所獲得的醫(yī)學(xué)圖像進(jìn)行配準(zhǔn)不僅可以應(yīng)用于醫(yī)療診斷,也可以應(yīng)用于手術(shù)計(jì)劃的制定、治療計(jì)劃的制定、病理情況的跟蹤和治療效果的評(píng)價(jià)等各個(gè)方面。
下面給出一個(gè)具體的圖像配準(zhǔn)的例子來形象說明配準(zhǔn)的應(yīng)用。
?
(1) 讀取圖像數(shù)據(jù)。因?yàn)樵磮D像以矩陣形式存在一個(gè)二進(jìn)制的文件里,用fread可將其讀取到變量矩陣中。將讀取文件編制成一個(gè)子函數(shù)(RTIread.m)。源代碼如下:
function imMatrix=RTIread(FILENAME,SIZE)
%RTIread Read the image matrix from binary "Registration Test Image" file.
% imMatrix=RTIread(FILENAME,SIZE) opens the file FILENAME, and reads the
% number of elements specified by SIZE.
%
% FILENAME is a string containing the name of the file to be opened.
% Valid entries for SIZE are:
% N read N elements into a column vector.
% inf read to the end of the file.
% [M,N] read elements to fill an M-by-N matrix, in column order.
% N can be inf, but M can't.
%
% It returns the image matrix.
fid=fopen(FILENAME,'r');
imMatrix=fread(fid,SIZE,'uint8=>uint8');
fclose(fid);
這里選取了兩張256×256的圖片,文件名為sag1.tif和sag2.tif。
?
運(yùn)行以下代碼讀取圖像矩陣:
base=RTIread('sag1.tif',[256,256]);
input=RTIread(sag2.tif,[256,256]);
(2) 選取匹配點(diǎn)。根據(jù)預(yù)定的配準(zhǔn)方法,選定足夠的匹配點(diǎn)對(duì)。運(yùn)行下列代碼:
cpselect(input,base); %please select 15 points for test.
?
注意:
這里允許選擇15個(gè)點(diǎn)進(jìn)行測試。
操作很簡單,只需注意選點(diǎn)要均勻布開,以增加其代表性。選定完畢,再選擇File→Save Points to Workspace命令將數(shù)據(jù)保存到工作區(qū)中。Workspace立刻多出兩個(gè)N×2的數(shù)組(其中N為選定的匹配點(diǎn)對(duì)數(shù)),分別為input_points和base_points。
(3) 利用十字相關(guān)法調(diào)整選定了的匹配點(diǎn)。如果對(duì)上面一個(gè)步驟的選點(diǎn)工作不滿意,可以進(jìn)行這一步。如果感覺尚可,則跳過這一步,以減小運(yùn)算量。
運(yùn)行代碼:
input_points_corr = cpcorr(input_points,base_points,input,base);
%優(yōu)化選擇點(diǎn)的作用
input_points_corr為優(yōu)化后在輸入圖片的對(duì)應(yīng)匹配點(diǎn)。
(4) 計(jì)算變換公式的參數(shù)。利用cp2tform選定變換類型(配準(zhǔn)方法),計(jì)算變換參數(shù)。以下只需選定一種即可。
% (1) not Fine-tune points
Tlinear = cp2tform(input_points,base_points,'linear conformal');
Taffine = cp2tform(input_points,base_points,'affine');
Tprojective = cp2tform(input_points,base_points,'projective');
Tpolynomial2 = cp2tform(input_points,base_points,'polynomial',2);
Tpolynomial3 = cp2tform(input_points,base_points,'polynomial',3);
Tpolynomial4 = cp2tform(input_points,base_points,'polynomial',4);
Tpiecewise = cp2tform(input_points,base_points,'piecewise linear');
Tlwm = cp2tform(input_points,base_points,'lwm');
% (2)Fine-tune points
fTlinear = cp2tform(input_points_corr,base_points,'linear conformal');
fTaffine = cp2tform(input_points_corr,base_points,'affine');
fTprojective = cp2tform(input_points_corr,base_points,'projective');
fTpolynomial2 = cp2tform(input_points_corr,base_points,'polynomial',2);
fTpolynomial3 = cp2tform(input_points_corr,base_points,'polynomial',3);
fTpolynomial4 = cp2tform(input_points_corr,base_points,'polynomial',4);
fTpiecewise = cp2tform(input_points_corr,base_points,'piecewise linear');
fTlwm = cp2tform(input_points_corr,base_points,'lwm');
(5) 變換圖像。
% Transform the unregistered image to bring it into alignment.
title('image registration polynomial method');
subplot(2,2,1);
imshow(base);
title('Base image');
subplot(2,2,2);
imshow(input);
title('Input image');
subplot(2,2,3);
imshow(imtransform(input,Tpolynomial2));
title('registered image');
subplot(2,2,4);
imshow(imtransform(input,fTpolynomial2));
title('registered image(fine-tune points)');
?
小結(jié):
(1) 選擇適當(dāng)?shù)姆椒▉斫⑥D(zhuǎn)換參數(shù),并非算法越復(fù)雜越好,應(yīng)參考成像因素(退化因素)。
(2) 利用cpselect選擇匹配點(diǎn),cpselect可以返回一個(gè)GUI句柄。在使用中,應(yīng)當(dāng)盡量選擇恰當(dāng)?shù)钠ヅ鋮^(qū)域,這樣能夠得到較好的效果。
上面的這個(gè)例子典型地說明了圖像配準(zhǔn)的步驟:提取圖像特征,根據(jù)特征對(duì)進(jìn)行幾何變換,執(zhí)行整個(gè)變換。
總結(jié)
- 上一篇: 图像空间变换--imtransform
- 下一篇: matlab图像处理命令(一)