【画像処理】線形濃度変換の原理・計算式

画像処理における線形濃度変換の原理や計算方法の仕組みについて解説します。

線形濃度変換

本ページの内容は以下動画で解説しています。

線形濃度変換とは、横軸を入力画像の画素値、縦軸を出力画像の画素値とする線形マッピングです。
GIMPやPhotoshopなどの画像加工ソフトに濃度を変更するツールとして組み込まれています。
線形濃度変換は、画像のコントラストを調整し、画像を人が視認しやすいように変換することができます。
今回は、線形濃度変換の代表例をいくつか紹介します。

変換① 画素値をa倍

入力画像の画素値を$I(x, y)$とすると、$a$倍した出力画像の画素値$I'(x, y)$は次式で計算できます。
$$ I'(x, y)=aI(x, y) $$

– 説明
a>1 より明るくなり、コントラストも高くなる
a=1 変化なし
a<1 より暗くなり、コントラストも低くなる

■グラフ描画用プログラム(Python)

変換② コントラストを全体的に明るく・暗く

コントラストを全体的に「明るく」or「暗く」することを考えます。

入力画像の画素値を$I(x, y)$とすると、出力画像の画素値$I'(x, y)$は次式で計算できます。
$$ I'(x, y)= \begin{cases} I(x, y)+k \hspace{30px} (I(x, y)+k<255) \\ 255 \hspace{30px} (I(x, y)+k>256) \\ 0 \hspace{30px} (I(x, y)-k<0) \end{cases} $$

パラメータ 説明
$k>0$ 全体的に明るくなる
$k<0$ 全体的に暗くなる

※$k$の絶対値が大きいほど効果も大きくなります

■グラフ描画用プログラム(Python)

変換③ コントラストの強弱

入力画像の画素値を$I(x, y)$とすると、コントラストの強弱を調整した出力画像の画素値$I'(x, y)$は次式で計算できます。
$$ I'(x, y)= \begin{cases} 0 \hspace{30px} (T<0) \\ a(I(x, y)-127)+127 \hspace{30px} (0\le T\le255) \\ 255 \hspace{30px} (T>255) \end{cases} $$

– 説明
$a>1$ コントラストを強める
$a<1$ コントラストを弱める

■グラフ描画用プログラム(Python)

変換④ ヒストグラムの拡張(伸張)

ヒストグラムの拡張(伸張)とは、画素値の分布が特定の範囲に偏っている場合に、広い範囲に拡張(伸長)する濃度変換です。

画素値の分布を$Z_{min}$~$Z_{max}$の範囲に引き伸ばすとします。
このとき、入力画像の画素値を$I(x, y)$とすると、出力画像の画素値$I'(x, y)$は次式で計算できます。
$$ I'(x, y)=I_{max}\frac{I(x, y) - Z_{min}}{Z_{max} - Z_{min}} $$

ここで、$I_{max}$は入力画像の画素値の最大値です。

関連ページ

PythonとOpenCVで画像処理プログラミング超入門
Python版OpenCVで画像処理プログラミングを行う方法を入門者向けにソースコード付きで解説するページです。
【画像処理超入門】アルゴリズムの仕組みと実装方法を簡単に解説
画像処理超アルゴリズムの仕組みとプログラミングによる実装方法を簡単に解説します。
記事の監修者
西住技研

在学中はシステム制御理論や画像処理、機械学習を専攻分野として研究していました。就職後は、プログラミング(Python)を活用したデータ分析や作業自動化に取り組み、現在に至ります。そこで得たノウハウをブログで発信しています。
⇓YoutubeやX(旧Twitter)でも情報発信中です

西住技研をフォローする
画像処理

コメント