python 编程实现图像的gamma变换
时间: 2023-08-29 17:12:38 浏览: 295
可以使用Python的OpenCV库来实现图像的gamma变换。以下是一个示例代码:
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread('image.jpg')
# gamma变换
gamma = 0.5
img_gamma = np.power(img / 255.0, gamma)
img_gamma = img_gamma * 255.0
img_gamma = img_gamma.astype(np.uint8)
# 显示原图和变换后的图像
cv2.imshow('Original image', img)
cv2.imshow('Gamma transformed image', img_gamma)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上面的代码中,我们首先使用`cv2.imread`函数读取一张图像,并将其转换为浮点型数值范围为0到1之间的数组。然后,我们使用numpy库的`power`函数对图像进行gamma变换,并将变换后的图像乘以255并转换为整型数值范围为0到255之间的数组。最后,我们使用OpenCV的`imshow`函数显示原图和变换后的图像,并使用`waitKey`函数等待用户按下任意键关闭窗口。
相关问题
编程实现图像的gamma变换【opencv】图像处理之伽马变换
在OpenCV库中,伽玛变换是一种调整图像亮度和对比度的技术,尤其用于纠正传感器或显示器非线性响应导致的颜色失真。伽玛变换涉及到将像素值的线性空间转换到非线性的伽玛空间,然后再转换回线性空间。
以下是一个简单的Python示例,使用OpenCV(cv2)库来实现伽玛变换:
```python
import cv2
import numpy as np
def apply_gamma_correction(image_path, gamma=2.2):
# 读取图像
image = cv2.imread(image_path)
# 将BGR图像转换为灰度,如果原图是彩色的
if len(image.shape) == 3:
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 应用伽玛变换
invGamma = 1.0 / gamma
table = np.array([((i / 255.0) ** invGamma) * 255 for i in np.arange(0, 256)]).astype("uint8")
adjusted = cv2.LUT(image, table)
return adjusted
# 使用伽玛变换处理图片
input_image = "input.jpg"
output_image = "output_after_gamma.png"
processed_image = apply_gamma_correction(input_image)
cv2.imwrite(output_image, processed_image)
编程实现图像变暗、图像变亮、降低对比度、gamma变换
在编程中,对图像处理通常涉及到使用各种图像处理库,如Python的PIL(Pillow)、OpenCV等。以下是几种常见的图像处理操作:
1. **图像变暗**(Brightness Decrease): 可以通过调整每个像素的颜色值(通常是RGB或灰度值)来实现。例如,在PIL中,你可以获取当前亮度,并减去一个小的数值。
```python
from PIL import ImageEnhance
image = Image.open('input.jpg')
enhancer = ImageEnhance.Brightness(image)
image_darkened = enhancer.enhance(0.8) # 将亮度降低到原始的80%
```
2. **图像变亮**(Brightness Increase): 同样地,只需增加亮度值即可:
```python
image_enhanced = enhancer.enhance(1.2) # 提升亮度到原来的120%
```
3. **降低对比度**(Contrast Decrease): 对比度可以通过改变颜色的动态范围来调整。比如使用ImageEnhance模块的 Contrast 属性:
```python
contrast_enhancer = ImageEnhance.Contrast(image)
image_lower_contrast = contrast_enhancer.enhance(0.75) # 将对比度降低至75%
```
4. **Gamma变换**(Gamma Correction): 这是一种非线性的色彩转换,用于模拟人眼对光强度感知的不均匀性。在Python中,可以使用`skimage.color.adjust.gamma()`函数:
```python
from skimage import color
gamma_correction = color.rgb2hsv(image)
gamma_corrected = color.hsv2rgb(gamma_correction ** (1 / gamma)) # 使用gamma值进行变换
```
记得替换 `gamma` 为你想要的效果程度,通常值大于1会使图片更亮,小于1则更暗。
阅读全文
相关推荐
















