互信息的数学解释以及matlab编程
生活随笔
收集整理的這篇文章主要介紹了
互信息的数学解释以及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) == 3F = rgb2gray(F); end if size(R,3) == 3R = 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_Aif Marg_A(i) ~= 0H_A = H_A+(-Marg_A(i)*log2(Marg_A(i)));end end for i=1:1:size(N_Hist,2) %計算熵H_Bif Marg_B(i) ~= 0H_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;endif 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:rowsfor j = 1:1:columnsHist(R(i,j)+1,F(i,j)+1) = Hist(R(i,j)+1,F(i,j)+1)+1;end end end</span>5.實驗仿真
總結
以上是生活随笔為你收集整理的互信息的数学解释以及matlab编程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 百度天天快照的秘籍
- 下一篇: 飞鸽传书局域网聊天工具