チュートリアル7

画像レベル調整


このチュートリアルでは、Jitterマトリクスの画像データに対して、輝度(ブライトネス)、コントラスト、彩度を調整する方法についてご説明します。さらに、色相の概念、および色相のローテーションについても見ていきます。

・Jitter Tutorialフォルダの07jImageadjustment.patというチュートリアルパッチを開いて下さい。

このチュートリアルパッチには、Jitterマトリクスに格納された画像の輝度、コントラスト、彩度をコントロールすることができるjit.brcosa、画像の色相のローテーションを行うことができるjit.hue、という2つの新しいオブジェクトがあります。


画像をオープンして、見て下さい。


・read clolrwheel.pctと書かれているメッセージボックスをクリックしてcolorwheel.pctファイルをオープンして下さい。metroオブジェクトをスタートさせるトグルをクリックしてムービーを見て下さい。

パッチの下部にあるjit.pwindowにカラーホイール(色環)が現れるのがわかると思います。


幸運のカラーホイール(色環)


jit.pwindowオブジェクトは、新しい2つのオブジェクトを通過した画像を表示します。まずは jit.brcosaについて、次にjit.hueについてご説明しましょう。


輝度、コントラスト、彩度

jit.brcosaオブジェクトは4プレーン・char型のJitterマトリクスを受け取り、ARGB画像データとして取り扱います。このオブジェクトによって、処理されるマトリクスの輝度、コントラスト、彩度を変えることができます。この3つのアトリビュートは、当然ながらbrightness、contrast、saturationと呼ばれます。3つのアトリビュートの初期値は1.0で、これは、マトリクスに何の変更も与えず通過させる結果になります。


jit.brcosaオブジェクトの使用

jit.brcosaオブジェクトのアトリビュートを変更して下さい。そして、出力されるマトリクスがどのように変化するか観察してみて下さい。

画像の「輝度」(ブライトネス)は、リファレンス色(通常は黒)と比較した場合の、映像の全体的な明るさ、または暗さのことを指します。brightnessアトリビュートの変更は、その値をマトリクスの値に掛けることと同じです。brightnessの値が0の場合、画像は黒くなります。1.0を超える値では、0でないセルの値を、白(255)でクリップ(制限)されるまで、だんだんと増加させていきます。値0.5では
、画像はかなり暗くなります。これは本来の0-255の範囲を0-127に減らします。いくつかのブライトネスの値の例を、下にカラーホイールで示してあります。


brightness の値をそれぞれ、0.5、1.5、10とした場合のカラーホイール


このように変化させた場合、セルの値は0と255でクリップされる点に注意して下さい。このためbrightnessの値が10になっている右側の画像の場合、ほとんどの領域が白くなり、もともとのマトリクスの1つ以上のカラープレーン(RGB、またはプレーン1、2、3)が0であった領域だけが色で示されています。

画像のコントラストは、画像の色が、もとの画像全体の平均明度(下記を参照)から離れている量で表わされます。jit.brcosaのcontrastアトリビュートが1.0以上に上げられると、マトリクス全体の平均明度より大きな値を持つセルはより明るく(値が大きく)なり、平均より小さい値を持つセルはより暗く(値が小さく)なります。結果として、明るい値はより明るく、暗い値はより暗くなるように、マトリクス映像の強弱が拡張されます。contrastを1.0より小さく設定すると、contrastの値が0になるまでこの逆の処理を行い、暗い色は明るく、明るい色は暗くなります。値0では画像全体の平均の明度をもつグレーだけが残ります。負の値では、全体的なコントラストは同じ量で、画像の色が反転されます。

技術的な詳細:マトリクスの平均明度は、各プレーン別にマトリクスの全てのセルの値の平均を取ることで計算されます(このようにして、アルファ、赤、緑、青の個々の平均値がわかります)。そして、3つの可視プレーンは次の式のような係数を掛けられます。

L = 0.299*赤 + 0.587*緑 + 0.114*青

値Lがマトリクス全体の平均明度になります。そして、jit.brcosaはこの値を使って、コントラスト調整を行う際に拡張の基準となる閾値を決定します。

contrastの設定例をいくつか示します。


contrastの設定を、0.3、2、-1、100とした場合のカラーホイール


最初の例は、contrastを大幅に減少させた(セルの値がすべてマトリクスの平均明度に近づいている)場合のカラーホイールを示しています。第2の例は、contrastが強められた場合です。カラーホイールの中央部の明るい影のような部分が白に近づき始めている様子に注目して下さい。第3の例はcontrastを負の値に設定した例です。色はもとの画像に対して反転させられていますが、マトリクスの平均明度はもとの画像と同じです。最後の例は、contrastを非常に大きな値にまで強めた場合を示しています。この例では、セルの値は0または255に分極化されています。

画像の「彩度」は、セルの中の最も強い色と、最も弱い色との比を反映しています。saturationの値が1.0より小さくなると、セルの全ての色の値は平均化し、グレースケールに近づくように鮮やかさが減退します。値が1.0より大きくなると、お互いの色を遠ざけるように押しやり、セルの最も強い色を強調します。コントラストと同様、saturationの負の値は色を反転させますが、明るさの関係はもとの画像と同じままに保たれます。


saturationの値を0.2、2、-1、にした場合のカラーホイール

最初の画像は彩度を下げられたもので、マトリクスの個々のセルの値がそのセルの輝度の値に近づけられています。第2の画像は彩度が過度に高くされたもので、各々の色がもとの画像にくらべてより明るく(または暗く)なっています。第3の例では、カラーホイールのもともとの明度は保たれていますが、色は反転しています。


色相...

jit.hueオブジェクトによって、入力された画像の色相を回転させることができます。hue_angleアトリビュートの設定によって、入力マトリクスの色相は指定した度数だけ回転します。


hue_angleアトリビュートは、入力マトリクスの色相を回転させます。

マトリクス・セルの色相はその基準の色と考えることができます。(例えばマゼンタ)。画像の色相は虹(あるいはこれまで使って来たカラーホイール)のような形で視覚化されますが、これは、赤から始まって緑、青と進み赤に戻ってきます。この値(0〜360度で指定されます)は、画像の彩度や明度と一緒に用いて、特定の色を記述するために使うことができます。同様な方法は数多くあり、RGBのシリーズを指定して特定の色を記述する方法もこれに含まれます。画像の色相を正方向に回転されると、カラースペクトルの赤の部分は緑に、緑の部分は青に、青の部分は赤にシフトされます。負の回転では赤を青に...というシフトになります。色相の回転を120度単位で進めると、画像のカラープレーンを、画像のもとの色相から正確に1つ(または2つ)移動することになります。

技術的な詳細:私たちの眼は、網膜にある錐体と呼ばれる特殊なレセプタ(光受容細胞)を通して色を知覚します。(もう1つ、低レベルの光に反応するレセプタも存在しますが、これは色の識別ができません。このレセプタは桿体(かんたい)と呼ばれます。)私たちの眼にある錐体は反応する光の波長によって分けられ、3つのカテゴリに分類されます。L錐体(赤錐体)は長い波長の光(赤)に、M錐体(緑錐体)は中間の波長の光(緑)に、S錐体(青錐体)は短い波長の光(青)にそれぞれ反応します。私たちの聴覚システムで、人間の声音の範囲にある周波数帯に知覚の重点が置かれているのと同様に、私たちの眼にある錐体の分布では、環境の知覚に最も重要な中間の波長に重点が置かれています。その結果、私たちの眼には他の2色に対するレセプタのおよそ2倍にあたる緑レセプタが存在します。このことは、なぜ輝度の式(前述)で知覚される明るさのほとんど60%を画像の緑に割り当てたのかについての説明になります。カメラのテクノロジは私たちの眼の生理をエミュレートするために発達してきたので、カメラ(そしてフィルム)もまた、他の色の光より緑の光に対してより敏感になっています。

・トグルボックスをクリックして、カラーホイールのhue_angleが自動的に変化するようにして下さい。hue_angleが360度に達すると、もとのマトリクス画像がリストアされる点に注意して下さい。


様々な色相ローテーションによるカラーホイール(0〜360度)


まとめ

jit.brcosajit.hueオブジェクトによって、入力マトリクスの輝度(ブライトネス)、コントラスト、彩度、色相を加工することができます。2つのオブジェクトを利用して動的なレベル調整(例えば自動露出)、カラー補正、特有な色相の変位といったようなタスクを実行することができます。