opencv圖像處理之gamma變換


 

import cv2
import numpy as np
img=cv2.imread('4.jpg')
def adjust_gamma(image, gamma=1.0):
    invGamma = 1.0/gamma
    table = []
    for i in range(256):
        table.append(((i / 255.0) ** invGamma) * 255)
    table = np.array(table).astype("uint8")
    return cv2.LUT(image, table)

img_gamma = adjust_gamma(img, 2)
cv2.imshow("img",img)
cv2.imshow("img_gamma",img_gamma)

key = cv2.waitKey()
if key == 27:
    cv2.destroyAllWindows()

 

 

 

 


 

提到LUT,很多人可能都會覺得這是一個很專業很高深的詞匯,LUT其實就是Look Up Table(顏色查找表)的縮寫,簡單點兒理解就是:通過LUT,我們可以將一組RGB值輸出為另一組RGB值,從而改變畫面的曝光與色彩。LUT文件就是一個包含了可以改變輸入顏色信息的矩陣數據。LUT本身並不進行運算,只需在其中列舉一系列輸入與輸出數據即可,這些數據呈一一對應的關系,系統按照此對應關系為每一個輸入值查找到與其對應的輸出值,這樣即可完成轉換,也是LUT基本不消耗CPU資源的原因。
原文鏈接:https://blog.csdn.net/weixin_42171170/article/details/94473176


提到LUT,很多人可能都會覺得這是一個很專業很高深的詞匯,LUT其實就是Lookup Table(顏色查找表)的縮寫,簡單點兒理解就是:通過LUT,你可以將一組RGB值輸出為另一組RGB值,從而改變畫面的曝光與色彩。用一個最簡單的模型幫助大家理解就是:

如果我們規定:

當原始R值為0時,輸出R值為5;

當原始R值為1時,輸出R值為6;

當原始R值為2時,輸出R值為8;

當原始R值為3時,輸出R值為10;

...

一直到R值為255

當原始G值為0時,輸出G值為10;

當原始G值為1時,輸出G值為12;

當原始G值為2時,輸出G值為13;

當原始G值為3時,輸出G值為15;

...

一直到G值為255

當原始B值為0時,輸出B值為0;

當原始B值為1時,輸出B值為0;

當原始B值為2時,輸出B值為1;

當原始B值為3時,輸出B值為1;

...

一直到B值為255

那么,如果一個像素為RGB(1,2,3),那么它應用這個LUT之后的輸出值就是RGB(6,13,1),以此類推,我們就可以把所有原始RGB值轉化為輸出RGB值。當然在實際的3D LUT轉換中,算法要比這復雜很多。

原文鏈接:http://www.sohu.com/a/230989286_252971


 

 

還有一篇參考文章:https://blog.csdn.net/Rothwale/article/details/79189032


 


免責聲明!

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



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