MATLAB數(shù)字圖像的腐蝕、填充、細(xì)化與粗化(共10頁)_第1頁
MATLAB數(shù)字圖像的腐蝕、填充、細(xì)化與粗化(共10頁)_第2頁
MATLAB數(shù)字圖像的腐蝕、填充、細(xì)化與粗化(共10頁)_第3頁
MATLAB數(shù)字圖像的腐蝕、填充、細(xì)化與粗化(共10頁)_第4頁
MATLAB數(shù)字圖像的腐蝕、填充、細(xì)化與粗化(共10頁)_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上數(shù)字圖像處理實驗報告姓名 學(xué)號 專業(yè) 電子科學(xué)與工程學(xué)院實驗 5一、 實驗?zāi)康谋敬螌嶒灥奶幚韺ο笫嵌祱D像,關(guān)于二值圖像的處理運算主要包括腐蝕和膨脹。它們是其他處理過程的主要運算環(huán)節(jié)。開閉操作通過腐蝕和膨脹的不同順序組合,能夠使圖像平滑,開閉操作再組合能夠成噪聲濾波器。形態(tài)學(xué)中的擊中擊不中變換也應(yīng)用了腐蝕的運算,用于判斷圖像中能否找到目標(biāo)結(jié)構(gòu),這在圖像細(xì)化中也得到了應(yīng)用。本次實驗主要實現(xiàn):1 圖像的邊緣提??;2 在邊緣提取的基礎(chǔ)上實現(xiàn)區(qū)域填充;3 在區(qū)域填充的基礎(chǔ)上實現(xiàn)圖像細(xì)化;4 在圖像細(xì)化的基礎(chǔ)上實現(xiàn)圖像粗化。在Matlab軟件的自帶函數(shù)庫中其實本身就包含有以上處

2、理過程的函數(shù),為了深入理解每種處理過程的原理,本次實驗所有運算都自行編寫實現(xiàn)。二、 核心代碼及運行后截圖主函數(shù):% 讀取圖像clear;clc;I = imread('onepiece.jpg');I = im2bw(I);% 轉(zhuǎn)換為二值圖像m,n = size(I); % 邊界提取f = im2bw(0,1,0;1,1,1;0,1,0);% 腐蝕用的結(jié)構(gòu)元素F = fs(I,f);BW = im2bw(I-F);% 用原圖減去腐蝕獲得邊緣figure;imshow(I);title('原圖');figure;imshow(F);title('腐蝕圖像&

3、#39;);figure;imshow(BW);title('邊界'); 在上面的運行效果圖上看來,由于原圖選擇的原因,周圍一圈白線有一定寬度但不足夠粗,大概只有23個像素寬度而腐蝕用元素大小為3×3,這導(dǎo)致腐蝕后圖像留下的白線看起來殘缺不全,用原圖減去腐蝕后得到的邊緣圖像也在白線處有“粘在一塊”的現(xiàn)象。只要使用更高一些分辨率的圖片即可避免這樣的情況。但出于后續(xù)試驗的運行速度考慮,本實驗就使用此圖(300×300)。觀察圖像其他地方,有足夠的像素寬度被腐蝕,由此提取的邊緣也很清晰。% 區(qū)域填充I1 = fillbw(BW,40,40);% fillbw函數(shù)實

4、現(xiàn)指定坐標(biāo)填充邊緣內(nèi)部,詳見主函數(shù)后的各子函數(shù)I1 = I1 | fillbw(BW,40,260);% 為避免不必要的計算量,每次填充迭代次數(shù)為70I1 = I1 | fillbw(BW,100,150);% 逐次在圖像中選擇需填充區(qū)域中的起始點以完成填充I1 = I1 | fillbw(BW,100,160);I1 = I1 | fillbw(BW,136,86);I1 = I1 | fillbw(BW,132,212);I1 = I1 | fillbw(BW,147,120);I1 = I1 | fillbw(BW,157,214);I1 = I1 | fillbw(BW,210,171

5、);I1 = I1 | fillbw(BW,206,109);I1 = I1 | fillbw(BW,233,129);I1 = I1 | fillbw(BW,234,140);I1 = I1 | fillbw(BW,237,153);I1 = I1 | fillbw(BW,234,167);I1 = I1 | fillbw(BW,231,178);I1 = I1 | fillbw(BW,248,125);I1 = I1 | fillbw(BW,252,142);I1 = I1 | fillbw(BW,252,162);I1 = I1 | fillbw(BW,247,182);I1 = I1

6、| fillbw(BW,272,149);I1 = I1 | fillbw(BW,256,50);I1 = I1 | fillbw(BW,253,248);I2 = I1 | F;% 因外圍白線邊緣之間沒有足夠空間,很難逐個填充空洞figure;% 故此處直接疊加腐蝕圖像,把外圍白線加上subplot(1,3,1);imshow(I);title('原圖');subplot(1,3,2);imshow(I1);title('區(qū)域填充');subplot(1,3,3);imshow(I2);title('區(qū)域填充+腐蝕'); 實際上邊緣圖像是由原圖

7、像減去腐蝕圖像得到的,而區(qū)域填充是在邊緣圖像的區(qū)域內(nèi)填滿的結(jié)果,故理論上來說最后區(qū)域填充的結(jié)果其實就是原來的腐蝕圖像。從上圖比較就可以看出,除了區(qū)域填充中未填的外圍白線外,疊加了腐蝕圖像的結(jié)果與區(qū)域填充是一樣的,也與腐蝕圖像一樣(具體可以查看附件中的”區(qū)域填充.jpg”、”腐蝕.jpg”和”區(qū)域填充+腐蝕.jpg”)。% 細(xì)化A1 = fs(I2,20);figure;imshow(A1); 實驗效果圖顯示細(xì)化結(jié)果良好,表征了原圖像的主要骨架特征。在實現(xiàn)細(xì)化算法過程中,一開始在判定是否滿足結(jié)構(gòu)元素時采用的方法是實現(xiàn)寫好一個元胞數(shù)組Bk,然后在程序中調(diào)用數(shù)組進(jìn)行比較。后來發(fā)現(xiàn)這樣的運算速度大大降

8、低,改為在程序中現(xiàn)寫結(jié)構(gòu)元素矩陣。% 粗化A2 = fs(A1,2);figure;imshow(A2);從上圖看出在細(xì)化得到的骨架基礎(chǔ)上,粗化得到的結(jié)果已經(jīng)失去了原圖像骨架之外的信息了,只能夠把骨架大致的等寬度變粗而已。雖然粗化與細(xì)化在運算上是對偶的,但不同于加減法、乘除法的對偶,由于細(xì)化過程中圖像逐個減去判定擊中點,余留圖像的信息量實際在減少,作為骨架的剩余信息已不足夠做恢復(fù)原狀的逆運算。圖像中粗化線條中摻雜了很多間斷,這是由于間斷處兩邊在判定擊中而粗化后,中間點的形狀不能滿足判定結(jié)構(gòu)元素中的任何一個,故不作為擊中點而沒有填白。子函數(shù):function Y = fs( A,f )% fs函

9、數(shù)實現(xiàn)用結(jié)構(gòu)元素模板f將圖像A腐蝕% 輸入:A被腐蝕圖像% f結(jié)構(gòu)元素,此函數(shù)只編寫了方形情% 況,大小可自定義m,n = size(A);% 獲取圖像大小 l = (size(f)-1)/2;Y = im2bw(zeros(m,n);% 初始化輸出為0矩陣for i = 1+l:m-l% 遍歷圖像中3×3區(qū)域,若能放下結(jié)構(gòu)元素f,則該點填白 for j = 1+l:n-l if (sum(sum(A(i-l:i+l,j-l:j+l) & f) = sum(f(:) Y(i,j) = 1; end endend endfunction Y = fillbw( A,x,y)%f

10、illbw函數(shù)實現(xiàn)在圖像A的第x行、第y列處開始,在邊緣區(qū)域內(nèi)填充白色% 輸入:A需填充圖像% x起始點行數(shù)% y起始點列數(shù)% 避免小塊區(qū)域填充時間過久,迭代次數(shù)不宜取過大,為方便調(diào)用,本函數(shù)在函數(shù)內(nèi)部固定為70次m,n = size(A);YY(:,:,1) = zeros(m,n);% 起始圖像為0矩陣YY(x,y,1) = 1;% 從指定位置開始填充f = 0,1,0;1,1,1;0,1,0;for k = 2:70% 填充迭代70次 YY(:,:,k) = zeros(m,n); for i = 2:m-1% YY(k)為YY(k-1)的膨脹圖像 for j = 2:n-1 if YY

11、(i,j,k-1) = 1 YY(i-1:i+1,j-1:j+1,k) = YY(i-1:i+1,j-1:j+1,k) | f; end end end YY(:,:,k) = YY(:,:,k) & not(A);% 膨脹后與邊界的取反圖像相與,保證不溢出邊界endY = YY(:,:,70);% 輸出為第70次填充結(jié)果end function Y = fs( A,count )%fs函數(shù)將圖像A細(xì)化count次% 輸入:A細(xì)化圖像% count細(xì)化迭代次數(shù)m,n = size(A);Y = A;for k = 1:count% 設(shè)定迭代次數(shù)YY = ones(m,n);% 初始化中

12、間變量for i = 2:n-1 for j = 2:m-1% 在圖像中尋找8個結(jié)構(gòu)對元素位置并涂黑(即細(xì)化) if Y(j-1,i-1) = 0 && Y(j,i-1) = 0 && Y(j+1,i-1) = 0 && Y(j,i) = 1 && Y(j-1,i+1) = 1 && Y(j,i+1) = 1 && Y(j+1,i+1) = 1 YY(j,i) = 0; end endendY = Y & YY;YY = ones(m,n);for i = 2:n-1 for j = 2:m

13、-1 if Y(j,i-1) = 0 && Y(j+1,i-1) = 0 && Y(j+1,i) = 0 && Y(j,i) = 1 && Y(j-1,i) = 1 && Y(j-1,i+1) = 1 && Y(j,i+1) = 1 YY(j,i) = 0; end endendY = Y & YY;YY = ones(m,n);for i = 2:n-1 for j = 2:m-1 if Y(j+1,i-1) = 0 && Y(j+1,i) = 0 && Y

14、(j+1,i+1) = 0 && Y(j,i) = 1 && Y(j-1,i) = 1 && Y(j-1,i+1) = 1 && Y(j-1,i-1) = 1 YY(j,i) = 0; end endendY = Y & YY;YY = ones(m,n);for i = 2:n-1 for j = 2:m-1 if Y(j+1,i) = 0 && Y(j+1,i+1) = 0 && Y(j,i+1) = 0 && Y(j,i) = 1 && Y(j,i-1)

15、 = 1 && Y(j-1,i) = 1 && Y(j-1,i-1) = 1 YY(j,i) = 0; end endendY = Y & YY;YY = ones(m,n);for i = 2:n-1 for j = 2:m-1 if Y(j-1,i-1) = 1 && Y(j,i-1) = 1 && Y(j+1,i-1) = 1 && Y(j,i) = 1 && Y(j-1,i+1) = 0 && Y(j,i+1) = 0 && Y(j+1,i+1) =

16、0 YY(j,i) = 0; end endendY = Y & YY;YY = ones(m,n);for i = 2:n-1 for j = 2:m-1 if Y(j,i-1) = 1 && Y(j,i) = 1 && Y(j+1,i-1) = 1 && Y(j+1,i) = 1 && Y(j-1,i) = 0 && Y(j-1,i+1) = 0 && Y(j,i+1) = 0 YY(j,i) = 0; end endendY = Y & YY;YY = ones(m,n);fo

17、r i = 2:n-1 for j = 2:m-1 if Y(j+1,i-1) = 1 && Y(j+1,i) = 1 && Y(j+1,i+1) = 1 && Y(j,i) = 1 && Y(j-1,i) = 0 && Y(j-1,i+1) = 0 && Y(j-1,i-1) = 0 YY(j,i) = 0; end endendY = Y & YY;YY = ones(m,n);for i = 2:n-1 for j = 2:m-1 if Y(j+1,i+1) = 1 &&

18、; Y(j+1,i) = 1 && Y(j,i+1) = 1 && Y(j,i) = 1 && Y(j-1,i) = 0 && Y(j,i-1) = 0 && Y(j-1,i-1) = 0 YY(j,i) = 0; end endendY = Y & YY;endend三、 實驗分析本次實驗主要程序全部自行編寫完成,主要是在實現(xiàn)算法的過程中理解每種處理方法的原理。二值圖像的處理主要是通過矩陣加減法、邏輯值的與或非運算以及集合的運算。腐蝕運算的形象定義是用一個小元素在原圖像內(nèi),保證不超出邊界的移動,其中心移動

19、的位置集合就是腐蝕結(jié)果。按照這個定義,在圖像內(nèi)遍歷每個與結(jié)構(gòu)元素同大小的分塊矩陣,與結(jié)構(gòu)元素做與運算后(保留結(jié)構(gòu)元素非零位置的值)與結(jié)構(gòu)元素比較,若相同則表示結(jié)構(gòu)元素在該位置沒有超出邊界,此處填白。不過處理的圖像區(qū)域如果太小,就很難能使結(jié)構(gòu)元素不超出邊界,就會造成實驗圖像外圍白線處理效果不明顯的現(xiàn)象。經(jīng)過一次腐蝕運算后,大部分情況是圖像的外圍被消除了一圈像素,因此此時用原圖減去腐蝕圖像的話得到的結(jié)果就很接近原圖像的邊緣,這是本次實驗中提取邊緣的原理。不過因為外圍白線的腐蝕效果不好,所以其邊緣提取的效果也會不好,看起來是兩條邊緣黏在一起。圖像細(xì)化一定程度上算是對圖像的一種特殊的腐蝕過程。用常見的邊緣結(jié)構(gòu)作為腐蝕元素,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論