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库BeautifulSoup中的select()和select_one()有什么区别
BeautifulSoup是一个强大且易于使用的Python库,它能够解析HTML和XML文档,并提供了一系列便捷的方法来提取所需的数据,其中,`select()`和`select_one()` 允许我们使用 CSS 选择器来定位文档中的元素,本文将深入探讨这两个函数的使用方法、区别以及实际应用场景2025-06-06
TensorFlow用expand_dim()来增加维度的方法
今天小编就为大家分享一篇TensorFlow用expand_dim()来增加维度的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2018-07-07
Python 异步之在 Asyncio中如何运行阻塞任务详解
这篇文章主要为大家介绍了Python 异步之在 Asyncio 中运行阻塞任务示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-03-03


最新评论