圖像處理,圖像濾波,邊緣處理_第1頁
圖像處理,圖像濾波,邊緣處理_第2頁
圖像處理,圖像濾波,邊緣處理_第3頁
圖像處理,圖像濾波,邊緣處理_第4頁
圖像處理,圖像濾波,邊緣處理_第5頁
已閱讀5頁,還剩10頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、課 程 設 計姓 名: 學 號: 學 院: 專 業: 課 目: 數字圖像處理 圖像處理實驗部分此次實驗在MATLAB中實現:打開MATLAB,“file”“new”“script”,則創建新文件即完成,在新建的“Editor-Untitled”即可編程。下面簡單介紹此次實驗中主要應用到的函數:1、 imread 該函數用于讀入各種圖像文件。如:a=imread(rice.tif),其中圖像rice.tif在MATLAB安裝目錄“matlab”-“toolbox”-“ images”- “imdemos”下,若圖片不在該目錄下,則讀入圖像格式如下:a=imread(D:Demo4.bmp)。2、

2、 imshow該函數用于圖像文件得顯示。如a=imshow(rice.tif)。3、 rgb2gray該函數用于將彩色轉為黑白圖像。如:I=rgb2grayI。4、 subplot該函數一般格式為:subplot(m,n,p),用于在同一窗口中繪制多個子圖,把圖形窗口分割為m*n個子圖,然后再第P個小窗口中創建坐標軸。5、 fspecial利用該函數可生成濾波時所用的模板。其調用格式如下:(1) h=fspecial(type) (2) h= fspecial(type,parameters)參數type指定濾波器的類型,parameters是與濾波器類型有關的具體參數。6、 medfilt2

3、該函數用于實現中值濾波。其調用格式如下:B= medfilt2(A,m,n):對圖像A執行二維中值濾波。每個輸出像素為m*n領域的中值。在圖像邊界用0填充,所以邊緣的中值為m,n/2,區域的中值,可能失真。7、imfilter該函數對任意類型數組或多維圖像進行濾波。調用方法如下:B= imfilter(A,H)B= imfilter(A,H,option1,option2,)或g=imfilter(f,w,filtering_mode,boundary_options,size_options)其中,f為輸入圖像,w為濾波掩膜,g為濾波后圖像。filtering_mode用于指定在濾波過程中使

4、用“相關”還是“卷積”。boundary_options用于處理的邊界充零問題,邊界的大小由濾波器的大小確定。一、圖像濾波:1、均值濾波基本原理是用均值代替原圖像中的各個像素值,即對待處理的當前像素點(x,y),選擇一個模板,該模板由其近鄰的若干像素組成,求模板中所有像素的均值,再把該均值賦予當前像素點(x,y),作為處理后圖像在該點上的灰度值g(x,y)。3*3,5*5,7*7窗口下均值濾波實驗程序如下:clear allI=imread('D:A.jpg');J=imnoise(I,'gaussian',0,0.02); %加入均值為0,方差為0.01的高斯

5、噪聲w1=fspecial('average',3 3); % 先定義3*3窗口的濾波器w2=fspecial('average',5 5); % 先定義5*5窗口的濾波器w3=fspecial('average',7 7); % 先定義7*7窗口的濾波器 a=imfilter(J,w1,'replicate'); %讓圖像通過濾波器 b=imfilter(J,w2,'replicate'); c=imfilter(J,w3,'replicate'); subplot(2,3,1);imshow(I

6、);title('原始圖像');subplot(2,3,2);imshow(J);title('加入高斯噪聲后圖像');subplot(2,3,3); imshow(a); title('3*3均值濾波圖像'); subplot(2,3,4);imshow(b);title('5*5均值濾波圖像');subplot(2,3,5);imshow(c);title('7*7均值濾波圖像');運行結果:MATLAB中實現的均值濾波結果(包括3*3,5*5,7*7窗口)2、中值濾波中值濾波的基本原理是把數字圖像或數字序列中

7、一點的值用該點的一個鄰域中各點值的中值代替,讓周圍的像素值接近的真實值,從而消除孤立的噪聲點。方法是去某種結構的二維滑動模板,將板內像素按照像素值的大小進行排序,生成單調上升的二維數據序列,并取出序列中位于中間位置的灰度作為中心像素的灰度。對一個滑動窗口內的諸像素灰度值排序,用中值代替窗口中心像素的原來灰度值(非線性)。中值濾波法能有效削弱椒鹽噪聲,且比鄰域、超限像素平均法更有效3*3,5*5,7*7中值濾波實驗程序:clear allI=imread('D:shu.bmp');I=rgb2gray(I);J=imnoise(I,'salt & pepper&#

8、39;,0.02);subplot(2,3,1);imshow(I);title('原圖像');subplot(2,3,2);imshow(J);title('添加椒鹽噪聲圖像');k1=medfilt2(J); %進行3*3模板中值濾波k2=medfilt2(J,5,5); %進行5*5模板中值濾波k3=medfilt2(J,7,7); %進行7*7模板中值濾波subplot(2,3,3);imshow(k1);title('3*3模板中值濾波');subplot(2,3,4);imshow(k2);title('5*5模板中值濾波&#

9、39;);subplot(2,3,5);imshow(k3);title('7*7模板中值濾波');結果:MATLAB中實現的中值濾波結果(包括3*3,5*5,7*7窗口)3、試驗比較:由上面兩種濾波的結果可以得出以下結論:均值濾波算法簡單,計算速度快,平滑后噪聲方差為處理前的1/m。但是圖像產生模糊,特別在邊緣和細節處;而且鄰域越大,模糊程度越嚴重,由圖可以看出,即3*3模板去噪能力沒有5*5模板強,但5*5模板的處理室圖像更模糊。與均值濾波相比,中值濾波對脈沖干擾及椒鹽噪聲的抑制效果好,在抑制隨機噪聲的同時能有效保護邊緣少受模糊。且運算速度快,可硬化,便于實時處理,但是對點

10、、線等細節較多的圖像卻不太合適。由圖可以看出,在三個窗口中實現的中值濾波,7*7窗口濾波后的圖像最模糊。二、邊緣檢測1. Roberts算子Roberts算子是最古老的算子之一,是一種交差差分算子。由于它只使用當前像素的2*2鄰域,是最簡單的梯度算子,所以計算非常簡單。Roberts算子計算時利用的像素數一共有4個,可以用模板對應4個像素與模板相應的元素相乘相加得到。Roberts算子邊緣定位準,主要缺點是其對噪聲的高度敏感性,原因在于僅使用了很少幾個像素來近似梯度。實用于邊緣明顯而且噪聲較少的圖像分割。 2、 Sobel的原理:Sobel算子根據像素點上下、左右鄰點灰度加權差,在邊緣處達到極

11、值這一現象檢測邊緣。對噪聲具有平滑作用,提供較為精確的邊緣方向信息,邊緣定位精度不夠高。當對精度要求不是很高時,是一種較為常用的邊緣檢測方法。在技術上,它是一離散性差分算子,用來運算圖像亮度函數的梯度之近似值。在圖像的任何一點使用此算子,將會產生對應的梯度矢量或是其法矢量.該算子包含兩組3x3的矩陣,分別為橫向及縱向,將之與圖像作平面卷積,即可分別得出橫向及縱向的亮度差分近似值。 在邊沿檢測中,常用的一種模板是Sobel 算子。 由于Sobel算子是濾波算子的形式,用于提取邊緣,可以利用快速卷積函數, 簡單有效,因此應用廣泛。美中不足的是,Sobel算子并沒有將圖像的主體與背景嚴格地區分開來,

12、換言之就是Sobel算子沒有基于圖像灰度進行處理,由于Sobel算子沒有嚴格地模擬人的視覺生理特征,所以提取的圖像輪廓有時并不能令人滿意。 在觀測一幅圖像的時候,我們往往首先注意的是圖像與背景不同的部分,正是這個部分將主體突出顯示,基于該理論,我們給出了下面閾值化輪廓提取算法,該算法已在數學上證明當像素點滿足正態分布時所求解是最優的。3、Laplacian算子這是二階微分算子,對噪聲比較敏感,所以,圖像一般先經過平滑處理,因為平滑處理也是用模板進行的,所以,通常的分割算法都是把Laplacian算子和平滑算子結合起來生成一個新的模板。Laplacian算子一般不以其原始形式用于邊緣檢測,因為其

13、作為一個二階導數,Laplacian算子對噪聲具有無法接受的敏感性;同時其幅值產生算邊緣,這是復雜的分割不希望有的結果;最后Laplacian算子不能檢測邊緣的方向;所以Laplacian在分割中所起的作用包括:(1)利用它的零交叉性質進行邊緣定位;(2)確定一個像素是在一條邊緣暗的一面還是亮的一面;一般使用的是高斯型拉普拉斯算子(Laplacian of a Gaussian,LoG),由于二階導數是線性運算,利用LoG卷積一幅圖像與首先使用高斯型平滑函數卷積改圖像,然后計算所得結果的拉普拉斯是一樣的。所以在LoG公式中使用高斯函數的目的就是對圖像進行平滑處理,使用Laplacian算子的目

14、的是提供一幅用零交叉確定邊緣位置的圖像;圖像的平滑處理減少了噪聲的影響并且它的主要作用還是抵消由Laplacian算子的二階導數引起的逐漸增加的噪聲影響。4、實驗程序:clear all I=imread('D:Demo4.bmp');BW1=edge(I,'roberts');%采用roberts算子進行邊緣檢測BW2=edge(I,'sobel');%采用sobel算子進行邊緣檢測BW3=edge(I,'log');%采用log算子進行邊緣檢測subplot(2,2,1);imshow(I);title('原始圖像&#

15、39;);subplot(2,2,2);imshow(BW1);title('Roberts邊緣檢測');subplot(2,2,3);imshow(BW2);title('sobel邊緣檢測');subplot(2,2,4);imshow(BW3);title('log邊緣檢測')5、實驗結果:6、算法比較:算子加法運算PN乘法運算MNRoberts3*N20Sobel11*N22*N2Laplacian4*N2N2 從加法的角度來看,Roberts算子的運算速度較快,從乘法的角度看Laplacian算子的運算速度較快。Roberts算子對邊緣

16、定位比較準,所以分割結果的邊界寬度比較窄。但是Roberts算子由于不包括平滑,對噪聲比較敏感,在圖像噪聲較少的情況下,分割的結果還是相當不錯的。Soble算子對噪聲有抑制作用,因此不會出現很多孤立的邊緣像素點,不過Soble算子對邊緣的定位不是很準確,圖像的邊界寬度往往不止一個像素,不適合對邊緣定位的準確性要求很高的應用。Sobel算子是通過像素平均來實現的,有一定的抗噪能力,同時圖像也產生了一定的模糊。由于Laplacian算子利用的是二階導數信息,對噪聲比較敏感,所以分割結果中在一些像素上出現了散碎的邊緣像素點。不過Laplacian算子對邊緣的定位還是比較準的。三、圖像分割:1、固定閾

17、值法:利用圖像的灰度特征來選擇一個最佳閾值,使前景和背景的兩個灰度級分布的有效信息為最大。這里主要以圖像二值化為例。圖像二值化是通過設定某個閥值,把具有灰度級的圖像變換成只有兩個灰度級的黑白圖像。設輸入圖像為f ( x, y ),二值化后的圖像為g ( x, y ), 閥值為T, 那么圖像二值化的方法為gx,y=0, &f(x,y)<T255, &f(x,y)T2、最大類間方差法(otsu方法)假定:圖像f(i,j)的灰度區間為0,L-1,選擇一閾值t 將圖像的象元分為c1

18、、c2兩組。 其中,C1 : f(i,j)<t, 象元數:w1,灰度均值:m1,均方差:s12 。C2 :f (i,j)>t,象元數:w2 ,灰度均值:m2,均方差:s22 。當組內方差越小,則組內象素越相似;組間方差越大,則兩組的差別越大。所以sB2/sw2 的值越大,分割效果越好。3、實驗程序:clear allI=imread('D:shu.bmp');I=rgb2gray(I);T=0.5*(double(min(I(:)+double(max(I(:);%設置初始閾值為最大灰度和最小灰度值和的一半done=false;while doneg=I>=T;%分成兩組像素,灰度值大于或者等于T的和灰度值小于T的Tnext=0

溫馨提示

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

評論

0/150

提交評論