1. 程式人生 > >關於影象對比度【4】——對比度調整強度

關於影象對比度【4】——對比度調整強度

關於影象對比度【4】

對比度調整強度

之前說了兩種調整對比度調整的方法,線性變換和直方圖均衡化,之前寫的時候都是把對比度增強的效果發揮到極致,但是很高的對比度真的好嗎?有時候,我們是不需要這麼強的對比度的,很高的對比度在視覺上未必讓人舒服,於是就有了對比度調整強度的問題。

對於使用線性變換的方法增強對比度,調整強度就是線性變換y=kx+b中間的k,比如說要求把對比度提高1.2倍,意思就是k=1.2。但是通常說對比度提高1.2倍有一個隱藏含義:影象整體亮度不變(影象的平均畫素值mean不變)。根據這個隱藏條件,就可以算出y=kx+b中間的b,也就是(y-mean)=k(x-mean)。當然,也可能要求不是平均亮度不變,而是亮度中位值mid不變,那自然就變成了(y-mid)=k(x-mid)。總之,線上性變化下去調整對比度,強度很容易控制,指哪打哪。

下圖是保持亮度不變的情況下,對比度提升1倍、1.2倍、1.5倍、1.8倍、2倍、2.5倍獲得的影象:

這裡寫圖片描述

對於使用直方圖均衡化的方法來增強對比度,控制對比度調整強度就不那麼舒服了,基本上很難實現諸如亮度不變,對比度提高1.2倍這樣的功能,因為它壓根就不是線性的。但是如果一定要定義一個調整強度呢?想起來,之前說直方圖均衡化的時候,有一個東西叫累積直方圖:

這裡寫圖片描述

所謂的直方圖均衡化就是把一個曲線的累積直方圖變成一個直線型的累積直方圖,如果把這個過程想象成一個變化的過程,那麼中間就必然有若干個過渡狀態,比如上圖中的綠線。什麼意思呢?很簡單,可以把原始影象和均衡化後的影象做權重融合,即y=k*x1+(1-k)*x0,其中x0是原始影象上的點,x1是均衡化之後的點,k是權重,這個權重實際上就代表了調整的強度。

下圖是k分別為0、0.2、0.4、0.6、0.8、1的時候得到的結果影象:

這裡寫圖片描述

從上面圖上看,也並不是直方圖完全均衡時影象效果最好啊。

至於使用直方圖均衡化還要保持亮度不變什麼的,就別想了,做不到。