画像処理ライブラリであるOpenCVを使って画像の明るさを変える
1. 誰に向けた記事か
・pythonを勉強している人
・OpenCVに興味がある人
・画像処理に興味がある人
※初心者向けにpythonの勉強法とその手順を記事にしました。
2. はじめに
第一回では、OpenCVの基本事項として、インストール方法、OpenCVによる画像の読み込み、画像の白黒化、リサイズ(画像の縮小化)を行いました。
第二回では、OpenCVに標準で搭載されている関数を使って画像の二値化を行いました。
今回は、γ変換を用いて画像の明るさを調整したいと思います。
3. コードと実行結果と説明
3.1 コード
今回もこのコーヒーカップのグレー画像を使いたいと思います。
3.2 そもそもγ変換とは何か
γ変換とは以下の式を用いて輝度情報を変化させる処理のことです。
xが元画像の輝度値、yが変更後の輝度値です。
ここで前提として、今回のようなグレースケールの画像では、画素値0が黒、画素値255が白になります。
つまり画素値が小さいほど暗い画像に、画素値が大きいほど明るい画像になります。
この式を横軸x、縦軸yとしてグラフに表したのが下の図です。
γ=1の場合、例えば x=100(元の画像の画素値が100)の場合、変換後の画素値yも100です。つまり明るさは変わらないということです。
γ=1.5にすると、x=100の時はy=136になります。つまり変換後の画素値 yが255(白)に近づくので画像は明るくなります。
反対にγ=0.7にすると、x=100の時、y=67となります。つまり変換後の画素値 yが0(黒)に近づくので画像は暗くなります。
このようにγの値によって画像の明暗を変化させる処理をγ変換と言います。
3.3 コードの説明 :γ変換の部分
上記3.1で説明したγ変換の式(対応表)を書いてるのが以下のコードです。
256行1列の配列(値は全て0)を作り、for文で計算した値を一つ一つ代入しています。
3.4 コードの説明:画像処理部分
LUT関数を用いて行います。LUT()の引数は左から、変換したい画像、γ変換の対応表(3.2のコードで作った部分)になります。
LUT()変換を使うと、画像内の全ての画素に対して、指定したγ変換の対応表に沿って画素値を計算してくれます。
3.5 実行結果
γの値を変えると以下のようになります。
確認のためにヒストグラムを見てみましょう。
オレンジ色がオリジナルの、青色がγ=1.5で変換後のヒストグラムです。
γ変換後のヒストグラムが全体的に右に、すなわち明るい方向に移動しているのが分かります。
自分が使ってるお得情報の紹介
私はAmazon kindle unlimitedというサービスを1年以上利用しています。
これは月額980円で 和書12万冊以上の電子書籍を読めるサービスです。
ビジネス本、雑誌、漫画、技術本など様々な本を読むことができます。10冊まで端末にダウンロードできるのでネット環境がなくても(オフラインでも)見れます。
なおkindle unlimitedは最初の30日間無料のため、気軽に登録してみて、あまり読みたい本が無ければすぐに解約しても問題ありません。
それか30日内に気になる本を全て読破すれば実質タダです。
ぜひ気になった方はチェックしてみて下さい。
なおkindleにない本等を買う時はamazonギフト券(amazonで使えるポイント)を買い、ポイントで数冊まとめて買った方がお得です。
ギフト券(ポイント)は買ったら10年も有効で、ポイントが付きます。さらに本をまとめ買い(2冊以上同時に)買うと、ポイントがもらえます。
(https://www.amazon.co.jp/b?ie=UTF8&node=5431437051)
学生さんであればkindle unlimitedよりも年2450円(月210円程度)で映画見放題、音楽聞き放題、本読み放題の「prime student」がおすすめです。
4. 最後に
次回もOpenCVを使って簡単な画像処理を行ってみたいと思います。