日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

matlab评估边缘检测性能,【模糊推理】模糊逻辑图像边缘检测,原理+matlab代码~...

發(fā)布時(shí)間:2023/12/2 67 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab评估边缘检测性能,【模糊推理】模糊逻辑图像边缘检测,原理+matlab代码~... 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這篇博客是接著上一篇來(lái)噠,https://blog.csdn.net/luolan9611/article/details/94285158

本篇博客及上篇博客搜集的資料、實(shí)驗(yàn)代碼、實(shí)驗(yàn)報(bào)告、PPT均已上傳至百度網(wǎng)盤(pán):

鏈接:https://pan.baidu.com/s/1AmT4TtBAxj1FKf4KUFcsBw? ? 提取碼:kcfe

先上結(jié)果~

再上代碼~

唔,要說(shuō)明的是我使用的是matlabR2018a,如果用matlab2019的話,代碼要有些變化,因?yàn)楹瘮?shù)接口什么的會(huì)變...

%讀取原始圖像,并將之轉(zhuǎn)換為灰度圖

Irgb = imread('zx_in_xidian.jpg');

Igray=rgb2gray(Irgb);

%繪制原始圖像和灰度圖

figure

image(Irgb,'CDataMapping','scaled')

title('Input Image in Rgbscale');

figure

image(Igray,'CDataMapping','scaled')

colormap('gray')

title('Input Image in Grayscale');

%將灰度圖轉(zhuǎn)換為雙精度表示

I=im2double(Igray);

%定義Gx和Gy,將之與I卷積

Gx=[-1 1];

Gy=Gx';

%Ix=mapminmax(conv2(I,Gx,'same'));

%Iy=mapminmax(conv2(I,Gy,'same'));

Ix=conv2(I,Gx,'same');

Iy=conv2(I,Gy,'same');

%繪制Ix和Iy

figure

image(Ix,'CDataMapping','scaled')

colormap('gray')

title('Ix')

figure

image(Iy,'CDataMapping','scaled')

colormap('gray')

title('Iy')

%定義圖像邊緣檢測(cè)的模糊推理系統(tǒng)

edgeFIS=newfis('edgeDetection');

%定義模糊推理系統(tǒng)的輸入

edgeFIS = addvar(edgeFIS,'input','Ix',[-1 1]);

edgeFIS = addvar(edgeFIS,'input','Iy',[-1 1]);

%sx和sy分別作為高斯隸屬函數(shù)中相應(yīng)的sigma標(biāo)準(zhǔn)差

sx=0.1;

sy=0.1;

edgeFIS = addmf(edgeFIS,'input',1,'zero','gaussmf',[sx 0]);

edgeFIS = addmf(edgeFIS,'input',2,'zero','gaussmf',[sy 0]);

%定義模糊推理系統(tǒng)的輸出

edgeFIS = addvar(edgeFIS,'output','Iout',[0 1]);

%三角隸屬函數(shù)

wa = 0.1;

wb = 1;

wc = 1;

ba = 0;

bb = 0;

bc = 0.7;

%參數(shù)說(shuō)明 fis = addmf(fis,varType,varIndex,mfName,mfType,mfParams)

edgeFIS = addmf(edgeFIS,'output',1,'white','trimf',[wa wb wc]);

edgeFIS = addmf(edgeFIS,'output',1,'black','trimf',[ba bb bc]);

%繪制Ix,Iy和Iout隸屬函數(shù)圖像

figure

subplot(2,2,1)

plotmf(edgeFIS,'input',1)

title('Ix')

subplot(2,2,2)

plotmf(edgeFIS,'input',2)

title('Iy')

subplot(2,2,[3 4])

plotmf(edgeFIS,'output',1)

title('Iout')

%定義兩個(gè)規(guī)則:如果Ix為0,Iy也為0,那么輸出是白色,即非邊緣區(qū)域;如果Ix不為0或者Iy不為0,則輸出黑色,為邊緣區(qū)域。

r1 = 'If Ix is zero and Iy is zero then Iout is white';

r2 = 'If Ix is not zero or Iy is not zero then Iout is black';

r = char(r1,r2);

edgeFIS = parsrule(edgeFIS,r);

showrule(edgeFIS)

%將每一行像素送入模糊系統(tǒng)進(jìn)行評(píng)估,得到輸出

Ieval = zeros(size(I));

for ii = 1:size(I,1)

Ieval(ii,:) = evalfis([(Ix(ii,:));(Iy(ii,:));]',edgeFIS);

end

%繪制邊緣檢測(cè)后的圖像

figure

colormap('gray')

image(Ieval,'CDataMapping','scaled')

colorbar

title('Edge Detection Using Fuzzy Logic')

%以坐標(biāo)[2183,1463]上的像素點(diǎn)為例,它的Ix為0.0275,Iy為0.2196

%這一坐標(biāo)點(diǎn)的Ix和Iy經(jīng)過(guò)高斯隸屬函數(shù)計(jì)算后得到的隸屬度分別為([0.962893466491363,0.0897068632021378])

%不屬于0的隸屬度是它們的補(bǔ)([0.0371065335086372,0.910293136797862])

%根據(jù)高斯隸屬函數(shù)得到的隸屬度在三角隸屬函數(shù)的圖像上(white的函數(shù)圖和black的函數(shù)圖),分別進(jìn)行蘊(yùn)含操作(min)后,進(jìn)行Aggregate操作

%將模糊集去模糊化得到單一輸出值(使用質(zhì)心的方法)

%繪制出該圖像

[output,fuzzifiedInputs,ruleOutputs,aggregatedOut]=evalfis([0.0275,0.2196],edgeFIS);

outputRange=linspace(edgeFIS.output.range(1),edgeFIS.output.range(2),length(aggregatedOut))';

figure

plot(outputRange,aggregatedOut,[output output],[0 1])

xlabel('Iout')

ylabel('Output Memebership')

legend('Aggregated output fzzy set','Defuzzified output')

%繪制該模糊系統(tǒng)的圖像

figure

plotfis(edgeFIS)

title('edgeFIS')

%繪制表面曲線圖

figure

gensurf(edgeFIS)

title('surfaceplot')

原理講解~

記得上篇博客講的模糊推理過(guò)程吧~

模糊推理是使用模糊邏輯將給定輸入映射到輸出的過(guò)程。將輸入變量進(jìn)行模糊化得到模糊集,根據(jù)設(shè)定的規(guī)則描述(前件)進(jìn)行模糊運(yùn)算,將模糊運(yùn)算的結(jié)果作用于后果(后件),將每個(gè)規(guī)則的輸出模糊集聚合為指定輸出,去模糊化后得到推理結(jié)果。

模糊推理過(guò)程主要分為五個(gè)部分:

1.輸入變量的模糊化

通過(guò)隸屬函數(shù)將前提條件中的所有模糊語(yǔ)句解析為0到1之間的隸屬度。如果前提只有一個(gè)部分,那么這就是對(duì)規(guī)則的支持程度。

2.模糊算子(AND或OR)在先行詞中的應(yīng)用

如果前提條件不只一個(gè),則應(yīng)用模糊邏輯運(yùn)算,將前提解析為0到1之間的隸屬度值。

3.計(jì)算前提條件對(duì)后件的影響

使用整個(gè)規(guī)則的支持度來(lái)塑造輸出模糊集。模糊規(guī)則的結(jié)果將整個(gè)模糊集分配給輸出。該模糊集由隸屬函數(shù)表示,該隸屬函數(shù)被選擇以指示后件的質(zhì)量。如果先行詞僅部分為真,(即賦值小于1),則根據(jù)蘊(yùn)涵方法截?cái)噍敵瞿:?/p>

4.所有規(guī)則的結(jié)果匯總

然后將每個(gè)規(guī)則的輸出模糊集合聚合為單個(gè)輸出模糊集。

5.去模糊化

最后,對(duì)結(jié)果集進(jìn)行去模糊化,得到最終的推理結(jié)果。

========

那怎么把這一推理過(guò)程用于圖像邊緣檢測(cè)呢????

圖像的邊緣是兩個(gè)均勻區(qū)域之間的邊界,我們可以通過(guò)比較鄰近像素的強(qiáng)度來(lái)檢測(cè)邊緣。但是,由于均勻區(qū)域沒(méi)有明確定義,兩個(gè)相鄰像素之間的小強(qiáng)度差并不總是表示邊緣。相反,強(qiáng)度的差異可能代表著陰影效果。圖像處理的模糊邏輯方法允許我們使用隸屬函數(shù)來(lái)定義像素屬于邊緣或均勻區(qū)域的程度。

如果把圖像看成二維離散函數(shù),那么圖像梯度其實(shí)就是這個(gè)二維離散函數(shù)的求導(dǎo):G(x,y) = dx(i,j) + dy(i,j);其中dx(i,j) = I(i+1,j) - I(i,j);dy(i,j) = I(i,j+1) - I(i,j);? I是圖像像素的值(如:RGB值),(i,j)為像素的坐標(biāo)。

先對(duì)圖像預(yù)處理一下:原圖-->灰度化-->灰度圖歸一化

然后,利用梯度濾波器Gx=[-1 1]和Gy(等于Gx的轉(zhuǎn)置)和圖像I分別卷積,可以獲得圖像沿水平方向和豎直方向的梯度矩陣Ix和Iy,梯度的值在[-1 1]之間變化。也可以使用其它的濾波器來(lái)獲得圖像的梯度。

得到的Ix和Iy你們能看出區(qū)別的對(duì)吧,Ix是水平方向的梯度,上面有樹(shù)干的紋理,Iy上檢測(cè)不到的。

============================

然后我們就要開(kāi)始進(jìn)行那五個(gè)步驟啦:

使用0均值高斯隸屬函數(shù)定義像素點(diǎn)屬于zero(非邊緣像素點(diǎn))的程度,其中sigma是標(biāo)準(zhǔn)偏差,我設(shè)置為0.1,c是均值為0。sigma值的改變可以調(diào)整邊緣檢測(cè)的性能。增加它們的值會(huì)使得算法對(duì)于圖像中的邊緣沒(méi)那么敏感并且減少檢測(cè)的邊緣的強(qiáng)度。

定義兩個(gè)規(guī)則:

對(duì)于輸出的像素點(diǎn)的值屬于白色還是黑色分別定義white和black隸屬函數(shù),參數(shù)a和c定位的是三角形的腳點(diǎn),b定位的是頂點(diǎn)。其中wa = 0.1;wb = 1;wc = 1;ba = 0;bb = 0;bc = 0.7; wa,wb,wc,ba,bb,bc可以更改以調(diào)整邊緣檢測(cè)器的性能。如下:

下面這張圖是該圖像邊緣檢測(cè)模糊推理系統(tǒng)的示意圖:

以本實(shí)驗(yàn)中的待檢測(cè)圖像中的一像素點(diǎn)為例進(jìn)一步說(shuō)明第3和第4步。以Ix,Iy=[0.0275,0.2196]的這個(gè)像素點(diǎn)(即書(shū)包上的那個(gè)點(diǎn))為邊緣檢測(cè)模糊推理系統(tǒng)edgeFIS的輸入,它們屬于zero的隸屬度分別為0.9629和0.0897,不屬于zero的隸屬度分別為0.0371(即1-0.9629)和0.9103(即1-0.0897)。

步驟2和步驟3.根據(jù)規(guī)則1的and運(yùn)算,取小值0.0897對(duì)white進(jìn)行截?cái)唷8鶕?jù)規(guī)則2的or運(yùn)算,取大值0.9103對(duì)black進(jìn)行截?cái)唷=財(cái)嗪蟮哪:谠瓐D中由黃線表示。

步驟4.所有規(guī)則的結(jié)果匯總

將white和black小圖中黃線的部分Aggregation(取大值),即可得到所有規(guī)則的結(jié)果匯總后的模糊集,如手繪圖中最右下角的黃線所示,其實(shí)也就是下圖中的藍(lán)色線條。

步驟5.去模糊化

對(duì)Aggeragation后的圖像進(jìn)行去模糊化,即可得到最終的輸出值,如圖橘黃色的線Defuzzified output所示。輸出值約為0.28,是書(shū)包那點(diǎn)的輸出值。

===============================================================================

參考資料:

Matlab的官網(wǎng)Example~~

https://ww2.mathworks.cn/help/fuzzy/fuzzy-logic-image-processing.html?requestedDomain=zh

上一篇博客:

【模糊數(shù)學(xué)】模糊邏輯,隸屬度,模糊邏輯應(yīng)用,模糊推理過(guò)程

https://blog.csdn.net/luolan9611/article/details/94285158

好了,今天就分享這么多吧,可愛(ài)

總結(jié)

以上是生活随笔為你收集整理的matlab评估边缘检测性能,【模糊推理】模糊逻辑图像边缘检测,原理+matlab代码~...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。