概要
OpenCV で画像の明るさやコントラストを変更する方法について紹介します。
積和演算で明るさ、コントラストを変更する
画像の位置 の画素値を としたとき、次の式で明るさ、及びコントラストを変更できます。
は定数で、 はゲイン (gain) またはコントラスト (contrast)、 はバイアス (bias) または明るさ (brightness) といいます。
各パラメータの効果
明るさを で固定し、コントラスト を変化させた結果を確認します。 の値が大きいほど、画像の明暗の差が大きくなります。

コントラストを で固定し、明るさ のパラメータを変化させた結果を確認します。 の値が大きいほど、画像全体が明るくなります。

サンプルコード
cv2.LUT()
で の対応表を作成し、階調変換を行います。

In [1]:
In [2]:

ipywidgets を使用したパラメータ調整
Jupyter Notebook で利用できる ipywidgets を使ってパラメータを調整するためのコードを記載します。

In [3]:
ガンマ補正
画像の位置 の画素値を としたとき、次の式で変換する処理をガンマ補正 (gamma correction) といいます。
ただし、 は定数です。 のとき、 となり、入力と出力が同じになります。

パラメータ を変化させた結果を確認します。

サンプルコード
画素値の変換には、cv2.LUT() を使います。ガンマ補正の計算を行ったあと、値を画素値として有効な値にするため、 の範囲でクリップを行い、型を numpy.uint8 にキャストします。
In [4]:
ipywidgets を使用したパラメータ調整
Jupyter Notebook で利用できる ipywidgets を使ってパラメータを調整するためのコードを記載します。

In [5]:
コメント
コメント一覧 (0件)
各パラメータの効果のところ、
明るさを 1.0 で固定、コントラストを 0.0 で固定、はそれぞれ
明るさを 0.0 で固定、コントラストを 1.0 で固定、でしょうか?
コメントありがとうございます。
ご指摘いただいた通り、説明が逆になっていましたので修正しました。