互信息的數學解釋以及matlab編程


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.實驗仿真









免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM