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