馬爾科夫隨機場(MRF)及其在圖像降噪中的matlab實現


(Markov Random Field)馬爾科夫隨機場本質上是一種概率無向圖模型

下面從概率圖模型說起,主要參考PR&ML 第八章 Graphical Model (圖模型)

 

定義:A graph comprises nodes (also called vertices) connected by links (also known as edges or arcs ).

In a probilistic graphical model each node represents a random variable or group of random variables ,and th links express probabilistic  relationships between these variables.

分類:概率圖模型大體分為兩種,第一種是有向圖,又叫貝葉斯網絡,鏈接節點之間的邊是有方向的,用來描述變量之間的因果關系(左側);另一種是無向圖,又叫馬爾科夫隨機場,邊是沒有方向的,用來描述變量之間的軟約束(右側)。

1.Bayesian network

用概率圖表示聯合概率分布密度

起點對應條件變量,如p(c|a,b)就會有兩個起點一個終點。略微復雜一點如下圖:

由於變量之間如果采用全連接會使得參數個數隨着變量個數成冪次增加。所以書中討論了幾種在設計貝葉斯網絡時減少模型參數的方法,第一種是獨立性假設,即根據實際問題對某些變量提出獨立性假設以減少鏈接邊數;第二種是采用鏈式連接,即每個節點只有一個子節點一個父節點;第三種是權值共享,類似於cnn中底層的做法。

2 condition independence條件獨立

定義式:

下面來討論如何通過圖結構直接判斷變量之間的條件獨立性

三個例子,一段總結

例一:結點c被稱為關於(從a經過c到達b)這個路徑的"尾到尾"(tail-to-tail)連接,因為結點與兩個箭頭的尾部相連

注意圖中c是可觀測變量

記作

例二:結點c被稱為關於從結點a到結點b的路徑"頭到尾"(head-to-tail)。

例三:結點c關於從a到b的路徑是"頭到頭"(head-to-head),因為它連接了兩個箭頭的頭。

注意這里當c為觀測條件時不能得到的形式,所以

 

一個總結:In summary ,a tail-to-tail node or a head-to-tail node leaves a path unblocked unless it is observed in which case it blocks the path .By contrast, a head-to-head node blocks a path if it is unobserved ,but once the node ,and /or at least one of its descendants ,is observed the path becomes unblocked .參考譯文(總而言之,TT結點或者HT結點形成的路徑無堵,除非該結點被觀察到(這會堵住路徑)。相反,HH結點在沒被觀察到時會堵住路徑,不過一旦該結點或其至少一個子結點被觀察到的話,路徑又變成無堵的了~)

 

一個小概念   D-separation:這個D-separaton的目的是通過有向無環圖尋找一個特定的條件依賴表述針對節點(變量)集合,如果所有從A經過C到達B的路徑都被阻隔,那么我們說C把A從B中d-separation.即

3.Markov Random Fields

一個馬爾科夫隨機場(Markov random field),也被稱為馬爾科夫網絡(Markov network)或者無向圖模型(undirected graphical model)(Kindermann and Snell, 1980),包含一組結點,每個結點都對應着一個變量或一組變量。鏈接是無向的,即不含有箭頭。

這里同樣來討論他的獨立性,集合A到集合B的所有路徑都通過集合C中的一個或多個節點,那么所有這樣的路徑都被阻隔,因此或者說,除掉集合C之后A,B就沒有連接路徑了。

注意,只要有一條路徑沒有通過C,那么這種性質就不存在。

定義團塊(clique):對這個團塊的所有子集的節點都是全連接的。

那么整個圖的聯合分布由各個團塊組成,

這里為每一個團塊定義了一個勢函數,注意如果這個無向圖不是由有向圖轉化而來,那么這里的勢函數可以不滿足概率性質。但是,由於p(x)要滿足概率性質,所以勢函數還是要大於零的。Z是歸一化因子。通常取這個分布叫做Boltzmann distribution(有時間要查查他的性質)。而這里最大的優勢就是勢函數可以通過選取而具有一定的實際意義,相當於一種相似度的度量,所以為算法的設計增加了靈活性。

例子:圖像去噪

這個例子可以有很多更好的方法實現,這里只是為了說明勢函數的用法而已。

給一幅二值圖像加入噪聲,加入噪聲之后的圖像是我們的觀測值Y,而實際圖像是隱變量X,現在我們就要通過Y推斷X,

由於噪聲等級比較小,因此我們知道xi和yi之間有着強烈的相關性。我們還知道圖像中相鄰像素xi和xj的相關性很強。這種先驗知識可以使用馬爾科夫隨機場模型進行描述,它的無向圖如下:

勢函數定義為:

這里只有兩種團塊,第一種是xi和yi,第二種是xi和相鄰的xj。我們分別給以不同系數用來調節其在勢函數中的權重,由於最后的概率計算要取最大,所以這里等價於取最小。

具體代碼如下:

 

%實現PRML P387 例子:使用mrf降噪
%輸入一個二值圖像並加入噪聲
close all;
clear all;
I=imread('Penguins.jpg');
I1=im2bw(I);
subplot(2,2,1)
imshow(I1);
title('原圖像');
J = imnoise(I,'salt & pepper', 0.2);
J1=im2bw(J);
subplot(2,2,2)
imshow(J1);
title('噪聲圖')

Y=ones(size(J1));
Y(J1==0)=-1;
[m,n]=size(Y);
X=Y;h=0;beta=3.5;eta=.1;
while 1
    tot=0
    for i=2:1:m-1
        for j=2:1:n-1
            temp=X(i,j);
            X(i,j)=-1;%根據定義計算勢函數
        E1=h*X(i,j)-beta*X(i,j)*(X(i-1,j)+X(i+1,j)+X(i,j-1)+X(i,j+1))-eta*X(i,j)*Y(i,j);
           X(i,j)=1;
           E2=h*X(i,j)-beta*X(i,j)*(X(i-1,j)+X(i+1,j)+X(i,j-1)+X(i,j+1))-eta*X(i,j)*Y(i,j);
           if E1<E2
                X(i,j)=-1;
            else
                X(i,j)=1;
            end    
            if temp~=X(i,j)
                tot=tot+1;
            end
        end
    end
    if tot<1
        break;
    end
end

J2=X;
J2(X==-1)=0;
subplot(2,2,3)
imshow(J2);
title('mrf降噪結果')



 

結果如下:

 

 

 

 


免責聲明!

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



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