OpenCVで暗い画像を明るくしてみた(γ補正)
概要
- γ補正とは画像を自然の色に近くなるように、明るさ(輝度)や彩度を調整することらしい
- 今回試したのは1.4/1.8/2.0/2.4/2.8の5パターンのγ値
- OpenCVのLUTを使用して配列を変換
コメント
- 仕事で物の影で見たい箇所が暗くなってしまい、何かいい方法がないか探していたところ、γ補正のサンプルコードを発見して試してみた(他にも方法があるかもしれません)
- 掲載したソースは「Mac」で動作確認済み(ラズパイでも動作するはず)
- 使ったツールバージョンは以下
- MacOS Mojave / python3.5.6 / Opencv3.4.2 / VS code1.38.1
ファイル構成
- ./image/image_before.jpg : 変換前の画像ファイル
- ./change_image : 画像ファイル変換後に格納するフォルダ
- gamma_correction.py : γ補正ソースファイル(下のソースコード)
ソースコード
import cv2 import numpy as np ################################ # γ補正メソッド # ################################ def gamma_correction(image,gamma): # γ値毎にファイル名を分ける file_name = './change_image/gamma_image_'+str(gamma)+'.jpg' # 整数型で2次元配列を作成[256,1] lookup_table = np.zeros((256, 1), dtype = 'uint8') for loop in range(256): # γテーブルを作成 lookup_table[loop][0] = 255 * pow(float(loop)/255, 1.0/gamma) ###################################### # lookup Tableを用いて配列を変換 # ###################################### image_gamma = cv2.LUT(image, lookup_table) # 変換後のファイルを保存 cv2.imwrite(file_name, image_gamma) # 画像ファイル image_before_file = './image/image_before.jpg' # 変換前の画像データ読み出し image_before = cv2.imread(image_before_file, cv2.IMREAD_COLOR) # ガンマ値 gamma_correction(image_before,1.4) gamma_correction(image_before,1.8) gamma_correction(image_before,2.0) gamma_correction(image_before,2.4) gamma_correction(image_before,2.8) print(" Gamma Correction Change End.....")
イメージ画像
■ 元の画像
■ γ=1.4
■ γ=1.8
■ γ=2.0
■ γ=2.4
■ γ=2.8
今度は彩度、コントラストにトライしてみようかな。