對數變換在圖像處理中通常有以下作用:
- 因為對數曲線在像素值較低的區域斜率較大,像素值較高的區域斜率比較低,所以圖像經過對數變換之后,在較暗的區域對比度將得到提升,因而能增強圖像暗部的細節。
- 圖像的傅里葉頻譜其動態范圍可能寬達0~10^6。直接顯示頻譜的話顯示設備的動態范圍往往不能滿足要求,這個時候就需要使用對數變換,使得傅里葉頻譜的動態范圍被合理地非線性壓縮。
本節中所使用的樣圖如下:

首先導入所需的程序包:
In?[?]:
import?numpy as?np
import?matplotlib.pyplot as?plt
import?cv2
定義對數變化函數:
In?[?]:
def?log(c, img):
????output =?c *?np.log(1.0?+?img)
????output =?np.uint8(output +?0.5)
????return?output
讀取原始圖像:
In?[?]:
img =?cv2.imread('./street.jpg')
img2 =?cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(img2)
plt.show()
對圖像進行對數變換:
In?[?]:
output =?log(42, img)
顯示結果圖像:
In?[?]:
output2 =?cv2.cvtColor(output, cv2.COLOR_BGR2RGB)
plt.imshow(output2)
plt.show()

可以觀察到,對數變換效果非常明顯,且對于整體對比度偏低并且灰度值偏低的圖像增強效果較好。