關(guān)雪梅
[摘要]簡述數(shù)字圖像處理、MATLAB軟件及兩者之間的關(guān)系,針對數(shù)字圖像處理技術(shù)的特點及MATLAB語言的應(yīng)用環(huán)境、分析具體的用Matlab來處理圖像的方法,實現(xiàn)數(shù)字圖像處理與姒TLAB之間的有機結(jié)合。
[關(guān)鍵詞]Matlab圖像處理圖像變換圖像增強邊緣檢測圖像分割
中圖分類號:TP3文獻標識碼:A文章編號:1671—7597(2009)1020058--02
一、引言
數(shù)字圖像數(shù)據(jù)量龐大,必須借助適當(dāng)?shù)拈_發(fā)工具。Microsoft公司的Vc++是一種具有高度綜合性能的軟件開發(fā)工具,用它開發(fā)出來的程序有著運行速度快、可移植能力強等優(yōu)點。所以很多科研工作者首選vc++作為數(shù)字圖像處理的開發(fā)工具。但是YC++復(fù)雜難學(xué),難以在短期內(nèi)熟練掌握,這成為眾多《數(shù)字圖像處理》學(xué)習(xí)者的一個瓶頸。MATLAB是由MatbWorks公司開發(fā)的一種可視化科學(xué)計算軟件,其內(nèi)容涉及矩陣理論、范函分析、數(shù)學(xué)物理方程、數(shù)值分析、微積分、有限元、小波分析等應(yīng)用數(shù)學(xué)各個分支,因此,MATLAB的應(yīng)用幾乎涵蓋了所有工程領(lǐng)域。MATLAB已經(jīng)是數(shù)字圖像處理、計算機圖形學(xué)、電子線路、電機學(xué)、自動控制、通信技術(shù)、物理、力學(xué)等領(lǐng)域的科研人員所必須掌握的一種程序設(shè)計語言。
MTLAB不僅具有面向?qū)ο蟮挠嬎銠C語言特征,而且初具面向任務(wù)的計算機語言的思想。本文從實際應(yīng)用的角度介紹如何利用MATLAB進行圖像的處理和分析[2]。
二、MATLAB的特點
一種語言之所以如此迅速地普及,顯示出如此旺盛的生命力,是由于它有著不同于其它語言的特點。正如同F(xiàn)ortran和C等高級語言使人們擺脫了需要直接對計算機硬件資源進行操作一樣,被稱為第4代計算機語言的MATLAB,利用其豐富的函數(shù)資源,使編程人員從繁瑣的程序代碼中解放出來。
(一)功能強大
MATLAB具有功能強勁的工具箱,其包含兩個部分:核心部分和各種可選的工具箱。核心部分中,有數(shù)百個核心內(nèi)部函數(shù)。其工具箱又可分為兩類:功能性工具箱和學(xué)科性工具箱。功能性工具箱主要用來擴充其符號計算功能、圖示建模仿真功能、文字處理功能以及與硬件實時交互功能。功能性工具箱能用于多種學(xué)科,而學(xué)科性工具箱是專業(yè)性比較強的,例如control toolbox,image processingtoolbox,signal processingtoo]box等。這些工具箱都是由該領(lǐng)域內(nèi)的學(xué)術(shù)水平很高的專家編寫的,所以用戶無需編寫自己學(xué)科范圍內(nèi)的基礎(chǔ)程序,就能夠直接進行高、精、尖的研究。
(二)界面友好,編程效率高
MATLAB突出的特點就是簡潔。它用更直觀的、符合人類思維習(xí)慣的代碼代替了C和Fortran語言的冗長代碼,給用戶帶來的是最直觀、最簡潔的程序開發(fā)環(huán)境。MATLAB語言簡潔緊湊,使用方便靈活,庫函數(shù)極其豐富,程序書寫形式自由,利用其豐富的庫函數(shù)避開繁雜的子程序編程任務(wù),壓縮了一切不必要的編程工作。由于庫函數(shù)都是由本領(lǐng)域的專家編寫的,因此用戶不必擔(dān)心函數(shù)的可靠性??梢哉f,用MATLAB進行科學(xué)開發(fā)是站在專家的肩膀上來完成的。
(三)開放性強
MATLAB有很好的可擴充性,可以把它當(dāng)成一種更高級的語言去使用。各種工具箱中的函數(shù)可以互相調(diào)用,也可以由用戶更改。MATLAB支持用戶對其函數(shù)進行二次開發(fā),用戶的應(yīng)用程序可以作為新的函數(shù)添加到相應(yīng)的工具箱中。
三、MATLAB的主要功能
MATIAB之所以成為世界頂級的科學(xué)計算與數(shù)學(xué)應(yīng)用軟件,是因為它隨著版本的升級與不斷完善而具有越來越強大的功能。
1、數(shù)值計算功能
姒TLAB出色的數(shù)值計算功能是使之優(yōu)于其他數(shù)學(xué)應(yīng)用軟件的決定性因素之一。
2、符號計算功能
MATLAB符號運算的獨特之處:無需事先對變量賦值,而所得的結(jié)果以標準的符號形式表達,符號計算的整個過程以字符進行。
3、數(shù)據(jù)分析功能
MATLAB可以將計算數(shù)據(jù)以二維、三維乃至四維的圖形表現(xiàn)。這不僅使數(shù)據(jù)間的關(guān)系清晰、明了,而且對于揭示其內(nèi)在本質(zhì)有著非常重要的作用。
4、動態(tài)仿真功能
MATLAB提供了一個模擬動態(tài)系統(tǒng)的交互程序SIMULI Nl(,用戶通過簡單的鼠標操作,就可建立起直觀的系統(tǒng)模型,并進行仿真。
5、圖形文字統(tǒng)一處理功能
MATLAB Notebook成功地將Microsoft Work與MATLAB集成為一個整體,為文字處理、科學(xué)計算、工程設(shè)計營造了一個完美、統(tǒng)一的工作環(huán)境。它既擁有Word強大的文字處理功能,又能通過Word訪問MATLAB的數(shù)據(jù)計算和可視化結(jié)果[3]。
四、利用MATLAB進行圖像處理
數(shù)字圖像研究的領(lǐng)域非常廣泛,從學(xué)科上可以分為圖像的數(shù)字化、圖像變換、圖像增強、圖像恢復(fù)、圖像分割、圖像分析和理解、圖像的壓縮等[4]。MATLAB6,x提供了20類圖像處理函數(shù),涵蓋了圖像處理包括近期研究成果在內(nèi)的幾乎所有的技術(shù)方法,是學(xué)習(xí)和研究圖像處理的人員難得的寶貴資料和加工工具箱[5]。
(一)常用圖像撮作
1、圖像類型轉(zhuǎn)換
MATLAB圖像處理工具箱支持4種圉像類型,分別為真彩色圖像(RGB)、索引色圖像、灰度圖像(I)和二值圖像(BW)。由于有的函數(shù)對圖像類型有限制,因此這4種類型可以用工具箱的類型轉(zhuǎn)換函數(shù)相互轉(zhuǎn)換。MATLAB可操作的圖像文件包括BMP,HDF,JPEG,PCX,TIFF和XWD等格式。例如,要對一幅索引色圖像濾波,首先應(yīng)該將它轉(zhuǎn)換成真彩色圖像或者灰度圖像,這時MATLAB將會對圖像的灰度進行濾波,即通常意義上的濾波。如果不將索引色圖像進行轉(zhuǎn)換,MATLAB則對圖像調(diào)色板的序號進行濾波,這是沒有意義的。
2、圖像文件的讀寫與顯示操作
MATLAB為用戶提供了專門的函數(shù),以從圖像格式的文件中讀寫圖像數(shù)據(jù)。imread()函數(shù)用于讀入各種圖像文件,imwrite()函數(shù)用于輸出圖像,imfinfo()函數(shù)用于讀取圖像文件的有關(guān)信息。
把圖像顯示于屏幕有imread()、image()等函數(shù)。用subplot()函數(shù)能將一個圖像窗口分成幾個部分,但同一個圖像窗口內(nèi)只能有一個調(diào)色板。subimage函數(shù)可在一個圖像窗口內(nèi)使用多個調(diào)色板,使得各種圖像能在同一個圖像窗口中顯示,用zoom()函數(shù)可實現(xiàn)對圖像的縮放。
3、其它常用圖像操作
圖像的插值縮放可用imresize()函數(shù)實現(xiàn)。在對數(shù)字圖像進行旋轉(zhuǎn)時,各像素的坐標將會發(fā)生變化,使得旋轉(zhuǎn)之后不能正好落在整數(shù)坐標
處,需要進行插值,imrotate()函數(shù)可實現(xiàn)插值旋轉(zhuǎn)。用lmcrop()函數(shù)可剪切圖像中的一個矩形子圖。
(二)圖像變換功能
在圖像處理技術(shù)中,圖像的(正交)變換技術(shù)有著廣泛的應(yīng)用,是圖像處理的重要工具。通過變換圖像,改變圖像的表示域及表示數(shù)據(jù),可以給后續(xù)工作帶來極大的方便。常運用于圖像壓縮、濾波、編碼和后續(xù)的特征抽取或信息分析過程。例如,傅立葉變換(Fourier Transform)可使處理分析在頻域中進行,使運算簡單;而離散余弦變換(Discrete CosineTransform)可使能量集中在少數(shù)數(shù)據(jù)上,從而實現(xiàn)數(shù)據(jù)壓縮,便于圖像傳輸和存儲。
1、傅立葉變換
在圖像處理的廣泛應(yīng)用領(lǐng)域中,傅立葉變換起著非常重要的作用,具體表現(xiàn)在包括圖像分析、圖像增強及圖像壓縮等方面。利用計算機進行傅立葉變換的通常形式為離散傅立葉變換,采用這種形式的傅立葉變換有以下兩個原因:一是離散傅立葉變換的輸入和輸出都是離散值,適用于計算機的運算操作:二是采用離散傅立葉變化變換,可以應(yīng)用快速傅立葉變換來實現(xiàn),提高運算速度。在MATLABI具箱中,提供了fft2()和ifft2()函數(shù)用于計算二維快速傅立葉變換及其逆變換,fftn()和ifftn()函數(shù)用于計算n維傅立葉變換和逆變換。
2、離散余弦變換
在圖像處理工具箱中,dct2()和idct2()函數(shù)實現(xiàn)二維離散余弦變換及逆變換。大多數(shù)情況下,DCT(Discrete Cosine Transform)用于壓縮圖像,JPEG圖像格式就采用了DCT算法。在]PEG圖像壓縮算法中,圖像被分成8×8或者16×16的圖像塊,然后對每個圖像塊進行DCT變換。DCT變換被量化、編碼及傳輸。在接收端,量化的DCT系數(shù)被解碼,并用來計算每個圖像塊的逆DCT變換,最后把各圖像塊拼接起來構(gòu)成一幅圖像。對一幅典型的圖像而言,許多DCT變換的系數(shù)近似為0,把它們?nèi)サ舨⒉粫黠@影響重構(gòu)圖像的質(zhì)量。
3、radon變換
圖像處理工具箱的radon()函數(shù)用來計算指定方向上圖像矩陣的投影,二元函數(shù)f(x,y)的投影是在某一方向上的線積分。例如,f(x,y)在垂直方向上的線積分是f(x,y)在x方向上的投影,在水平方向上的積分是在y方向上的投影。用iradon()函數(shù)可實現(xiàn)逆radon變換,并經(jīng)常用于投影成像中,這個變換能把radon變換反變換回來,因此可以從投影數(shù)據(jù)重建原始圖像。而在大多數(shù)應(yīng)用中,沒有所謂的用原始圖像來計算投影。例如,x射線吸收重建,投影是通過測量x射線輻射在不同角度通過物理切片時的衰減得到的。原始圖像可以認為是通過切面的截面。這里,圖像的密度代表切片的密度。投影通過特殊的硬件設(shè)備獲得,而切片內(nèi)部圖像通過iradon重建。這可以用來對活的生物體或者不透明物體實現(xiàn)無損成像。
4、離散小波變換
離散小波變換是對連續(xù)小波變換的尺度和位移按照2的冪次進行離散化得到的,又稱二進制小波變換。實際上,人們是在一定尺度上認識信號的。人的感官和物理儀器都有一定的分辨率,對低于一定尺度的信號的細節(jié)是無法認識的。因此對低于一定尺度信號的研究也是沒有意義的。為此,應(yīng)該將信號分解為對應(yīng)不同尺度的近似分量和細節(jié)分量。小波分解的意義就在于能夠在不同尺度上對信號進行分析,而且對不同尺度的選擇可以根據(jù)不同的目的來確定。信號的近似分量一般為信號的低頻分量,其細節(jié)分量一般為信號的高頻分量。因此,對信號的小波分解可以等效于信號通過了一個濾波器組,其中一個濾波器為低通濾波器,另一個為高通濾波器。MATLABT具箱中的dwt()和idwt()函數(shù)可實現(xiàn)一維離散小波變換及其反變換,wavedec()和waverec()用于一維信號的多層小波分解和多層重構(gòu)等。
(三)圖像增強功能
圖像增強是數(shù)字圖像處理過程中常用的一種方法,目的是采用一系列技術(shù)去改善圖像的視覺效果或?qū)D像轉(zhuǎn)換成一種更適合于人眼觀察和機器自動分析的形式。常用的圖像增強方法有以下幾種。
1、灰度直方圖均衡化
均勻量化的自然圖像的灰度直方圖通常在低灰度區(qū)間上頻率較大,使得圖像中較暗區(qū)域中的細節(jié)看不清楚。采用直方圖修整可使原圖像灰度集中的區(qū)域拉開或使灰度分布均勻,從而增大反差,使圖像的細節(jié)清晰,達到增強目的。直方圖均衡化可用histeq()函數(shù)實現(xiàn)。
2、灰度變抉法
照片或電子方法得到的圖像,常表現(xiàn)出低對比度(即整個圖像偏亮或偏暗),為此需要對圖像中的每一像素的灰度級進行灰度變換,擴大圖像灰度范圍,以達到改善圖像質(zhì)量的目的。這一灰度調(diào)整過程可用imadjust()函數(shù)實現(xiàn)。
3、平滑與銳化濾波
平滑技術(shù)用于平滑圖像中的噪聲,基本采用在空間域上的求平均值或中值,或在頻域上采取低通濾波。在灰度連續(xù)變化的圖像中,通常認為與相鄰像素灰度相差很大的突變點為噪聲。灰度突變代表了一種高頻分量,低通濾波則可以削弱圖像的高頻成分,平滑了圖像信號,但也可能使圖像目標區(qū)域的邊界變得模糊。而銳化技術(shù)采用的是頻域上的高通濾波方法,通過增強高頻成分減少圖像中的模糊,特別是模糊的邊緣部分得到了增強,但同時也放大了圖像的噪聲。在MATLAB中,各種濾波方法都是在空間域中通過不同的卷積模板(即濾波算子)實現(xiàn),可用fspecial()函數(shù)創(chuàng)建預(yù)定義的濾波算子,然后用filter()或cony2()函數(shù)在實現(xiàn)卷積運算的基礎(chǔ)上進行濾波。
(四)邊緣檢測和圖像分割功能
邊緣檢測是一種重要的區(qū)域處理方法。邊緣是所要提取目標和背景的分界線,提取出邊緣才能將目標和背景區(qū)分開來。邊緣檢測是利用物體和背景在某種圖像特性上的差異來實現(xiàn)的,這些差異包括灰度、顏色或者紋理特征。實際上,就是檢測圖像特性發(fā)生變化的位置。邊緣檢測包括兩個基本內(nèi)容:一是抽取出反映灰度變化的邊緣點;二是剔除某些邊界點或填補邊界間斷點,并將這些邊緣連接成完整的線。如果一個像素落在邊界上,那么它的鄰域?qū)⒊蔀橐粋€灰度級變化地帶。對這種變化最有用的兩個特征是灰度的變化率和方向。邊緣檢測算子可以檢查每個像素的鄰域,并對灰度變化率進行量化,也包括對方向的確定,其中大多數(shù)是基于方向?qū)?shù)掩模求卷積的方法。MATLABI具箱提供的edge()函數(shù)可針對sobel算子、prewltt算子、Roberts算子、LoG算子和canny算子實現(xiàn)檢測邊緣的功能?;诨叶鹊膱D像分割方法也可以用簡單的MATLAB代碼實現(xiàn)。
五、結(jié)束語
本文主要是研究分析了用Matlab來進行圖像處理的方法。利用MATLAB語言及其所提供的函數(shù)進行圖像處理,編程簡單、操作方便、可靠性強,能夠達到預(yù)期的效果。MATLAB2:具箱功能非常強大,簡化了繁瑣的數(shù)學(xué)計算工作,有效的促進了數(shù)字圖像處理相關(guān)的研究開發(fā)工作。