python實(shí)現(xiàn)圖像自動(dòng)Gamma校正方式

  • A+
所屬分類:百科知識(shí)

這篇文章主要介紹了python實(shí)現(xiàn)圖像自動(dòng)Gamma校正方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

python圖像自動(dòng)Gamma校正

python實(shí)現(xiàn)圖像自動(dòng)Gamma校正方式

關(guān)于Gamma

Gamma校正是對(duì)動(dòng)態(tài)范圍內(nèi)亮度的非線性存儲(chǔ)/還原算法,即輸入值進(jìn)行的非線性操作,使輸出值與輸入值呈指數(shù)關(guān)系;

從效果上來說Gamma校正調(diào)整圖像的整體亮度,沒有校正的圖像看起來可能會(huì)存在過亮或太暗的情況,所以想要圖像顯示效果更完美,Gamma校正就顯得很重要了。

Gamma矯正的計(jì)算過程如下:

1
output=input〗^(1/Gamma)

使用上面的指數(shù)函數(shù)把每個(gè)像素的RGB值進(jìn)行變換。

具體執(zhí)行下列轉(zhuǎn)換公式(假定像素值的取值范圍為0到255):

1
2
3
R=255X(R/255)〗^((1/gamma))
G=255X(G/255)〗^((1/gamma))
B=255X(B/255)〗^((1/gamma))

一般處理Gamma矯正都是通過手動(dòng)調(diào)節(jié)gamma值來完成的,

但如果圖片多的情況下,手動(dòng)設(shè)置gamma值顯得過于麻煩,

這時(shí)候就需要采用自動(dòng)Gamma矯正,將RGB圖片轉(zhuǎn)成灰度圖,

計(jì)算灰度圖的數(shù)據(jù)均值,通過下面的計(jì)算公式計(jì)算gamma值。

1
gamma_val = math.log10(0.5) / math.log10(mean / 255)

python實(shí)現(xiàn)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import cv2
import numpy as np
import math
import os
def gamma_trans(img, gamma):? # gamma函數(shù)處理
????gamma_table = [np.power(x / 255.0, gamma) * 255.0 for x in range(256)]? # 建立映射表
????gamma_table = np.round(np.array(gamma_table)).astype(np.uint8)? # 顏色值為整數(shù)
????return cv2.LUT(img, gamma_table)? # 圖片顏色查表。另外可以根據(jù)光強(qiáng)(顏色)均勻化原則設(shè)計(jì)自適應(yīng)算法。
def nothing(x):
????pass
data_base_dir = r'./1'? # 輸入文件夾的路徑
outfile_dir = r'./2'? # 輸出文件夾的路徑
list = os.listdir(data_base_dir)
list.sort()
list2 = os.listdir(outfile_dir)
list2.sort()
for file in list:? # 遍歷目標(biāo)文件夾圖片
????read_img_name = data_base_dir + '/' + file.strip()? # 取圖片完整路徑
????image = cv2.imread(read_img_name)? # 讀入圖片
????img_gray = cv2.imread(read_img_name, 0)? # 灰度圖讀取,用于計(jì)算gamma值
????mean = np.mean(img_gray)
????gamma_val = math.log10(0.5) / math.log10(mean / 255)? # 公式計(jì)算gamma
????image_gamma_correct = gamma_trans(image, gamma_val)? # gamma變換
????out_img_name = outfile_dir + '/' + file.strip()
????cv2.imwrite(out_img_name, image_gamma_correct)
????print("The photo which is processed is {}".format(file))

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考

歷史上的今天:

推薦應(yīng)用

發(fā)表評(píng)論

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: