【正文】
(h)CNN39。)。subplot(2,2,3),imshow(BW5)xlabel(39。(f)Log39。)。figure(2)subplot(2,2,1),imshow(BW3)xlabel(39。(d)Roberts39。)。 subplot(2,2,3),imshow(BW1)xlabel(39。(b)灰度圖39。)。 end end end figure(1)subplot(2,2,1),imshow(RGB),xlabel(39。 end end endfor i=2:c1 for j=2:d1 if x(i,j)=1 a(i,j)=0。for i=2:c1 for j=2:d1 if abs(xn(i,j))1 judge=0。endend for i=2:c1 for j=2:d1 xn(i,j)=z+4*y(i,j)+16*s(i,j)2*s(i1,j1)2*s(i1,j)2*s(i1,j+1)2*s(i,j1)2*s(i,j+1)2*s(i+1,j1)2*s(i+1,j)2*s(i+1,j+1)。 else f(i,j)=x(i,j)。 for i=2:c1 % 首先求各個(gè)輸出的值for j=2:d1 if x(i,j)=1 % 求f(x(i,j))的值,設(shè)置為f(i,j) f(i,j)=1。 %judge 是判斷網(wǎng)絡(luò)穩(wěn)定的 標(biāo)志,0 是網(wǎng)絡(luò)未達(dá)到穩(wěn)定的標(biāo)志,1表示網(wǎng)絡(luò)已經(jīng)穩(wěn)定了。 circlenumber=0。 s(i,j)=2*(n(i,j))。 x=zeros(c,d)。)。BW5=edge(F,39。log39。)。BW3=edge(F,39。roberts39。)。BW1=edge(F,39。 %讀入彩色圖片 I=rgb2gray(RGB)。39。(g)CNN39。)subplot(2,2,3),imshow(b)。)subplot(2,2,2),imshow(BW5)xlabel(39。)figure(2)subplot(2,2,1),imshow(BW4)xlabel(39。)subplot(2,2,4),imshow(BW3)xlabel(39。)subplot(2,2,3),imshow(BW2)xlabel(39。)subplot(2,2,2),imshow(BW1)xlabel(39。 end end endfigure(1)subplot(2,2,1),imshow(B)xlabel(39。 end end endfor i=1:c for j=1:d if x(i,j)=1 b(i,j)=1。 else judge=1。 end endfor i=1:c for j=1:d xn(i,j)=+2*y(i,j)+8*m(i+1,j+1)m(i,j)m(i,j+1)m(i,j+2)m(i+1,j)m(i+1,j+2)m(i+2,j)m(i+2,j+1)m(i+2,j+2)。 else f(i,j)=x(i,j)。 %當(dāng)所有的狀態(tài)x(i,j)的絕對(duì)值都大于1的時(shí)候,就認(rèn)為網(wǎng)絡(luò)趨于穩(wěn)定 % 下面是計(jì)算過(guò)程,直接迭代到完全收斂while judge==0 circlenumber=circlenumber+1。 % circlenumber是細(xì)胞神經(jīng)網(wǎng)絡(luò)要循環(huán)的次數(shù)judge=0。 for i=2:c+1 for j=2:d+1 m(i,j)=B(i1,j1)。x=zeros(c,d)。)。BW5=edge(I,39。log39。)。BW3=edge(I,39。roberts39。)。BW1=edge(I,39。)。B=imread(39。(b)CNN39。subplot(1,2,2),imshow(a)。(a)原始圖像39。 end end endfiguresubplot(1,2,1),imshow(BW)。 end end endfor i=1:c for j=1:d if x(i,j)=1 a(i,j)=1。 else judge=1。 end endfor i=1:c for j=1:d xn(i,j)=+2*y(i,j)+8*m(i+1,j+1)m(i,j)m(i,j+1)m(i,j+2)m(i+1,j)m(i+1,j+2)m(i+2,j)m(i+2,j+1)m(i+2,j+2)。 else f(i,j)=x(i,j)。 for i=1:c, for j=1:d, if x(i,j)=1 f(i,j)=1。 judge=0。 for i=2:c+1 for j=2:d+1 m(i,j)=BW(i1,j1)。 %讀出矩陣的行列x=zeros(c,d)。 %使用最大類間方差法(Otsu)獲得閾值BW=im2bw(I,level)。)。附 錄二值圖像的CNN邊緣提取程序clear allI=imread(39。深深地感謝父母對(duì)我養(yǎng)育之恩和諄諄教誨,雖然現(xiàn)在不在身邊,但是他們總是給我鼓勵(lì),教我戰(zhàn)勝困難,他們的支持給了我戰(zhàn)勝困難的勇氣。謹(jǐn)向給予我無(wú)私幫助的同學(xué)們表示深切的感謝。并且,楊老師治學(xué)嚴(yán)謹(jǐn),一絲不茍,注重培養(yǎng)學(xué)生研究問(wèn)題、解決問(wèn)題的獨(dú)立工作能力,讓我受益匪淺。楊老師在平時(shí)的學(xué)習(xí)生活中給予了我最熱情的指導(dǎo)和幫助,在我完成論文的整個(gè)過(guò)程,更是從開(kāi)題報(bào)告到完成初稿都有楊老師的辛勞。在這里,我結(jié)識(shí)了許多的朋友,在和他們的交往中,我學(xué)習(xí)到了許多知識(shí),思想、能力等方面得到了很大的提高。一般情況下,使用canny算法的邊緣提取效果好于其它算法。該方法的優(yōu)點(diǎn)在于使用兩種不同的閾值,分別檢測(cè)強(qiáng)邊緣和弱邊緣,并且僅當(dāng)弱邊緣和強(qiáng)邊緣相連時(shí),才將弱邊緣包含在輸出圖像中。 在圖像的邊緣提取方面,canny算法相對(duì)于以上幾種無(wú)疑是最好的,這種方法不容易受到噪聲的干擾,能夠真正的檢測(cè)到弱的邊緣。但是利用它提取的邊緣的結(jié)果是邊緣較粗,因此定位不是很準(zhǔn)確性較差;sobel算法和prewitt算法對(duì)灰度漸變和噪聲較多的圖像處理效果好,對(duì)圖像邊緣的定位也比較準(zhǔn)確。但是它與傳統(tǒng)的算法相比最突出的優(yōu)點(diǎn)是,它能夠高速并行計(jì)算,且處理速度與圖像大小無(wú)關(guān),同時(shí)便于硬件的實(shí)現(xiàn),這使得它在圖像實(shí)時(shí)處理方面還有很大的發(fā)展?jié)摿梢园l(fā)掘。它提取出的圖像的邊緣比較細(xì)膩。下面圖312是實(shí)際提取的圖像范例:圖 312 原始圖像與Canny算子提取 基于CNN的算法和傳統(tǒng)方法仿真結(jié)果的比較下面,以Matlab圖像處理工具箱中所提供的edge函數(shù)利用以上算子來(lái)檢測(cè)圖像的邊緣,以及基于CNN的圖像邊緣檢測(cè)結(jié)果進(jìn)行比較。梯度的幅度和方向也可以通過(guò)查找表由偏導(dǎo)數(shù)計(jì)算。已平滑數(shù)據(jù)陣列的梯度可以使用一階有限差分近似式來(lái)計(jì)算x 與y 偏導(dǎo)數(shù)的2個(gè)陣列與: ( 325 ) ( 326 )在這個(gè)正方形內(nèi)求有限差分的均值,以便在圖像中的同一點(diǎn)計(jì)算和的偏導(dǎo)數(shù)梯度。用表示圖像。Canny邊緣檢測(cè)的算法步驟為:(1) 用高斯濾波器平滑圖像;(2) 用一階偏導(dǎo)的有限差分來(lái)計(jì)算梯度的幅值和方向;(3) 對(duì)梯度幅值進(jìn)行非極大值抑制;(4) 用雙閾值算法檢測(cè)和連接邊緣。算法中具體通過(guò)2個(gè)閾值來(lái)分別檢測(cè)強(qiáng)邊緣和弱邊緣; 當(dāng)且僅當(dāng)弱邊緣與強(qiáng)邊緣連接時(shí),弱邊緣才被輸出。因此Canny 算子具有很好的邊緣檢測(cè)性能。(3) 單邊緣響應(yīng)準(zhǔn)則,即單個(gè)邊緣產(chǎn)生的多個(gè)響應(yīng)的概率要低,虛假邊緣響應(yīng)應(yīng)得到最大抑制。下面圖311是實(shí)際提取的圖像范例:圖 311 原始圖像與Log算子提取 Canny邊緣算子Canny于1986年提出一個(gè)優(yōu)良的邊緣檢測(cè)算子應(yīng)滿足以下準(zhǔn)則:(1) 信噪比準(zhǔn)則,即不漏檢真實(shí)邊緣,也不把非邊緣點(diǎn)作為邊緣點(diǎn)檢出,使輸出的信噪比最大。而且它常產(chǎn)生雙像素寬的邊緣,也不能提供邊緣方向的信息。上式就是馬爾和希爾得勒斯提出的邊緣檢測(cè)算子(簡(jiǎn)稱MH算子),由于LOG濾波器在空間中的圖形與墨西哥草帽形狀相似,所以又稱為墨西哥草帽算子。由于對(duì)平滑圖像進(jìn)行拉普拉斯運(yùn)算可等效為的拉普拉斯運(yùn)算與的卷積,故上式變?yōu)椋?= ( 322 )式中稱為L(zhǎng)OG濾波器,其為:=+= ( 323 ) 這樣就有兩種方法求圖像邊緣:(1) 先求圖像與高斯濾波器的卷積,再求卷積的拉普拉斯的變換,然后再進(jìn)行過(guò)零判斷;(2) 求高斯濾波器的拉普拉斯的變換,再求與圖像的卷積,然后再進(jìn)行過(guò)零判斷。拉普拉斯函數(shù)用二維二階導(dǎo)數(shù)的近似,是因?yàn)樗且环N無(wú)方向算子。但是由于平滑會(huì)造成圖像邊緣的延伸,因此邊緣檢測(cè)器只考慮那些具有局部梯度最大值的點(diǎn)為邊緣點(diǎn)。將圖像與進(jìn)行卷積,可以得到一個(gè)平滑的圖像,即: (320)(2) 增強(qiáng):對(duì)平滑圖像進(jìn)行拉普拉斯運(yùn)算,即: ( 321 )(3) 檢測(cè):邊緣檢測(cè)判據(jù)是二階導(dǎo)數(shù)的零交叉點(diǎn)(即 的點(diǎn))并對(duì)應(yīng)一階導(dǎo)數(shù)的較大峰值。為此Marr和Hildreth將高斯濾波和拉普拉斯邊緣檢測(cè)結(jié)合在一起,形成 LOG( Laplacian of Gaussian,LOG)算法,也稱之為拉普拉斯高斯算法。一般來(lái)說(shuō),距離越大,產(chǎn)生的影響越小。運(yùn)算結(jié)果是一幅邊緣幅度圖像。Sobel邊緣算子的卷積和如圖38所示,圖像中的每個(gè)像素都用這兩個(gè)核做卷積。但是像素平均相當(dāng)于對(duì)圖像的低通濾波,所以Prewitt算子對(duì)邊緣的定位不如Roberts算子。下面圖35是實(shí)際提取的圖像范例:圖 35 原始圖像與Roberts算子提取 Prewitt邊緣算子 Pr