|
,
即可以理解 的作用是將圖 a 裡面像素點灰度為 的全部變為 ,那麼則有:
上面公式可以理解為對應區間內像素點總數不變。為了實現直方圖均衡化,特殊地有:
因為目標是直方圖均勻分佈,那麼理想的 , 是像素點個數, 是灰度級深度,通常取二百五十六,那麼得到:
那麼, 就可以求出來了,結果為:
離散形式為:
histogram equalization 是要找到一個對應函數 s = f ( r ), r 為輸入信號圖,s 為輸出信號,目的就是尋找 F 的表達,未處理的圖,其直方圖是位於灰的狹小區域,用俗話說就是直方圖很窄,要將它變成直方圖很寬的圖,那麼這需要一個拉伸函數,顯而易見,這個函數必須保證,圖像中原有像素的大小順序不能變,否則會要改變原圖像中表達的內容。這時候我們想到了累積分佈函數。為了方便理解,反過來討論下為什麼找累積分佈函數。首先,一般來說灰度圖像像素是在0-255之間的取值,那麼如果要把像素盡可能的分佈於0-255之間,在分佈的時候,要考慮到原本圖像的灰度值在某個灰度區間內的密度不同。舉個例子,圖像r原本像素分佈在100-150之間,且140-150集中了原先像素的絕大部分像素值,這個時候,如果讓原來的圖像按線性函數映射到0-255是行不通的,線性函數並不能表達原來像素值的密度分佈情況。然而,累積分佈函數是與原來的像素在某個特定區間內分佈情況有著很強的關聯性。如果對原來的像素做累積,發現在140-150間的像素佔了影響累積函數變化的絕大部分。累積函數只是一個表達原本像素在區間內的分佈規律,它很好的表達了原圖像中各個像素在灰度值為100-150的區間內的分佈情況。這時候我們用這個分佈情況來乘以255,就把這個分佈情況拉伸至了0-255區間。如果把這個乘積作為像素值形成新的圖像s,就會發現原本窄的直方圖就會被拉伸之至0-255,同時也很好的保留了原本圖像中的像素值分佈在灰度上的分佈規律。以上的過程就是從輸入圖像r到輸出圖像s的過程,這個累積函數就是我們要找的映射函數