Python如何实现伽马矫正
更新时间:2023年10月12日 14:35:52 作者:一米阳光zw
这篇文章主要介绍了Python如何实现伽马矫正问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
Python实现伽马矫正
伽马矫正是一种借助了指数变换映射的增强技术。
伽马矫正的映射函数可表示为:d = T(s)= csY ,其中c和y为常数。
y的值是控制变换效果的主要因素,所以被称之为伽马矫正。
如右图所示:
- 当y 之1时,输入的低灰度范围被压缩,高灰度范围被拉伸,实现了强化亮部,压缩暗部的图像增强效果;
- 当y >1时,输入的高灰度范围被压缩,
- 低灰度范围被拉伸,实现了强化暗部,压缩亮部的图像增强效果;
gama,pY
代码实现
import numpy as np import cv2 def gama_trans(img, gamma): # 先归一化处理,再做伽马计算,再还原到[0,255] gmma_list = [np.power(x / 255.0, gamma) * 255.0 for x in range(256)] # 将列表换成nparray,换成无符号8为数 gamma_table = np.round(np.array(gmma_list)).astype(np.uint8) return cv2.LUT(img, gamma_table) # 定义matshow方法 def matshow(title='image', image=None, gray=False): if isinstance(image, np.ndarray): if len(image.shape) == 2: pass elif gray: # 转换成GRAY格式 image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) else: # 图片默认BGR通道,将突破转换成RGB image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) # 使用这种方式显示图片可能会导致图片显示畸形 # cv2.imshow('image', image) plt.figure() # 载入图像 plt.imshow(image, cmap="gray") # 设置标题 plt.title(title) plt.show() if __name__ == '__main__': im = cv2.imread('data/lena.jpg', 0) matshow('im', im) # 使用小于1的伽马值 im = gama_trans(im, 0.5) matshow('im0.5', im) # 使用大于1的伽马值 im = gama_trans(im, 3) matshow('im3', im)
实现效果
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
提高python代码可读性利器pycodestyle使用详解
鉴于 Python 在数据科学中的流行,我将深入研究 pycodestyle 的使用方法,以提高 Python 代码的质量和可读性。如果你想提升代码质量,欢迎收藏学习,有所收获,点赞支持2021-11-11
最新评论