【影象配準】基於灰度的模板匹配演算法(三):劃分強度一致法(PIU)
阿新 • • 發佈:2019-02-10
簡介:
前面幾篇文章介紹了一些比較基本的基於灰度的影象配准算法:
本文將介紹一種類似的相似度測量演算法,叫做劃分強度一致法(Partitioned Intensity Uniformity,PIU)。
PIU演算法:
1992年,Woods提出了基於劃分強度一致的MR-PET影象配準。在醫學影象中,同一組織結構在不同的模態下灰度值是不同的。比如骨骼組織在CT影象中灰度值高,在MRI影象中灰度值偏低。
定義:
PIU測度的基本理念是:同一組織在不同模態下的灰度分佈具有某種一致性。換句話說,一種模態下的某個灰度值的畫素在另一種模態中是以一個不同的灰度值為中心的分佈。
PIU測度的表示式定義為:
其中,N為模板中畫素總個數,也就是模板行列數的乘積。與分別表示模板和子圖中灰度為r、f的畫素個數。表示搜尋圖中的某個子圖。
表示模板R中灰度值為r的畫素在子圖中對應位置上畫素灰度值之和。其他式子也是同樣的道理。
例項驗證:
MATLAB程式碼:
%//劃分強度一致法(Partitioned Intennsity Uniformity, PIU) %%//------------------------------------------------------- clear all; close all; img=rgb2gray(imread('lena.jpg')); [img_rows img_clos]=size(img);%//搜尋圖尺寸 x0=40;y0=30;len=64; R=img(x0:x0+len-1,y0:y0+len-1);%//取一部分作為模板 figure;imshow(R);title('模板'); [rows clos]=size(R);%//模板尺寸 N=rows*clos; %%//------------------------------------------------------- uFr=zeros(256,1);uRf=zeros(256,1); dFr=zeros(256,1);dRf=zeros(256,1); a=zeros(256,1);b=zeros(256,1); piu=zeros(img_rows-len,img_clos-len); for i=1:img_rows-len for j=1:5:img_clos-len S=img(i:i+len-1,j:j+len-1);%//子圖 for r=0:255 pos=find(R==r); nr=size(pos,1)+eps;%//參考影象中灰度值為r的畫素個數 value1=S(pos); uFr(r+1,1)=sum(value1)/nr;%//R中畫素為r的位置處,對應S上的畫素點均值 t1=double(S(pos))-uFr(r+1,1); dFr(r+1,1)=sum(t1.^2)/nr; pos=find(S==r); nf=size(pos,1)+eps;%//參考影象中灰度值為r的畫素個數 value2=R(pos); uRf(r+1,1)=sum(value2)/nf; t2=double(R(pos))-uRf(r+1,1); dRf(r+1,1)=sum(t2.^2)/nf; a(r+1,1)=(nr*dFr(r+1,1))/(N*uFr(r+1,1)+eps); b(r+1,1)=(nf*dRf(r+1,1))/(N*uRf(r+1,1)+eps); end piu(i,j)=sum(a)+sum(b); end end %%//------------------------------------------------------- piu_min=min(min(piu)); [y,x]=find(piu==piu_min); x=x-1;y=y-1; figure;imshow(img);hold on; rectangle('position',[x,y,len-1,len-1],'edgecolor','r'); title('搜尋結果');hold off; %over
輸出結果:
參考文獻:
1、張娟.醫學影象配準中相似性測度的研究[M],2014.