九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
[數(shù)字圖像處理]模糊算法用于圖像增強(qiáng)

模糊集合原理

       在計(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)用。


使用模糊集合進(jì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
function [drak,gray,brig] = Fuzzy_Knowledge(Intensity)

if(Intensity <= 0.27) drak = double(1);
elseif(Intensity >= 0.5) drak = double(0);
else drak = (0.5 - double(Intensity))/(0.22);
end
if(Intensity >= 0.72) brig = double(1);
elseif(Intensity <= 0.5) brig = double(0);
else brig = double((double(Intensity) - 0.5)/0.22);
end
if(Intensity >= 0.72) gray = double(0);
elseif(Intensity <= 0.27) gray = double(0);
elseif(Intensity <= 0.5) gray = double((double(Intensity) - 0.27)/0.22);
else gray = double((0.72 - double(Intensity))/0.22);
end
end
來(lái)自CODE的代碼片
Fuzzy_Knowledge.m
  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
close all;
clear all;
clc;

%% ---------Using Fuzzy for intensity transfromations---------------
f = imread('einstein_orig.tif');
f = mat2gray(f,[0 255]);

[M,N]=size(f);
g = zeros (M,N);

for x = 1:1:M
for y = 1:1:N
[drak,gray,brig] = Fuzzy_Knowledge(f(x,y));
g(x,y) = ((drak * 0) + (gray * 0.5) + (brig * 1))/(drak + gray + brig);
end
end
figure();
subplot(1,2,1);
imshow(f,[0 1]);
xlabel('a).Original Image');

subplot(1,2,2);
imshow(g,[0 1]);
xlabel('b).Result of fuzzy');

figure();
subplot(1,2,1);
h = imhist(f)/(M*N);
bar(0:1/255:1,h);
axis([0 1 0 .2]),grid;
xlabel('c).The Histogram of a');

subplot(1,2,2);
h = imhist(g)/(M*N);
bar(0:1/255:1,h);
axis([0 1 0 .2]),grid;
xlabel('d).The Histogram of b');

%%
test = 0:1/255:1;
for x = 1:1:256
[drak(x),gray(x),brig(x)] = Fuzzy_Knowledge(test(x));
end

figure();
subplot(1,2,1);
plot(test,drak,test,gray,test,brig);
axis([0,1,0,1]),grid;
axis square;
legend('drak','gray','brig');
xlabel('a).Input memberchip functions for fuzzy');


subplot(1,2,2);
x1 = [0,0];y1 = [0,1];
x2 = [0.5,0.5];y2 = [0,1];
x3 = [1,1];y3 = [0,1];
plot(x1,y1,x2,y2,x3,y3);
axis([-0.1,1.1,0,1.2]),grid;
axis square;
legend('drak','gray','brig');
xlabel('b).Output memberchip functions for fuzzy');
來(lái)自CODE的代碼片
Fuzzy_intensity_transfromations.m

使用模糊集合進(jìn)行邊緣檢測(cè)


       為了更深刻的理解模糊集合的性質(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
function [W1,W2,W3,W4,B] = Fuzzy_Knowledge_Filters(Intensity)

for x = 1:1:3
for y = 1:1:3
if((Intensity(x,y) <= 0.2) &&(Intensity(x,y) >= -0.2))
Intensity(x,y) = exp(-20*Intensity(x,y).*Intensity(x,y));
else Intensity(x,y) = 0;
end
end
end

W1 = min(Intensity(1,2),Intensity(2,3));
W2 = min(Intensity(2,3),Intensity(3,2));
W3 = min(Intensity(3,2),Intensity(2,1));
W4 = min(Intensity(2,1),Intensity(1,2));
B = min(min(1-W1,1-W2),min(1-W3,1-W4));
end
來(lái)自CODE的代碼片
Fuzzy_Knowledge_Filters.m
  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
%% ---------Using Fuzzy for Spatial Filters---------------
close all;
clear all;
clc;

f = imread('headCT_Vandy.tif');
f = mat2gray(f,[0 255]);

[M,N]=size(f);
f_Ex = zeros(M+2,N+2);

for x = 1:1:M
for y = 1:1:N
f_Ex(x+1,y+1) = f(x,y);
end
end

z = zeros (3,3);
g = zeros (M+2,N+2);
for x = 2:1:M+1
for y = 2:1:N+1
z(1,1) = f_Ex(x-1,y-1) - f_Ex(x,y);
z(1,2) = f_Ex(x-1,y) - f_Ex(x,y);
z(1,3) = f_Ex(x-1,y+1) - f_Ex(x,y);
z(2,1) = f_Ex(x,y-1) - f_Ex(x,y);
z(2,2) = f_Ex(x,y) - f_Ex(x,y);
z(2,3) = f_Ex(x,y+1) - f_Ex(x,y);
z(3,1) = f_Ex(x+1,y-1) - f_Ex(x,y);
z(3,2) = f_Ex(x+1,y) - f_Ex(x,y);
z(3,3) = f_Ex(x+1,y+1) - f_Ex(x,y);
[W1,W2,W3,W4,B] = Fuzzy_Knowledge_Filters(z);
V1 = 0.8 * W1 + 0.2;
V2 = 0.8 * W2 + 0.2;
V3 = 0.8 * W3 + 0.2;
V4 = 0.8 * W4 + 0.2;
V5 = 0.8 - (0.8 * B);
g(x,y) = ((W1*V1) + (W2*V2) + (W3*V3) + (W4*V4) + (B*V5))/(W1+W2+W3+W4+B);
end
end

figure();
subplot(1,2,1);
imshow(f,[0 1]);
xlabel('a).Original Image');

subplot(1,2,2);
imshow(g,[0 1]);
xlabel('b).Result of fuzzy');


%%
figure();
subplot(1,2,1);
x=-0.2:1/255:0.2;
y=1/sqrt(2*pi)*exp(-20*x.*x);
y = y/max(y);
x = -1:1/255:1;
y = [zeros(1,204) y zeros(1,204)];
plot(x,y);
axis([-1,1,0,1]),grid;
axis square;
xlabel('a).Input memberchip functions for fuzzy');

subplot(1,2,2);
x1 = [0,0.2,1];y1 = [0,0,1];
x2 = [0,0.8,1];y2 = [1,0,0];
plot(x1,y1,x2,y2);
axis([0,1,0,1]),grid;
axis square;
legend('WH','BL');
xlabel('b).Output memberchip functions for fuzzy');
來(lái)自CODE的代碼片
Fuzzy_Spatial_Filters.m


(作者注:其實(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)題還有待深入的研究

博客地址:http://blog.csdn.net/thnh169/ 

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
幾種常見窗函數(shù)及其MATLAB程序?qū)崿F(xiàn)
【數(shù)字圖像處理】灰度直方圖你了解多少?
自適應(yīng)濾波器的初探(轉(zhuǎn))
Matlab圖形繪制經(jīng)典案例
MATLAB中subplot的用法
Matlab小波工具箱的使用2
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服