幂律(伽马)变换

本文介绍了伽马变换作为图像增强的一种方法,详细解释了伽马变换的数学公式,并提供了使用Python进行伽马变换的代码示例。通过调整伽马值,可以改变图像的亮度和对比度,从而改善图像的视觉效果。文中展示了不同伽马值下原图的变换结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  伽马变换(幂律变换)是常用的灰度变换,是一种简单的图像增强算法。

伽玛变换的一般表达式为:

其中,r为灰度图像的输入值(原来的灰度值),取值范围为[0,1]。s为经过伽马变换后的灰度输出值。c为灰度缩放系数,通常取1。γ为伽马因子大小。控制了整个变换的缩放程度

 

 图片来源:【FPGA实现图像的非线性变换:伽玛(幂律)变换 - 咸鱼FPGA - 博客园

代码:

from PIL import Image as Image
import numpy as np
import matplotlib.pyplot as plt

def gamma_transformation(input_image, c, gamma):
    '''
    伽马变换
    :param input_image: 原图像
    :param c: 伽马变换超参数
    :param gamma: 伽马值
    :return: 伽马变换后的图像
    '''
    input_image_cp = np.copy(input_image)  # 输入图像的副本
    output_imgae = c * np.power(input_image_cp, gamma) # 输出图像
    return output_imgae

path=r'C:\Users\Administrator\Desktop\Pytorch\downsample\gamma\原图.jpg'
image = Image.open(path)
img=np.array(image)/255.0

r_3=gamma_transformation(img,1,3.0)
r_4=gamma_transformation(img,1,4.0)
r_5=gamma_transformation(img,1,5.0)

# 显示图像
plt.figure()
plt.subplot(1,4,1)
plt.imshow(img)
plt.subplot(1,4,2)
plt.imshow(r_3)
plt.subplot(1,4,3)
plt.imshow(r_4)
plt.subplot(1,4,4)
plt.imshow(r_5)
plt.show()

原图:

 

### Python 实现图像灰度变换幂律变换/伽马校正) 幂律变换也被称为伽马校正,其基本公式为: \[ s = c \cdot r^\gamma \] 其中 \(r\) 是输入像素值,\(s\) 是输出像素值,\(\gamma\) 是控制曲线形状的参数,而 \(c\) 是比例常数。 以下是基于 OpenCV 和 NumPy 的 Python 示例代码来实现图像的幂律变换伽马校正)[^1]: ```python import cv2 import numpy as np def adjust_gamma(image, gamma=1.0): # 构建查找表 (Lookup Table),用于映射旧像素值到新像素值 invGamma = 1.0 / gamma table = np.array([((i / 255.0) ** invGamma) * 255 for i in range(256)]).astype("uint8") # 应用查找表调整图像的亮度 return cv2.LUT(image, table) # 加载原始图像 image = cv2.imread('input_image.jpg') # 调整伽马值并保存结果 gamma_corrected_05 = adjust_gamma(image, 0.5) # 增加对比度 gamma_corrected_20 = adjust_gamma(image, 2.0) # 减少对比度 cv2.imwrite('output_image_gamma_05.jpg', gamma_corrected_05) cv2.imwrite('output_image_gamma_20.jpg', gamma_corrected_20) ``` #### 解析 - `adjust_gamma` 函数通过构建一个查找表(LUT),将每个像素值按幂律关系重新计算。这一步利用了 NumPy 向量化的优势,从而提高了效率。 - 参数 `\gamma` 控制着图像的整体亮度和对比度。当 `\gamma < 1` 时,图像会变得更亮;当 `\gamma > 1` 时,图像会变暗[^3]。 此方法广泛应用于图像增强领域,特别是在光照条件不佳的情况下改善视觉效果[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乐亦亦乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值