直方圖均衡化

来源:互联网 发布:盛势网络剧花絮视频 编辑:程序博客网 时间:2024/05/16 13:46

算法

經典算法

下面以一幅3*2像素的簡單圖片(圖C)為例,來說明灰度直方圖均衡化的算法。

 (圖C)

圖C的直方圖:

注意看百分位(Percentile)這一項。一般軟件的百分位是 當前色階的像素數量÷總像素數量,而Photoshop不同,Photoshop顯示的是 當前色階與前面色階的所有像素數量÷總像素數量。因此圖C色階為100時的百分位就是(3+2)/6=5/6=83.33%,這個百分位其實就是我們要求 的灰度值(范圍0~1),把它轉換成0~255的范圍,要再乘255。

求出每個色階的百分位之後,再乘255,就可以求出與其對應的灰度值來。

色階 數量 出現頻率 百分位 255*百分位

根據每個色階的 色階->255*百分位 的對應關系組成一個灰度映射表,然後根據映射表來修改原來圖片每個像素的灰度值。對於圖C,用128替換50,用212替換100,用255替換200。這樣,灰度直方圖的均衡化就完成了。

Photoshop的算法

經過經典算法均衡化的圖片,最亮的像素值總是255,因為最後一級色階(255)的百分位一定是100%。而最暗的是由色階0的數量決定的,像素值不一定是0。

Photoshop通過對比度拉伸的方法使最暗的像素值變為0,其它像素也相應變暗,最亮的像素保持255不變。對比度拉伸後的效果可能會比經典算法稍顯偏暗。

對比度拉伸的算法,類似於使用色階調整命令把黑場設成Min時的效果,Min是指像素數量不為0的第一個色階。

對比度拉伸的公式:C = (Level - Min) * Scale = (Level - Min) * 255 / (255-Min)

圖C均衡化之後的灰度值分別是128、212、255,為了精確,我們使用保留2位小數的形式(127.50、212.42、255.00)來進行對比度拉伸的計算。

Min = 127.50 '均衡化之後的最小值
Scale = 255/(255-Min) = 2

(127.50-Min)*Scale = 0*2 = 0
(212.42-Min)*Scale = 84.92*2 = 170
(255.00-Min)*Scale = 127.5*2 = 255

'新的映射表:
50  -> 0
100 -> 170
200 -> 255

經典算法和Photoshop算法的直方圖比較。

彩色算法

彩色的直方圖均衡化其實就是對圖像某個或多個顏色通道進行灰度直方圖均衡化運算,常見的有以下幾種方法:

  1. 統計所有RGB顏色通道的直方圖的數據並做均衡化運算,然後根據均衡化所得的映射表分別替換R、G、B通道顏色值。
  2. 分別統計R、G、B顏色通道的直方圖的數據並做均衡化運算,然後根據R、G、B的映射表分別替換R、G、B通道顏色值。
  3. 用亮度公式或求RGB的平均值的方式計算亮度通道,然後統計亮度通道的直方圖的數據並做均衡化運算,然後根據映射表分別替換R、G、B通道顏色值。

Photoshop用的是第一種方法。

原创粉丝点击