创客出手

目录

OpenCV Python 使用伽玛校正图像提亮或变暗(gamma correction)

本示例使用的OpenCV版本是:OpenCV 4.1.1
运行Python的编辑器:Jupyter notebook 6.0.0

示例目的

学习如何应用伽马校正图像。
通过使用np.power对图像的每一个元素都进行n次方的运算,
调整图像像素强度,使图像变亮或变暗。

file

代码实现

加载图片,并把图像元素的数据类型转换成浮点数,以便之后处理

# 加载需要的库
import cv2
import numpy as np
import matplotlib.pyplot as plt

# 加载图片,把图像元素的数据类型转换成浮点数,处于255,把元素数值控制在0-1之间
img = cv2.imread('dog.png').astype(np.float32) / 255
# 色彩空间从BGR转换成RGB
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

#显示图像
plt.imshow(img)

运行完以上代码,可以看到加载的原图

file

定义gamma变量0.5,图像每个元素都进行n次方运算

gamma = 0.5
# np.power函数是进行n次方的运算,
# 在这里是图像的mei
corrected_img = np.power(img, gamma)

plt.imshow(corrected_img)

运行完以上代码,看到的图像相对原图要亮一些

file

定义gamma变量1.5,图像每个元素都进行n次方运算

gamma = 1.5
corrected_img = np.power(img, gamma)

运行完以上代码,看到的图像相对原图要暗一些

file

代码说明

伽马校正是一种非线性操作,
其公式是:Vout = Vin_x^\curlyvee
通过输入和输出像素值之间的幂律关系为:

  • 指数系数小于1时会使图像变亮,
  • 指数系数大于1时会使图像变暗。

在程序中我们使用了NumPy的np.power函数进行全图像每一个元素的指数(幂)运算。
该函数的详细请参考:https://docs.scipy.org/doc/numpy/reference/generated/numpy.power.html

更多关于 的文章
关注创客出手公众号

关注创客出手