姜柏軍,鐘明霞
(1.浙江工業(yè)大學(xué)信息工程學(xué)院,浙江杭州310014;2.浙江商業(yè)職業(yè)技術(shù)學(xué)院信息技術(shù)學(xué)院,浙江杭州310053)
當(dāng)前,數(shù)字圖像識別過程中,圖像增強是圖像分析和處理的預(yù)處理階段,直方圖均衡化算法是圖像增強中最常規(guī)、最重要的算法之一。
如果對于給定的一幅圖像,因為在生成、傳輸過程中,由于受到器材、操作等因素,導(dǎo)致圖像質(zhì)量下降,損失掉圖像中重要的像素信息。我們對圖像進行增強的目的:一主要是對圖像灰度作修改和調(diào)整,提高圖像的視覺效果;二是使圖像更有利于計算機處理。圖像增強的方法主要取決于圖像所期望達到的特定效果,利用直方圖均衡化來處理圖像用來增強對比度。直方圖均衡化主要是通過灰度點運算處理直方圖的變化,來實現(xiàn)圖像增強。
在采用傳統(tǒng)的直方圖均衡化算法,對圖像進行增強后得出這些不足:①變換后的圖像的灰度級減少,甚至于某些細節(jié)消失;②對于有些圖像,如直方圖有高的峰值,經(jīng)處理出現(xiàn)對比度不自然的過分增強。所采用的增強圖像的方法主要是通過直方圖均衡化,使得產(chǎn)生平坦的直方圖,能夠獲得絕對平坦的直方圖。
通過直方圖均衡化增強圖像,再用Canny算子進行圖像邊緣檢測,將目標(biāo)圖像轉(zhuǎn)換成二值圖像,然后利用數(shù)學(xué)形態(tài)學(xué)的開閉運算增強輪廓,最后輪廓檢測進行特征識別。
灰度直方圖就是在圖像中對應(yīng)某個灰度級的像素的數(shù)量值。它可以表示為一個笛卡爾坐標(biāo)系,其中X坐標(biāo)是灰度級,Y坐標(biāo)是該灰度出現(xiàn)的像素數(shù)量。直方圖均衡化就是一種點運算,處理過程就是將輸入圖像轉(zhuǎn)換成在每一灰度級上都有相同的像素值,即結(jié)果直方圖是相對平坦的。
假定對應(yīng)關(guān)系且令變量g表示待增強圖像的灰度級,設(shè)g的取值在區(qū)間[0,1]范圍內(nèi),且g=0為黑色及 g=1為白色。我們設(shè)計像素值在區(qū)間[0,L - 1]內(nèi)。
對于任意范圍內(nèi)的g,我們重點關(guān)心變換的形式:
原始輸入圖像中,每一個像素值g都對應(yīng)產(chǎn)生一個灰度值s。同理,可以令變換對應(yīng)關(guān)系T(g)滿足以下條件:
(a)T(g)在區(qū)間0≤g≤1為單值遞增;
(b)當(dāng)0≤g≤1時,0≤T(g)≤1。
條件(a)中要求T(g)為單一值是為了確保反函數(shù)存在,單一值條件保持輸出圖像由黑到白遞增。變換函數(shù)遞減將導(dǎo)致至少有部分亮度范圍被顛倒,從而在目標(biāo)圖像中產(chǎn)生部分反轉(zhuǎn)灰度級。同理,條件(b)保證輸出灰度級與輸入有相同的范圍。由s到g的反函數(shù)可以表示為:
一幅圖像的灰度級表示成在區(qū)間[0,1]的隨機值。隨機值用概率密度函數(shù)(PDF)來表示。令Pr(r)和Ps(s)分別代表隨機變量r和s的概率密度函數(shù)。這里帶有下標(biāo)的Pr和Ps用于表示不同的函數(shù)。用一個導(dǎo)數(shù)表示,且T-1(s)滿足條件(a),則變換變量s的概率密度函數(shù)Ps(s)可由以下公式得到:
因而,變換變量s的概率密度函數(shù)由輸入圖像的灰度級PDF和所選擇的變換函數(shù)決定。由公式(3)經(jīng)過變換得到圖像的直方圖:
為了使得圖像直方圖中所有的灰度級別盡可能具備相同的像素個數(shù),直方圖均衡化令ps(s)=c,其中c為常數(shù)。推導(dǎo)出直方圖均衡化公式。
本算法的具體處理過程為計算原始圖像的灰度直方圖,由全局直方圖和局部直方圖的分布,用隨機增量式直方圖均衡化增強圖像。對于增強的圖像,再利用Canny算子進行邊緣檢測,最后采用Snake提取圖像的輪廓。算法流程圖如圖1所示。
圖1 算法處理流程圖
(1)計算原圖的直方圖,分析直方圖的灰度像素分布;
(2)根據(jù)像素分布,進行全局直方圖均衡化和局部直方圖均衡化;
(3)結(jié)合兩種均衡化的圖像,采用隨機增量式直方圖增強圖像;
(4)利用Canny算子進行邊緣檢測;
(5)使用Snake方法輪廓檢測提取目標(biāo)。
直方圖均衡化產(chǎn)生具有平坦直方圖的圖像,可以在相鄰灰度級中重新隨機分布像素,因此稱為隨機增量式直方圖修正法。能夠使得原先在圖像中的像素分布,能夠進行重新分布,達到我們圖像增強的要求,可以使圖像邊緣輪廓清晰,便于處理和識別。
在公式(5)中,假設(shè)變量s和r是連續(xù)的,而在實際應(yīng)用中,灰度級卻是離散的。在連續(xù)形式下,任意區(qū)間間隔[r,r+dr]上都有無窮個數(shù)。然而在我們的實際圖像中,每個灰度值區(qū)間范圍內(nèi)卻僅有有限個像素。灰度區(qū)間拉伸時,區(qū)間內(nèi)的像素并沒有增加。當(dāng)直方圖均衡化后,可觀察出直方圖有趨于平坦的趨勢,像素的灰度值幾乎能分布在整個灰度區(qū)間,但直方圖并不平坦。
為了實現(xiàn)平坦的直方圖[2],設(shè)原圖中有N1個灰度值為g1的像素,有N2個灰度值為g2的像素,進行圖像增強的目的是拉伸直方圖,使得增強的圖像中灰度值為,和的像素分別有(N1+N2)/3個,而且變換時假定把gi變換成。實際上,在進行圖像變換后,發(fā)現(xiàn)灰度值為,和的像素個數(shù)分別為,和,其中>(N1+N2)/3,< (N1+N2)/3,< (N1+N2)/3。此時,可以隨機取出(N1+N2)/3 -個灰度值為的像素,使其變換成灰度值為的像素。同理,隨機取出-(N1+N2)/3個灰度值為的像素,使其變換成灰度值為的像素。
原始圖像的預(yù)處理效果的好壞直接影響到圖像的后續(xù)處理過程,例如輸入圖像邊界輪廓提取等。預(yù)處理的目標(biāo)就是消除盡可能多的圖像噪聲,減少下一步處理帶來的麻煩。
原圖像為24位JPG真彩色圖像,且圖像大部分區(qū)域灰暗,目標(biāo)覆蓋在灰暗區(qū)塊中,為了能夠有效處理原圖像,就先要對原圖像進行灰度化處理,然后再二值化處理。
在原始彩色圖像轉(zhuǎn)換成灰度圖像中,在三基色模型中,令紅色分量為R,綠色分量為G,藍色分量為B,若R=G=B,則彩色圖像變成灰度圖像,其中R=G=B稱灰度值,因此,灰度圖像每個像素只需一個分量存放灰度值,灰度范圍0~255。一般用以下平均值法對對彩色圖像進行灰度化。
(1)平均值法[3]。將彩色圖像中的三分量亮度求平均值得到一個灰度圖像表示為:
根據(jù)我們所處理的圖像常規(guī)方法,采用平均值法。
(2)二值化處理[4]。由于灰度化后的圖像是0-255之間的顏色值。而進行二值化處理的過程就是將此圖像的顏色分成黑白兩種。為了分離背景與目標(biāo)區(qū)域,需設(shè)立一個閾值。設(shè)定閾值是關(guān)鍵。如果選取的二值化的閾值不合理則就會導(dǎo)致不能將原圖像中的背景與目標(biāo)有效分開,所以這個二值化的閾值選取就顯得非常關(guān)鍵。根據(jù)以往經(jīng)驗,設(shè)定的閾值為125。
采用局部直方圖均衡化[5]方法增強圖像,設(shè)原圖像f(x,y)大小為M ×N,目標(biāo)圖像為g(x,y)。①將目標(biāo)圖像g(x,y)初始化為零,將運算統(tǒng)計變量初值設(shè)為0。②在原圖像的左上角定義一個m×n的子區(qū)域fb,并設(shè)置水平和垂直方向的移動步長為h和v。③對子區(qū)域fb按照基于分頻調(diào)整的直方圖均衡化方法進行圖像處理,要求對整個子區(qū)域的所有像素點進行處理,將結(jié)果累加到目標(biāo)圖像中,并記錄每個像素的計算次數(shù)。④將子區(qū)域按水平方向移動距離h,若子區(qū)域沒有超出圖像邊界,重復(fù)步驟③,否則繼續(xù)往下。⑤按垂直方向移動距離v,若子區(qū)域沒有超出圖像邊界,重復(fù)步驟③,否則繼續(xù)往下。⑥當(dāng)完成以上步驟后,將目標(biāo)圖像中每個像素點的灰度值去除對應(yīng)的統(tǒng)計變量得到目標(biāo)圖像g(x,y)。
1986年,JohnCanny提出了Canny算子,其原理與Marr(LoG)邊緣檢測法相似,即先平滑后求導(dǎo)數(shù)。在使用Canny算法提取邊緣時,一般先將原始圖像灰度化轉(zhuǎn)換成對應(yīng)的灰度圖。本文處理過程中,將處理圖像先灰度化,同時采用局部直方圖均衡化增強了原始圖像。采用一階偏導(dǎo)的有限差分來計算梯度的幅值和方向,我們所采用的卷積因子如下:
其中,x方向,y方向的一階偏導(dǎo)數(shù)矩陣,梯度幅值以及梯度方向的理論計算公式為:
Canny算法中減少假邊緣數(shù)量的方法是采用雙閾值法。選擇兩個閾值,根據(jù)高閾值得到一個邊緣圖像,這樣一個圖像含有很少的假邊緣,但是由于閾值較高,產(chǎn)生的圖像邊緣可能不閉合,未解決這樣一個問題采用了另外一個低閾值。
Snake是一種動態(tài)輪廓模型,由Kass在1987年提出。這種算法對噪聲不敏感,能從復(fù)雜的背景中分割出目標(biāo)對象,并且適用于非剛體的圖像分割和處理。Snake是一個能量映射函數(shù),它能提供待處理圖像的一個原始輪廓位置,當(dāng)能量值降低時,輪廓越接近于低的方向。當(dāng)能量函數(shù)達到極小值附近時,原始輪廓接近于圖像中的真實輪廓。在本圖像目標(biāo)提取輪廓的過程中,采用了Snake的方法,因為提取的目標(biāo)是人像,屬于非剛體,需要用Snake方法來獲取目標(biāo)輪廓。
本文算法是在VS6.0開發(fā)環(huán)境下的C++編寫實現(xiàn),結(jié)合Matlab工具和OpenCV開發(fā)包。實現(xiàn)過程中,調(diào)用了OpenCV中的圖像處理函數(shù)。
實驗原始圖像為愛因斯坦的圖像如圖2(a),這幅圖像背景比較暗,人物目標(biāo)與背景混合在一起,特征并不清晰。實驗中,我們先處理原圖的直方圖分布效果圖,如圖2所示。再采用用局部直方圖增強的直方圖圖分布,得到的效果圖如圖3,最后用隨機增量直方圖進行增強處理,效果圖如圖4所示,顏色分布在一定程度上拉平。從目標(biāo)檢測和識別效果看,采用了直方圖局部增強方式的方法,增強了暗的部分,目標(biāo)所在的部分,對圖像中原有的亮的部分盡量不影響。
圖2 原圖直方圖分布圖
經(jīng)過直方圖局部增強,方便后面的圖像目標(biāo)識別。從原圖到灰度圖,再用直方圖局部增強圖來進行圖像增強,用Canny算子檢測邊緣,最后用主動輪廓模型(Snake)提取目標(biāo)輪廓。圖像識別效果如圖5所示。圖5(a)為原圖;圖5(b)為局部直方圖增強圖;圖5(c)為隨機增量增強圖;圖5(d)為二值圖;圖5(e)為Canny邊緣檢測圖;圖5(f)Snake輪廓提取圖。
圖3 局部增強分布圖
圖4 隨機增量直方圖增強分布圖
圖5 實驗效果圖
本文主要通過隨機增量式直方圖對背景復(fù)雜的原始圖像進行了處理,與沒有采用直方圖均衡化的圖像,最后采用Snake算法提取提取了目標(biāo)輪廓,識別出了圖像中暗部分的目標(biāo),并且有效分割出了目標(biāo)。我們最終采用了Snake提取目標(biāo)輪廓,是由于Snake算法對非剛體封閉區(qū)域目標(biāo)的出色表現(xiàn)。在提取的輪廓目標(biāo)上,也是得益于前面采用隨機增量直方圖將邊緣的灰度相近的部分做了均衡和增強,才能用后期的算法完整的提取出目標(biāo)輪廓。本文中分析的算法,主要是在增強圖像的效果上進行了處理,為更準(zhǔn)確、有效地識別出目標(biāo)做了準(zhǔn)備。
在前面圖像增強的基礎(chǔ)工作上,我們通過Snake提取了輪廓,將在以后的目標(biāo)物體的識別工作中進一步深入分析。
[1] Kenneth RCastleman.Digital image processing[M].Beijng:Publishing House of Electronics Industry,1998.
[2] I Maria Petrou.Image processing the fundamental[M].Beijing:China Machine Press,2005.
[3] Rafael CGonzalez.Digital image processing[M].2nd ed.Beijing:Publishing House of Electronics Industry,2006.
[4] HU Dianhai,L Xuliang,WEN Liuqiang.Image enhancement method using improved histogram equalization[J].Electro-Optic Technocogy Application,2012,27(3):65 -68.扈佃海,呂緒良,文劉強.一種改進的直方圖均衡化圖像增強方法[J].光電技術(shù)應(yīng)用,2012,27(3):65 -68.
[5] MEI Yue-song,YANG Shu-xing,MO Bo.Improved edge debection algorithm based on Canny oprator[J].Laser &Infrared,2006,36(6):501 -503.梅躍松,楊樹興,莫波.基于Canny算子的改進的圖像邊緣檢測方法[J].激光與紅外,2006,36(6):501-503.
[6] Kass M,Witkin M,Terzopoulos D.Snakes:Active Contour Models[J].International Journal of Computer Vision,1987,4(1):32l-331.