階調変換関数は、入力画像の画素値を、どの出力画素値へ変換するかを決める関数である。画像の明るさ、コントラスト、濃淡の反転、階調数の削減などは、画素値を別の値に写す処理として整理できる。トーンカーブは、この関係をグラフとして表したものである。
ディジタル画像では、各画素が明るさや色の値を持つ。階調変換では、周囲の画素を見ずに、基本的には入力画素値だけをもとに出力画素値を決める。たとえば、暗い値をより明るくする、明るい値を抑える、入力値を反転する、一定範囲を同じ値に丸めるといった処理がある。入力と出力の対応を関数として表したものが階調変換関数であり、処理の性質はその形で決まる。直線なら単純な明るさ調整に近く、曲線なら暗部や明部を部分的に強調できる。
CG制作では、レンダリング後の画像補正やテクスチャの調整に階調変換の考え方が使われる。暗部を見やすくする、白飛びを抑える、コントラストを強めるなどの操作は、画素値の対応関係を変えて見た目を調整している。
ゲームでは、ポストエフェクトや画面全体の色調整で階調変換が使われる。夜の場面、ダメージ演出、回想シーン、特殊な視覚効果などでは、フレームバッファ上の画素値を変換して表示結果を作る。
{:cg:figures:chapter05:fig_5_6_tone_curve.png?600|図5.6 トーンカーブ}
実装では、入力画素値を添字として変換表を参照する方法が使いやすい。0〜255の入力に対して、対応する出力値をあらかじめ配列に入れておけば、各画素を高速に変換できる。
階調変換関数は、入力画素値と出力画素値の対応を表す関数である。空間フィルタリングのように周辺画素を見る処理とは区別する。トーンカーブ、ガンマ補正、ネガ・ポジ反転、ポスタリゼーションなどと関連づけて覚える。