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