BETA

OpenCVで暗い画像を明るくしてみた(γ補正)

投稿日:2019-09-29
最終更新:2019-11-01

OpenCVで暗い画像をγ補正して明るくしてみた......
使ったツールバージョンは以下

  • MacOS Mojave / python3.5.6 / Opencv3.4.2 / VS code1.38.1

コメント

仕事で物の影で見たい箇所が暗くなってしまい、何かいい方法がないか探していたところ、γ補正のサンプルコードを発見して試してみた(他にも方法があるかもしれません)
掲載したソースは「Mac」で動作確認済み(ラズパイでも動作するはず)
数ヶ月前に「Opencv」「Python」勉強し始めたレベルなので間違いあったらごめんなさい

簡単な概要

  • γ補正とは画像を自然の色に近くなるように、明るさ(輝度)や彩度を調整することらしい
  • 今回試したのは1.4/1.8/2.0/2.4/2.8の5パターンのγ値
  • OpenCVのLUTを使用して配列を変換

ファイル構成

  • ./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

今度は彩度、コントラストにトライしてみようかな。

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@主にプログラム技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう