こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!
- Pythonによる画像処理に興味がある。
- OpenCVのガンマ変換技法をもとに「画像の明るさ」を調節したい。
OpenCVとは
OpenCV(Open Source Computer Vision Library)とは、画像処理やコンピュータビジョンの分野で広く活用されているオープンソースライブラリです。画像データの数値処理に強いのが特徴であり、高度な統計アルゴリズムも多数含まれていることから、近年機械学習の分野でも広く利用されています。
画像の明暗調節|OpenCVによるガンマ補正とは
画像・映像の入出力機器の特性を示す指標として、ガンマ値(γ値)というものがあります。ガンマ値とは、入出力機器の信号と画素の輝度の関係を示したものです。
入出力機器が画像・映像を出力する際、色の明暗を正しく出力できるようにガンマ値を補正することをガンマ補正といいます。
【Python実践】OpenCVのガンマ補正による画像の明るさ調節
PythonのOpenCVライブラリを用いてガンマ補正を適用し、画像の明るさ調節する場合、次のようなコードを記述します。
画像読込
部分の画像ディレクトリを修正した上でコードを実行してみましょう。
明るくする場合(γ>1)
画像を明るくして出力したい場合は、gamma
を1より大きい値に設定します。
import cv2
import numpy as np
# 画像読込
img = cv2.imread("image_data.jpg")
"""
**********************************************************
【ガンマ補正の公式】
Y = 255(X/255)**(1/γ)
【γの設定方法】
・γ>1の場合:画像が明るくなる
・γ<1の場合:画像が暗くなる
**********************************************************
"""
# ガンマ変換用の数値準備
gamma = 3.0 # γ値を指定
img2gamma = np.zeros((256,1),dtype=np.uint8) # ガンマ変換初期値
# 公式適用
for i in range(256):
img2gamma[i][0] = 255 * (float(i)/255) ** (1.0 /gamma)
# 読込画像をガンマ変換
gamma_img = cv2.LUT(img,img2gamma)
# 画像を表示
cv2.imshow("img",img) # オリジナル画像
cv2.imshow("gamma",gamma_img) # ガンマ変換後の画像
cv2.waitKey(0)
cv2.destroyAllWindows()
暗くする場合(γ<1)
画像を暗くして出力したい場合は、gamma
を1より小さい値に設定します。
import cv2
import numpy as np
# 画像読込
img = cv2.imread("image_data.jpg")
"""
**********************************************************
【ガンマ補正の公式】
Y = 255(X/255)**(1/γ)
【γの設定方法】
・γ>1の場合:画像が明るくなる
・γ<1の場合:画像が暗くなる
**********************************************************
"""
# ガンマ変換用の数値準備
gamma = 0.3 # γ値を指定
img2gamma = np.zeros((256,1),dtype=np.uint8) # ガンマ変換初期値
# 公式適用
for i in range(256):
img2gamma[i][0] = 255 * (float(i)/255) ** (1.0 /gamma)
# 読込画像をガンマ変換
gamma_img = cv2.LUT(img,img2gamma)
# 画像を表示
cv2.imshow("img",img) # オリジナル画像
cv2.imshow("gamma",gamma_img) # ガンマ変換後の画像
cv2.waitKey(0)
cv2.destroyAllWindows()
【参考】Python・OpenCVを用いた画像処理
当サイトでは、PythonのOpenCVライブラリを用いた画像処理ノウハウを多数公開しています。
用途 | 【Python×OpenCV】記事名 |
---|---|
画像変換 | 画像のリサイズ・拡大・縮小 |
画像変換 | 画像の回転・反転・平行移動|アフィン変換 |
画像変換 | 画像の明るさ調節|ガンマ補正 |
画像変換 | グレースケール・HSV・L*a*b|色空間の変換 |
画像変換 | モノクロ(白黒)画像変換|2値化処理 |
画像変換 | ヒストグラムの描画・ヒストグラム均一化処理 |
画像変換 | 画像上にテキスト・図形(直線・長方形・円)を描画 |
画像変換 | 画像の透視変換・遠近法 |
画像変換 | 画像のノイズ除去・平滑化 |
画像変換 | 画像の畳み込み(空間フィルタリング) |
特徴抽出 | エッジの検出方法 |
画像認識や物体検出を学ぶ上でおすすめの教材はこちらをご参考ください。
画像処理・コンピュータビジョンの勉強におすすめ入門本・動画教材7選|OpenCV解析結果をディープラーニングに適用!
「画像処理・コンピュータビジョン分野に興味があり、画像処理のプログラミングスキルを習得したい」「OpenCVを用いた画像解析手法を学びたい」このような方向けにおすすめの教材を紹介します。
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら