[摘要] 討論了數(shù)字圖像增強技術(shù)中空域圖像銳化的四種算法及其用MATLAB的實現(xiàn);同時給出了利用四種算法進行圖像銳化后的對照圖像。
[關(guān)鍵詞] MATLAB 線性銳化 非線性銳化 sobel算子 prewitt算子 log 算子
MATLAB全稱是MatrixLaboratory(矩陣實驗室),一開始它是一種專門用于矩陣數(shù)值計算的軟件,從這一點上也可以看出,它在矩陣運算上有自己獨特的特點。實際運用中MATLAB中的絕大多數(shù)的運算都是通過矩陣這一形式進行的,這一特點決定了MATLAB在處理數(shù)字圖像上的獨特優(yōu)勢。理論上講,圖像是一種二維的連續(xù)函數(shù),然而計算機對圖像進行數(shù)字處理時,首先必須對其在空間和亮度上進行數(shù)字化,這就是圖像的采樣和量化的過程。二維圖像均勻采樣,可得到一幅離散化成M×N樣本的數(shù)字圖像,該數(shù)字圖像是一個整數(shù)陣列,因而用矩陣來描述該數(shù)字圖像是最直觀最簡便的。而MATLAB的長處就是處理矩陣運算,因此用MATLAB處理數(shù)字圖像非常的方便。MATLAB支持五種圖像類型,即索引圖像、灰度圖像、二值圖像、RGB圖像和多幀圖像陣列;支持BMP,GIF,HDF,JPEG,PCX,PNG, XWD,CUR,ICO等圖像文件格式的讀、寫和顯示。MATLAB對圖像的處理功能主要集中在它的圖像處理工具箱(Image Processing Toolbox)中。圖像處理工具箱是由一系列支持圖像處理操作的函數(shù)組成,可以進行諸如幾何操作、線性濾波和濾波器設(shè)計、圖像變換、圖像分析與圖像增強、二值圖像操作以及形態(tài)學處理等圖像處理操作口 。
數(shù)字圖像處理中圖像銳化的目的有兩個:一是增強圖像的邊緣,使模糊的圖像變得清晰起來;這種模糊不是由于錯誤操作,就是特殊圖像獲取方法的固有影響。二是提取目標物體的邊界,對圖像進行分割,便于目標區(qū)域的識別等。通過圖像的銳化,使得圖像的質(zhì)量有所改變,產(chǎn)生更適合人觀察和識別的圖像。
數(shù)字圖像的銳化可分為線性銳化濾波和非線性銳化濾波。如果輸出像素是輸入像素領(lǐng)域像素的線性組合則稱為線性濾波,否則稱為非線性濾波。
一、線性銳化濾波器
線性高通濾波器是最常用的線性銳化濾波器。這種濾波器必須滿足濾波器的中心系數(shù)為正數(shù),其他系數(shù)為負數(shù)。線性高通濾波器3×3模板的典型系數(shù)
如表1所示:
用線性高通濾波實現(xiàn)圖像銳化的程序和圖像如下:
i=imread('text.png'); %讀入圖像
g=[-1 -1 -1; -1 8-1; -1-1-1];%線性高通濾波3×3模板
h=double(i);%轉(zhuǎn)化為double類型
j=conv2(h,g,'same');% 線性高通濾波進行圖像濾波
subplot(1,2,1);
imshow(h);title('原始圖像');
subplot(1,2,2);
imshow(j);title('濾波后圖像');
二、非線性銳化濾波器
非線性銳化濾波就是使用微分對圖像進行處理,以此來銳化由于鄰域平均導致的模糊圖像。圖像處理中最常用的微分是利用圖y像沿某個方向上的灰度變化率,即原圖像函數(shù)的梯度。梯度定義如下:
(公式2.1)
梯度模的表達式如下:
(公式2.2)
在數(shù)字圖像處理中,數(shù)據(jù)是離散的,幅值是有限的,其發(fā)生的最短距離是在兩相鄰像素之間。因此在數(shù)字圖像處理中通常采用一階差分來定義微分算子。
其差分形式為:
△xf=f(x+1,y)-f(x,y)
△yf=f(x,y+1)-f(x,y)
比較有名的微分濾波器算子包括Sobel 梯度算子、Prewitt 梯度算子和log算子,等等。
用Sobel 梯度算子、Prewitt 梯度算子和log算子實現(xiàn)圖像銳化的程序和圖像如下:
I=imread('coins.png');%讀入圖像
subplot(2,2,1),imshow(I);title('原圖像');%顯示原圖像
H=fspecial('sobel'); %應(yīng)用sobel算子銳化圖像
I2=filter2(H,I); %sobel算子濾波銳化
subplot(2,2,2);imshow(I2); %顯示sobel算子銳化圖像
title('sobel算子銳化圖像');
H=fspecial('prewitt');%應(yīng)用prewitt算子銳化圖像
I3=filter2(H,I);%prewitt算子濾波銳化
subplot(2,2,3);imshow(I3); %顯示prewitt算子銳化圖像
title('prewitt算子銳化圖像');
H=fspecial('log'); %應(yīng)用log算子銳化圖像
I4=filter2(H,I); %log算子濾波銳化
subplot(2,2,4);imshow(I4);%顯示log算子銳化圖像
title('log算子銳化圖像');
三、結(jié)束語
本文就MATLAB在數(shù)字圖像銳化處理方面進行了闡述、討論。實驗結(jié)果表明應(yīng)用MATLAB進行數(shù)字圖像處理具有理想的效果和很高的工程價值。當然,MATLAB圖像處理工具箱中所提供的圖像處理功能遠不止這些。
可以說,MATLAB為數(shù)字圖像處理提供了一種簡單、快捷而又有效的方法,大大提高了數(shù)字圖像處理的效率及效果并且應(yīng)用到圖像處理的各個方向。
參考文獻:
[1]陳純:計算機圖像處理技術(shù)與算法.北京:清華大學出版社,2003年
[2]孫兆林:MATLAB6.x圖像處理.北京:清華大學出版社,2002年
[3]韓曉軍苗長云王亞青:基于標準圖像文件格式的數(shù)字圖像處理方法[J]. 阜新:遼寧工程技術(shù)大學學報(自然科學版).2000,19(4):416~463
[4] 徐飛等編著:MATLAB應(yīng)用圖像處理.西安:西安電子科技大學出版社,2004年
[5]霍宏濤等:《數(shù)字圖像處理》北京:北京理工大學出版社,2002年
[6]范立南等編著:《圖像處理與模式識別》北京:科學出版社,2007年