1.互信息
互信息是信息論中的一個基本概念,通經常使用於描寫敘述兩個系統間的統計相關性。或者是一個系統中所包括還有一個系統中信息的多少。
引入互信息對圖像進行配准是由於:不須要假定兩幅圖像灰度的相應關系。不須要對圖像進行切割。
可是這對Ct-MR配准、或者CT-PET配准是可行的。對於CT-US配准是不可行的。
在概率論中,兩個隨機變量A和B。他們的邊緣概率分布為p_A (a)和p_B (b),他們的聯合概率分布為p_AB (a,b)。當p_AB (a,b)=p_A (a)∙p_B (b)時A與B是相互獨立的。
在多模醫學圖象配准問 題中 ,盡管兩幅圖象來源於不同的成像設備 ,可是它們基於共同的人體解剖信息 ,所以當兩幅圖象的空間位置全然一致時 ,當中一幅圖象表達的關於另 一幅圖象的信息 ,也就是相應象素灰度的互信息應為最大。
互信息I(A,B)通過計算p_AB (a,b)和p_A (a)∙p_B (b)的差距來
得到A和B的依賴程度
。
2.用熵來表示互信息
熵表達的是一個系統的復雜性或者是不確定性。
系統熵的定義:

兩個系統的聯合熵:

條件熵:

那么,互信息能夠表示為:

對於離散的數字圖像。聯合概率分布P_AB(a,b)能夠利用歸一化的聯合直方圖來表示:

那么,邊緣概率P_A(i)能夠表示為:(即在聯合直方圖,沿着行或者列求和)

同理。邊緣概率P_B(i)能夠表示為:(即在聯合直方圖,沿着行或者列求和)
3.互信息分類
1.互信息: MuInf = H_A+H_B-H_AB;
2.歸一化互信息:MuInf = (H_A+H_B)/H_AB;
4.互信息的Matlab編程
<span style="font-size:18px;">function [MuInf] = MutualInfo(R,F,method)
% 互信息函數
%R/F:能夠是二值圖像,也能夠是灰度圖像
%method:互信息與歸一化互信息選項。多採用歸一化互信息
if size(F,3) == 3
F = rgb2gray(F);
end
if size(R,3) == 3
R = rgb2gray(R);
end;
% 計算互信息
Hist = JoinHist(R,F);
[rows,columns] = size(R);
N_Hist = Hist./(rows*columns);%聯合直方圖歸一化
Marg_A = sum(N_Hist); %對全部列單獨求和
Marg_B = sum(N_Hist,2); %對全部行單獨求和
H_A = 0;
H_B = 0;
for i=1:1:size(N_Hist,1) %計算熵H_A
if Marg_A(i) ~= 0
H_A = H_A+(-Marg_A(i)*log2(Marg_A(i)));
end
end
for i=1:1:size(N_Hist,2) %計算熵H_B
if Marg_B(i) ~= 0
H_B = H_B + (-Marg_B(i)*log2(Marg_B(i)));
end
end
H_AB = sum(sum( -N_Hist.*log2(N_Hist+(N_Hist == 0)) ));
if strcmp(method,'MI')
MuInf = H_A+H_B-H_AB;
end
if strcmp(method,'NMI')
MuInf = (H_A+H_B)/H_AB;
end;
end
%% 統計F、R兩張圖像的聯合直方圖
function Hist = JoinHist(R,F)
[rows,columns] = size(R);
Hist = zeros(256,256);
for i = 1:1:rows
for j = 1:1:columns
Hist(R(i,j)+1,F(i,j)+1) = Hist(R(i,j)+1,F(i,j)+1)+1;
end
end
end</span>
5.實驗仿真
