python实现图像灰度变换幂律变换
时间: 2025-05-11 07:21:32 浏览: 22
### 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]。
---
阅读全文
相关推荐


















