奉琦 黎小琴



摘要:本文基于Matlab平臺設計并實現了一個數字圖像實驗軟件,主要是利用Matlab圖像處理工具箱進行數字圖像處理的一些常見的經典操作,其中包括Matlab實現圖像的圖像分割、圖像的幾何變換、圖像的平滑銳化、直方圖均衡化、邊緣檢測等圖像處理操作。系統運行效果良好,界面美觀,操作人性化。
關鍵詞:數字圖像處理;MATLAB;圖形用戶界面
1 引言
數字圖像的起源可以追溯到20世紀五十年代,隨著信息科技的發展以及人們對圖像處理的要求,用數字化對圖像進行處理開始慢慢發展。其主要原理為將所輸入的圖像信號轉變為數字信號,這樣就可以被計算機所識別。本文的設計主要是基于MATLAB的數字圖像處理實驗軟件平臺開發,創建一個圖形用戶界面,主要包括菜單欄、一般處理、圖像分割、圖像的幾何處理、噪聲添加、平滑銳化、直方圖均衡化、邊緣檢測等主模塊及相應的子模塊,界面簡潔,功能良好。
2 系統總框架設計
本系統主界面主要由9個主模塊及其子模塊組成,在系統框架中,將平滑與銳化合并到了一起,系統框架如圖1所示。
2.1 系統各模塊的功能
(1)菜單欄:包括載人圖片、保存圖片、退出;
(2)一般處理模塊:包括圖像的灰度、底片處理、截圖處理;
(3)圖像分割模塊:包含區域提取法和閾值分割;
(4)圖像的幾何變換模塊:包括有圖像的仿射變換,順、逆時針360°旋轉;
(5)添加噪聲模塊:包括圖像的椒鹽噪聲、高斯噪聲的添加;
(6)平滑和銳化模塊:其中包括圖像的中值濾波與均值濾波的平滑,Laplacian算子Prewitt算子與Sobel算子的銳化;
(7)直方圖均衡化模塊:其中包括原圖直方圖、均衡化以后的灰度圖和均衡化以后的RGB圖;
(8)邊緣檢測模塊:包括圖像的不同算子(Canny算子、Log算子、Sobel算子、Prewitt算子和Roberts算子)的檢測;
(9)其他操作:包括圖像的撤銷與還原。
其系統界面如圖2。
3 模塊具體設計
3.1 文件菜單
文件的菜單包含有三個功能:載人圖片、保存圖片以及退出。為了使用戶界面更加清楚明白,可以將這三個功能設置為菜單欄。
我們主要利用imread函數和imshow函數來讀取圖片。在GUI界面上創建兩個坐標軸(將第一個坐標軸命名為原圖像,第二個坐標軸命名為效果圖),用來顯示圖片,然后,利用imread函數讀取圖片再通過ims-how函數將所選取圖片展示在第一個坐標軸內。
圖片保存主要利用imwrite函數。載入圖片之后,我們可以對其進行平臺上的任何處理,然后將所得的新圖像顯示在第二個坐標軸也就是效果圖內。當系統檢測到效果圖中含有文件,uiputfile函數可以將圖片以默認名字untitled.jpg進行保存。否則圖像將“取消保存”。
退出程序則相對簡單,直接利用close函數關閉文件即可。
3.2 一般處理
灰度圖像是具有相同的顏色分量的特殊彩色圖像。在MATLAB里我們對原圖進行灰度轉化主要是利用rgb2gray函數。當所選圖片的像素數大于2時,圖片才可從RGB格式轉換成灰度圖像。
在MATLAB當中對指定圖像進行底片處理(取反運算)就是RGB圖像到CMY的一種轉換。假設RGB中某一像素值為x,可以利用(255-x)得到CMY空間。底片處理的操作主要是運用imcomplement函數,圖像可以為二值圖像、灰度圖像或者RGB圖像。
截圖是運用imcrop函數來完成對圖片某一區域的截取,使用此功能,用戶可以用鼠標交互式地選擇要截取的區域。這樣可以更好的實現用戶友好界面,滿足使用者任意截取圖像的想法。
3.3 圖像分割
圖像分割中的區域提取主要是利用Hough變換,霍夫變換的關鍵點在于投票算法,將圖像坐標轉換到參數坐標然后再求解。若要解出在一幅圖片中的某條直線所在的參數坐標,我們可以通過直線的方程y=kx+b求得,即點(x0,y0)確定了一簇直線。方程y0=kx0+b在參數k-b平面上是一條直線(b=-kx0+y0),這樣,圖像x-y平面上的一個像素點就對應到了參數k-b平面上的一條直線,霍夫變換的基本思想是把圖像平面上的點映射到參數平面上的線。
閾值分割也就是指圖像的閾值化處理,具體是指根據圖像的若干灰度級設定一個灰度級作為閾值或門限,將圖像中的像素的灰度值與該閾值或門限逐次地進行比較。本文選取了四種方法進行圖像的閾值分割。
(1)均勻性度量法的研究思路,我們使用方差來衡量像素是否均衡分布,如果將圖像分成不同的目標和不同的背景時,那么屬于相同類別的像素值的分布就會是均勻的。
(2)類間最大距離法可以告訴我們最好的最完善的分割是在給定閾值時,經過圖像分割之后的前景對象和背景門類之間的差異。要測量兩個類別之間的差異可以計算類別的中心之間的距離差異和閾值。
(3)最大嫡方法,嫡是衡量數據中信息量的一種度量,當嫡取值最大時,意味著獲得的信息量最大。設計思想是選擇一個合適的閾值然后將圖像分為兩類,若是兩類平均熵之和最大,則從圖像中獲取最大信息量,并設置最佳閾值最后確認。
(4)最大類間、類內方差比法,在統計上,方差是代表數據分布不平衡的統計數據。為了通過閾值對兩種問題進行分類,很明顯適當的閾值使得兩個數據之間的差異盡量大。
3.4 圖像的幾何變換
圖像的幾何處理功能模塊含有圖像的仿射變換以及圖像的旋轉兩種功能。
設原圖像坐標為(i,j),變換后圖像的坐標為(i′,j′),則滿足式(1),
的變換稱為仿射變換。
圖像的旋轉以順時針或逆時針方向以特定角度旋轉,使用圖像中的某個點作為原點,本系統設計是以圖片中心為旋轉點旋轉,通常會調整圖像的大小,系統選擇從顯示區域提取圖像。
3.5 添加噪聲
添加噪聲功能模塊。本圖像處理實驗軟件平臺主要利用f=imnoise()函數,實現對椒鹽噪聲與高斯噪聲的添加。椒鹽噪聲出現在圖像中是比較明顯的,對于圖像分割或是邊緣檢測再或特征提取等一些后面的操作具有很厲害的破壞性。
3.6 平滑和銳化
平滑和銳化功能模塊主要含有平滑濾波和銳化濾波兩個功能,平滑主要是對圖像進行均值濾波處理、中值濾波處理。銳化則主要是對圖像進行Sobel算子銳化、Prewitt算子銳化與Laplacian算子銳化。
均值濾波包含相鄰像素及其自己的像素,利用該模板中全部像素的平均值替代原始像素值。
中值濾波是一種非線性信號處理技術,它基于排序統計理論有效地抑制了噪聲,其實現原理如下:根據灰度值對某一像素鄰域內的像素進行排序,然后選擇該序列的中間值作為輸出像素值,以使灰度差異較大的像素周期性像素的值應該繞過像素值并且接近該值,以此來消除孤立的噪聲點。中值濾波可用于在移動窗體時給圖像進行平滑處理。該算法較為簡單,且時間的復雜度較低。主要使用medfilt2函數實現中值濾波。
在圖像增強期間,使用不同類型的圖像平滑算法來消除噪聲,有一定效果,但是在原始圖像被平滑之后,會出現另外的問題,像是模糊圖像的邊緣和圖像的輪廓的情況。為了減少這些不好的影響,有必要使用圖像的銳化來增亮圖像的邊緣,但是應該指出的是,可以銳化的圖像具有較高的噪聲比,否則圖像噪聲比銳化后的噪聲會降低,這會導致比信號更多的噪音,因此通常的做法是首先去除或降低噪音,然后重新加工。本系統就選擇了三種算子進行銳化處理,采用h=fspecial()函數定義算子,然后利用imadd函數添加算子銳化邊緣。
由于算子引入了相似的部分平均運算,能有效地對噪聲進行平滑,這樣可以很好地去掉噪聲的影響。Sobel算子由兩組3X3的矩陣組成,即水平和垂直模板。水平和垂直亮度差差不多可以通過將該圖像與圖像水平卷積來獲得。然而,當單獨使用Sohel算子來執行邊緣檢測和邊緣銳化時,邊緣定位精度不夠高,邊緣像素可能大于某些邊緣地方的響應或響應差異不顯著,從而導致漏檢或誤檢。
Prewitt算子在使用圖像空間中的圖像執行鄰域卷積時,使用兩個方向模板,一個用于檢測水平邊緣,一個用于檢測垂直邊緣。
經過Prewitt算子處理后的所展示出來的圖片與Sobel算子處理后所展示出來的圖片很相似。但是,作為模板系數變化的結果,與Sobel算子相比,可以在一定程度上提高干涉預防效果。
鑒于拉普拉斯算子是一個微分算子,它強調了圖像的灰度變換,同時減少了灰度轉換速度較緩的區間,得到圖像邊緣增強的效果,如果在突出邊緣信息的同時希望能夠保持原圖像的細節,可以在該模板中增加當前像元數據的權重。
3.7 直方圖均衡化處理
原圖的灰度直方圖主要是先利用rgb2gray函數將彩色圖像轉變為灰度圖像,然后用imhist函數將灰度圖像用直方圖表示。
直方圖均衡主要用于處理灰度圖像,并且原始圖像直方圖從相對灰度間隔變為全灰度范圍。
均衡化后的灰度圖像就是將原始圖像的直方圖改成均衡分布的形式,以此來讓圖片質量更完美。利用histeq函數,使灰度圖像處理后的圖像更加順眼。RGB圖像是將原圖中的各種顏色,都用不同比例的紅(R)、綠(G)、藍(B)混合而成。這里主要也是使用histeq函數來將圖像轉化為RGB圖像。
3.8 邊緣檢測
邊緣檢測的基本原理是先利用邊緣增強算子來強調圖像中物體的邊緣,計算灰度圖像中的邊緣強度,最后設置閾值提取點。
檢測算子都是用edge函數實現邊緣檢測實現,在界面邊緣檢測按鈕中回調函數,顯示其結果,這幾種邊緣檢測算子各有其特點:
(1)Roberts算子比較淺顯易懂,而且雖然對具有明顯的低噪聲的圖像效果很完美,但是對于邊沿的提取卻很不嚴謹,而且容易受噪聲影響;
(2)Prewitt算子與Sobel算子都擁有對圖像的平滑作用,可以減少少許噪聲,也能抹掉一些假的邊沿,再一個可以對真正的邊沿進行平滑,不過定位精確度不高;Sobel邊緣檢測算子的高頻像素少,低頻像素多,降低了像素的平均灰度值;
(3)Log算子和Canny算子可以保存圖像邊緣細節,Log算子在最開始的時候會對圖片執行高斯模板濾波并在某種程度上模糊圖像的邊緣,邊緣提取由Canny算子提取,提取出來的邊緣概況非常明顯而且很嚴謹,不會出現錯誤。
4 結束語
本實驗平臺包含了一些常見的經典操作,包括圖像分割、圖像的幾何變換,圖像的添加噪聲,圖像的平滑與銳化、直方圖均衡化以及邊緣檢測。該平臺界面美觀易操作,學生在實際操作后能更好地掌握數字圖像處理的基本原理。
參考文獻
[1]陳剛,魏晗,高毫林.MATLAB在數字圖像處理中的應用[M].清華大學出版社,2016.
[2]梅林.基于K-均值聚類及數學形態學的細胞圖像自動分割方法研究[D].重慶大學,2014.
[3]劉麗麗.適于重要場所個人身份的步態識別技術研究[D].哈爾濱工程大學,2009.