摘 要 該文介紹了用直方圖均衡化對灰度圖像進行灰度映射,從而達到使圖像增強的目的。利用VC++6.0執行效率高,可繼承、封裝、移植等成熟的軟件技術,對直方圖均衡化算法進行實現。
實驗表明,該程序可以快速、準確地對灰度圖像進行灰度變換,達到了使圖像對比度增強,改善圖像質量的預期目的。
關鍵字 Visual C++;圖像增強;直方圖均衡;DIB 文件
由于噪聲、光照等外界環境或設備本身的原因,通常我們所獲取的原始數字圖像質量不是很高,因此在對圖像進行邊緣檢測、圖像分割等操作之前,一般都需要對原始數字圖像進行增強處理。圖像增強主要有兩方面應用,一方面是改善圖像的視覺效果,另一方面也能提高邊緣檢測或圖像分割的質量,突出圖像的特征,便于計算機更有效地對圖像進行識別和分析。 圖像增強是
圖像處理最關鍵的研究問題之一,圖像增強按作用域可分為兩類,即空域處理和頻域處理。空域處理是直接對圖像進行處理,而頻域處理則是在圖像的某個變化域內,對圖像的變換系數進行運算,然后通過逆變換獲得圖像增強效果。本文主要對空域增強法中的直方圖均衡進行分析并用VC ++ 6.0進行算法實現。當前圖像處理在算法實現中主要應用Matlab 仿真工具,但Matlab運行效率較低,且可移植性和實用性均不太理想。與
Java和C#等其他高級語言相比,VC++在程序運行效率、內存使用的可控性和編程的靈活性上均具有較大的優勢,因此本文采用VC ++ 6.0 集成開發環境,以達到算法快速有效地執行,同時增強了算法的可移植性。
灰度圖像直方圖均衡化的描述 1、灰度圖像直方圖處理方法
圖像的直方圖是圖像處理中一種十分重要且實用的工具,它概括了一副圖像的灰度級內容。從數學上來說圖像直方圖是圖像各灰度值統計特性與圖像灰度值的函數,它統計一幅圖像中各個灰度級出現的次數或概率。實際上,灰度圖像直方圖是一個離散函數:
pf(fk)=nk/n k=0,1,…,L-1
其中fk為圖像f(x,y)的第k級灰度,nk是圖像f(x,y)中具有灰度值fk的象素個數,n是圖像象素總數,L是圖像的灰度級數。因為pf(fk)給出了對各個fk出現概率的一個統計,所以直方圖提供了圖像的灰度值分布情況。在灰度直方圖坐標系中,橫坐標表示圖像中各個像素點的灰度級,縱坐標為各個灰度級上圖像各個像素點出現的次數或概率。在對灰度數字圖像的增強處理方法中,灰度均衡化和灰度規定化應用較為廣泛,但后者需要根據具體的圖像人為規定好適當的期望直方圖才能得到滿意的效果,如果期望直方圖規定不當則處理效果會很差,因此后者的通用性不好。而前者在處理時只需要將當前的灰度分布重新均衡地分布于整個灰度區間即可,雖然對于某一幅特定的圖象處理效果可能不及灰度規定化,但通用性卻要好的多,對任意圖象均可獲得相當不錯的處理效果。
2、灰度圖像直方圖均衡化算法分析
直方圖均衡化的基本思想是把原始圖的直方圖變換為均勻分布的形式,這樣就增加了象素灰度值的動態范圍從而可達到增強圖像整體對比度的效果。設原始圖像在(x,y)處的灰度為f,而改變后的圖像為g,則對圖像增強的方法可表述為將在(x,y)處的灰度f映射為g。在灰度直方圖均衡化處理中對圖像的映射函數可定義為:g = EQ (f),這個映射函數EQ(f)必須滿足兩個條件(其中L為圖像的灰度級數):
(1)EQ(f)在0≤f≤L-1范圍內是一個單值單增函數。這是為了保證增強處理沒有打亂原始圖像的灰度排列次序,原圖各灰度級在變換后仍保持從黑到白(或從白到黑)的排列。
(2)對于0≤f≤L-1有0≤g≤L-1,這個條件保證了變換前后灰度值動態范圍的一致性。
累計分布函數(cumulative distribution function,CDF)即可以滿足上述兩個條件,并且通過該函數可以完成將原圖像f的分布轉換成g的均勻分布。此時的直方圖均衡化映射函數為:
gk = EQ(fk) = (ni/n) = pf(fi) ,
(k=0,1,2,……,L-1)
上述求和區間為0到k,根據該方程可以由源圖像的各像素灰度值直接得到直方圖均衡化后各像素的灰度值。在實際處理變換時,一般先對原始圖像的灰度情況進行統計分析,并計算出原始直方圖分布,然后根據計算出的累計直方圖分布求出fk到gk的灰度映射關系。在重復上述步驟得到源圖像所有灰度級到目標圖像灰度級的映射關系后,按照這個映射關系對源圖像各點像素進行灰度轉換,即可完成對源圖的直方圖均衡化。