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()

實驗結果

實驗結果:左圖為原圖,中圖為增加亮度后,右圖為增加對比度后

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

請參考優秀文章 灰度圖像和彩色圖像直方圖全局均衡化和自適應均衡化

增加圖像對比度:圖像直方圖歸一化:

請參考優秀文章 圖像直方圖歸一化


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM