圖像亮度
以灰度圖像為例,圖像亮度指的是圖像的明暗程度,圖像的像素值整體越接近於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()
實驗結果
增加圖像清晰度:圖像直方圖均衡化:
請參考優秀文章 灰度圖像和彩色圖像直方圖全局均衡化和自適應均衡化
增加圖像對比度:圖像直方圖歸一化:
請參考優秀文章 圖像直方圖歸一化