在官方给出的例子中,util.invert函数内部实现了Output=L-input操作
log(1+input)加1是为了避免输入数值为0时,输出为无穷大
由此看来,对数变换的特点是:当输入灰度数据具有非常大的数值范围时(比如[0,10^6]),仍然可以将其压缩到较小的输出灰度值范围)
由此引出一个问题,为什么要做对比度压缩呢?
因为当对比度范围值大到我们肉眼所能分辨时,便看不出灰度的变化,因此需要压缩到我们肉眼所能分辨的对比度。
首先来说明图像是如何显示的
由于实际单像素只能显示0-255的范围,所以0-25500只能映射到0-255
比如实际灰度为0-100只能以灰度1显示
实际灰度为100-200只能以灰度2显示,以此类推
以上为[10,150;250,25500]的灰度显示,由于前三个灰度差异很小,我们肉眼无法分辨
经过对数变换后,矩阵变为[1.04,2.18;2.4,4.4]
有1.04-4.4的灰度范围映射到0-255
对比度明显提高
图像的幅度谱值经常具有非常大的数值范围,此时需要先用对数变换将幅度谱值压缩到一个较小范围再进行显示