在計(jì)算機(jī)編程的時(shí)候,常常會(huì)使用一種“干脆的”集合。在判斷某件事,或者某個(gè)變量的時(shí)候,常常使用的是布爾值(因?yàn)槟臣?,不是真就是假)。通過(guò)一個(gè)閾值,去判斷這件事,而這樣的一個(gè)閾值的設(shè)定,會(huì)產(chǎn)生一個(gè)問(wèn)題。還是使用《Digital Image Processing》 Rafael C. Gonzalez / Richard E. Woods書中的例子,看以下兩個(gè)圖。
當(dāng)一個(gè)人的年齡超過(guò)20歲,那么這個(gè)人就不再屬于年輕人范疇。這樣來(lái)說(shuō),未免有些太過(guò)“殘忍”,畢竟,20多歲的人還是“比較”年輕的。這里就出現(xiàn)了一個(gè)模糊的定義,“比較”年輕,這個(gè)集合既不屬于年輕,也不屬于非年輕,也就是其實(shí)年輕與非年輕之間的過(guò)度不應(yīng)該是干脆的,而應(yīng)該是漸進(jìn)的過(guò)度。
定義Z為對(duì)象集,其中,z表示Z中的一類元素(比如z表示年齡)。Z中的一個(gè)模糊集合A主要由一個(gè)隸屬度(Degree of membership)來(lái)表示。對(duì)此,模糊集合A是一個(gè)由z值和隸屬度函數(shù)組成的集合,即
當(dāng)的時(shí)候,所有的z是模糊集合A的完全成員‘;當(dāng)的時(shí)候,所有的z都不是模糊集合A的成員,當(dāng)的值介于0和1之間,那么此時(shí)的z稱為模糊集合A的不完全成員。
下面,還有幾個(gè)重要的性質(zhì)。
對(duì)于所有的,模糊集合A的補(bǔ)集(NOT),其隸屬度函數(shù)如下所示。
對(duì)于所有的,模糊集合A與模糊集合B的并集(OR)U,其隸屬度函數(shù)如下所示。
對(duì)于所有的,模糊集合A與模糊集合B的交集(AND)I,其隸屬度函數(shù)如下所示。
到這里,其實(shí)已經(jīng)可以用模糊集合來(lái)做一些事情了。對(duì)于一個(gè)問(wèn)題的處理,在使用模糊集合來(lái)解決的時(shí)候,我們可以參考以下步驟。首先,需要將輸入量折算為隸屬度,這個(gè)過(guò)程叫做“模糊化”。然后,使用得到的隸屬度來(lái)進(jìn)行計(jì)算,或者判斷,或者其他更復(fù)雜的算法。最后,需要將隸屬度再次折算為輸出,這個(gè)過(guò)程稱為“去模糊”或者“反模糊”。
通過(guò)下面兩個(gè)例子,來(lái)具體體會(huì)一下模糊算法在圖像處理上的運(yùn)用。
使用模糊集合來(lái)進(jìn)行灰度變換,從而增強(qiáng)圖像。首先可以在常理下考慮一下,一般的對(duì)于動(dòng)態(tài)范圍較小的圖像,我們一般的處理的方法是灰度拉升,或者直方圖均衡。這兩種的方法的本質(zhì)就是,讓原圖較暗的像素更加暗,讓原圖較亮的像素更加亮。那么,我們規(guī)定如下模糊規(guī)則
R1:IF 一個(gè)像素是暗的,THEN 讓這個(gè)像素更暗;
R2:IF 一個(gè)像素是灰的,THEN 讓他保持是灰的;
R3:IF 一個(gè)像素是亮的,THEN 讓這個(gè)像素更亮;
這個(gè)規(guī)則就代表了我們的處理方法。當(dāng)然,IF條件中的像素是暗的(或者灰的,或者是亮的),這個(gè)概念都是模糊的。同理THEN結(jié)論中的更暗(或者保持灰的,或者更亮)亦是模糊的。為此,我們需要確立一個(gè)隸屬度函數(shù),從而來(lái)判斷一個(gè)像素對(duì)于三個(gè)條件的隸屬度。
實(shí)際上,隸屬度函數(shù)的確定是很復(fù)雜的,然而,這里我們則盡量想得簡(jiǎn)單一點(diǎn)。首先,一個(gè)像素是暗的(模糊),那么其隸屬度函數(shù)大致的形狀是,在低于某個(gè)值的時(shí)候域隸屬度為1,在灰度越過(guò)某一個(gè)值之后,其隸屬度為0,當(dāng)然。然后與之間進(jìn)行線性插值,那么,我們就可以得到R1的隸屬度函數(shù)了。同理,R2與R3也是一樣的。
為了簡(jiǎn)單起見,我們將THEN結(jié)論中的更暗設(shè)置為較為簡(jiǎn)單的函數(shù)。為了讓這個(gè)像素更黑,其輸出都為0。同理,為了使這個(gè)像素保持灰的,我們將其輸出設(shè)為0.5,為了使得一個(gè)像素更亮,我們將其設(shè)置為1。
根據(jù)以上討論,我們所決定的隸屬度函數(shù)如下所示。
使用輸入的隸屬度函數(shù),可以得到模糊化后的數(shù)據(jù)。對(duì)于一個(gè)像素,需要根據(jù)規(guī)則R1,R2與R3,計(jì)算出所對(duì)應(yīng)的隸屬度,與,這個(gè)過(guò)程,稱之為模糊化。將一個(gè)輸入量模糊化,所使用的函數(shù)(或者說(shuō)是對(duì)應(yīng)關(guān)系),稱之為知識(shí)庫(kù)。
模糊化之后,得到一個(gè)像素所對(duì)應(yīng)的三個(gè)隸屬度,與之后,就可以進(jìn)行反模糊化了。反模糊化的算法很多,這里使用簡(jiǎn)單的重心法去進(jìn)行計(jì)算。
到此,就得到了輸出,整個(gè)算法的效果如下圖所示。
根據(jù)以上算法,所得到的結(jié)果還是比較理想的。從灰度直方圖來(lái)看,處理后的圖像的直方圖的動(dòng)態(tài)范圍得到了擴(kuò)展,所得的圖像也比原圖更加的明亮清晰,圖片的一些細(xì)節(jié)處理的較為妥當(dāng)。所使用的Matlab代碼如下所示。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
|
為了更深刻的理解模糊集合的性質(zhì),可以將規(guī)則的難度加深一些。若想進(jìn)行一幅圖像的邊緣檢測(cè),在空間域上的想法是:“如果一個(gè)像素是處在平滑區(qū)域的,那么使得這個(gè)像素為亮,否則,則使得這個(gè)像素為暗。”為了使得這個(gè)算法在模糊集合的概念可以用,我們可以考慮使用灰度差來(lái)表示像素的平滑程度。
如上圖所示,我們將一個(gè)像素8個(gè)相鄰的像素,各減去這個(gè)像素的值,即。我們可以得到如上圖右側(cè)的結(jié)果?;c此,可以推出以下規(guī)則。
注意,上述的zero,white與black都是模糊的概念。同樣的,根據(jù)這三個(gè)規(guī)則模糊化之后,用重心法去模糊。同時(shí),我們還希望,當(dāng)兩個(gè)點(diǎn)的灰度很接近的時(shí)候,去模糊能給予一個(gè)很強(qiáng)的響應(yīng),將灰度拉至很高(很亮)。所以,我們的輸入隸屬度函數(shù)需要再0處有一個(gè)較大的隸屬度,這里,我使用了高斯分布的一部分。其輸出隸屬度函數(shù),也不是像上面的例子一樣簡(jiǎn)單,我希望若是白色的隸屬度很高,其輸出的灰度值就越高(越亮),反之則越低(越暗)。根據(jù)上述,我指定的輸入輸出隸屬度函數(shù)如下所示。
以上規(guī)則還出現(xiàn)了幾個(gè)比較需要注意的地方。我們制定規(guī)則的時(shí)候,使用了AND,將兩個(gè)條件相連了。這里在模糊集合里面,就相當(dāng)于兩個(gè)模糊集合的交集。首先,應(yīng)該依次算出兩個(gè)條件所對(duì)應(yīng)的隸屬度的值,然后,取最小值即可,如下所示。
其次,這里還出現(xiàn)了ELSE語(yǔ)句,這里,可以視為以上四個(gè)條件的補(bǔ)集的交集(有點(diǎn)拗口)。其實(shí)看數(shù)學(xué)式的話,應(yīng)該很好明白的。
到這里,我們就可以順利的算出上述五個(gè)條件的隸屬度,然后同樣的,使用最簡(jiǎn)單的重心法,就可以得到結(jié)果了。結(jié)果如下所示。
從結(jié)果可以看出來(lái),根據(jù)整定的規(guī)則,我們已經(jīng)很好的得到了圖像的邊緣。在這幅圖像上再次進(jìn)行加工,二值化什么的,就比較容易了。所得到的結(jié)果圖像還是比較清晰的。以下是Matlab代碼。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
|
(作者注:其實(shí)模糊算法是很復(fù)雜的一門學(xué)科,《Digital Image Processing》 Rafael C. Gonzalez / Richard E. Woods這本書上講的還是太過(guò)簡(jiǎn)單了,僅僅也只是算皮毛而已,對(duì)于模糊算法還沒(méi)有一個(gè)清晰的認(rèn)識(shí)。殘留下來(lái)了幾個(gè)問(wèn)題:①隸屬度函數(shù)的制定有什么樣的原則?②我們?cè)偈褂媚:惴ㄖ埃M玫揭粋€(gè)什么樣的結(jié)果,而實(shí)際得到的結(jié)果又怎么樣去評(píng)估這個(gè)算法的好壞呢?③其他的反模糊算法與重心法的區(qū)別是什么?這些問(wèn)題還有待深入的研究)
聯(lián)系客服