对数变换有两个作用:
1.对数曲线在像素值较低的区域斜率较大,,在像素值较高的区域斜率较低,所以经过对数变换后的图片在较暗的区域对比度将会得到提升,因而能增强图像暗部的细节
2.图像的傅里叶频谱的动态范围可能宽达0~10^6.直接显示频谱显示设备的动态范围往往不能满足要求,这时就需要使用对数变换。使得傅里叶频谱的动态范围被合理的非线性压缩
指数变换多用于图像整体偏暗,扩展灰度级,还可用在图像有“冲淡”的外观,需要压缩中高以下的大部分灰度级的情况下。指数变换就是用来图像增强的,提升了暗部细节。
import cv2
import numpy as np
import math
import copy
image=cv2.imread("C:/Users/wangyiyuan/Desktop/20200201172603_hocyy.jpg",0)#####保存灰度图
h,w=image.shape[0],image.shape[1]
new=np.zeros((h,w))
for i in range(h):
for j in range(w):
new[i][j]=1.0*(math.log(image[i][j]+1.0))
new=cv2.normalize(new,new,0,255,cv2.NORM_MINMAX)
cv2.imwrite("imag.jpg",new)
cv2.waitKey(0)
#############以上代码实现了灰度的对数变换,下面的代码将实现灰度的幂律变换。这两种方法都属于非线性变换
gamma=cv2.imread("C:/Users/wangyiyuan/Desktop/20200201172603_hocyy.jpg",0)
for i in range(h):
for j in range(w):
gamma[i][j]=3*pow(gamma[i][j],0.8)
cv2.imshow("image",gamma)
cv2.waitKey(0)