opencv 修改图像对比度、图像亮度

图像亮度

以灰度图像为例,图像亮度指的是图像的明暗程度,图像的像素值整体越接近于255,图像越亮,反之越接近于0,图像越暗。

图像对比度

假设灰度图像的像素值的范围为[a,b],如果b-a的值越接近于255,图像对比度越大,看上去图像更清晰;反之越接近于0,图像越不清晰。

修改图像的亮度和对比度

OpenCV中亮度和对比度应用这个公式来修改:g(x)=αf(x)+β,其中:α(>0)、β常称为增益与偏置值,分别控制图片的对比度和亮度。

实验:调整灰度图像亮度和对比度

# 调整灰度图像的亮度和对比度
import cv2 as cv
import numpy as np

img = cv.imread('baby_g.jpg',0)
# 增加图像亮度
# 注意需要使用cv.add(),不能直接x+y
res1 = np.uint8(np.clip((cv.add(1*img,30)), 0, 255))
# 增加图像对比度
res2 = np.uint8(np.clip((cv.add(1.5*img,0)), 0, 255))
tmp = np.hstack((img, res1, res2))  # 三张图片横向合并(便于对比显示)

cv.imshow('image', tmp)
cv.waitKey(0)
cv.destroyAllWindows()

实验结果

实验结果:左图为原图,中图为增加亮度后,右图为增加对比度后

实验:调整彩色图像亮度和对比度

# 调整彩色图像的亮度和对比度
import cv2 as cv
import numpy as np

img = cv.imread('paojie.jpg')
img_t = cv.cvtColor(img,cv.COLOR_BGR2HSV)
h,s,v = cv.split(img_t)

# 增加图像亮度
v1 = np.clip(cv.add(1*v,30),0,255)

# 增加图像对比度
v2 = np.clip(cv.add(2*v,20),0,255)

img1 = np.uint8(cv.merge((h,s,v1)))
img1 = cv.cvtColor(img1,cv.COLOR_HSV2BGR)
img2 = np.uint8(cv.merge((h,s,v2)))
img2 = cv.cvtColor(img2,cv.COLOR_HSV2BGR)

tmp = np.hstack((img, img1, img2))  # 三张图片横向合并(便于对比显示)

cv.imshow('image', tmp)
cv.waitKey(0)
cv.destroyAllWindows()

实验结果

实验结果:左图为原图,中图为增加亮度后,右图为增加对比度后

增加图像清晰度:图像直方图均衡化:

请参考优秀文章 灰度图像和彩色图像直方图全局均衡化和自适应均衡化

增加图像对比度:图像直方图归一化:

请参考优秀文章 图像直方图归一化

猜你喜欢

转载自www.cnblogs.com/wojianxin/p/12596070.html