【初心者向け!】画像における色の概念と補正方法の考察
本記事は音MAD Advent calenderに参加しています.多くの良記事がまとめられているので合わせてご覧ください.画像の勉強をしようと思ってもどこから勉強すればわからないと思います.なので今回はおいしいところをかいつまんで,すっきりしましょう!
以下,お品書きです!
前書き
皆様,はじめまして.普段Z会MADばかり投稿している霜(frost)といいます(読み方は"しも"または"ふろすと"のどちらでも大丈夫です).本記事では以下の人を対象として話をします.
対象となる人
- 画像がそもそも何なのかわからない
- 色調補正エフェクトを使ったことがない
- 結局,色調補正が何をやっているかわからない
- 編集すると何か色合いが悪い
- そもそも素材にノイズが乗っていて使いづらい
色とは?
色と画像
映像は色情報の塊です.いい映像を作るためには色のことをよく知ることが大切!ということで「色って何?」,「どうすれば見栄えが良くなる?」ということに関して触れていきます.
まず色とは何でしょうか.世の中には様々な色があります.浅葱色,臙脂色など日本独自の微妙な色合いもあります.
コンピュータがこの微妙な色合いを表現する際に用いているのは,なんとわずか三色です.この三色,赤(R),緑(G),青(B)の組み合わせだけでコンピュータは様々な色を表現することができるのです.以下ではこの組み合わせをRGBと呼びます.この三色の値は0~255の256値で表されます.つまりコンピュータが表現できる色の組み合わせは256×256×256通りです.これだけの色があれば表現できない色はめったにないかもしれません.
では色データは画像にどのように使われているのでしょうか.実際に画像を拡大してみるとマス目があります.
画像は画素と呼ばれるマスが横×縦の二方向に配置されています.この画素の数が解像度と呼ばれています.よく聞く1280×720は,横に1280画素,縦に720画素あります,という意味になります.そして画素のマス一つずつに赤,緑,青の三情報が保存されているのです.
色のパラメータ
ところでAviUtlを開いて色調補正エフェクトをかけてみると明るさ,コントラスト,輝度,色相,彩度といったパラメータがあります.特に明るさと輝度って何が違うのだ,とわけわからなくなっているのは私だけではないと思いたいです.そこで色に関するステータス,パラメータを少し紹介したいと思います.
色相,彩度,明度
コンピュータでの色の表し方はRGBの三色ですという話をしました.でも製作するうえで「今の色よりすこし明るくしたいな」というように調整したい場合にRGB値だと,どこの値を変えればうまくいくのか分かりにくいです.そこで色をRGBの組み合わせではなく色相(Hue),彩度(Saturation),明度(Value)の組み合わせで考えようというアプローチがあります.この組み合わせを以下ではHSVと呼びます.
色相は「どんな色?」ということを決める値です.美術の教科書でもよく輪が載っています.
彩度は「どれくらい鮮やか?」ということを決める値です.彩度を0にするとモノクロ映像の出来上がりです.逆に彩度を最大にすると目が痛くなります.
明度は「どれくらい明るい?」ということを決めます.0にすると真っ黒,最大にすると真っ白になります.
このようにHSVではRGBよりも直観的に色の変化を予想することができます.
輝度
なるほど,明度は明るさを決めるのかと思ったとき,輝度は何を表しているのか気になります.輝度は「どれくらい明るい?」ということを決めます.しかし,重要なのは輝度が人の目から見たときの影響を考えているということです.例えば以下のように,色相環を並べます.
皆さんはこの色の内どの色が一番「暗い色」だと思いますか?直観的には青色が一番暗く見えるのではないでしょうか.しかし,コンピュータからしたらこれらの色の明るさはすべて同じになるのです.
これでは直観的な色の補正を行うのに少し邪魔が入ってしまいます.そのため輝度というように人間の感性を参考にした明るさの基準が存在しているのです.具体的に輝度は「緑が一番明るく」「青が一番暗い」というような原則に基づいて計算されます.
ただし,実際に編集する際は明度でも輝度でもあまり変わらないと思いますのでお好きなようにしてください.
コントラスト
画像を見ていると,なんだかくすんでいるな…と感じることがあります.くすんでいる,というものは色にメリハリがないことが原因の一つです.そこでコントラストをあげることで以下のように少し見栄えが良くなる場合があります.
コントラストは色のばらつきを示しています.AviUtlでコントラストをあげると「明るい部分はなお明るく」「暗い部分はなお暗く」なると思います.このように明るい部分と暗い部分の割合をコントラストと呼んでいます.コントラストが高い,ということは明るい部分と暗い部分のメリハリがはっきりしている,ということなのです.
色の編集
いろいろ前置きが長くなりましたが,やっと実践編です.ここからはAviUtlを用いて色調補正をやっていきます.
トーンカーブ
いきなり本命の話です.この概念がわかれば後の話も理解が簡単になると思います.トーンカーブは色の変換パターンを設定するエフェクトです.AviUtlでは外部スクリプトで実装されているのでぜひ利用してください.今回は説明のためにAdobe Photoshopのトーンカーブを利用します.まずトーンカーブを開くと,いきなりグラフが現れます.
このグラフの縦軸および横軸の値域は0~255です.0~255というと,前述したRGBのことを思い出します.実は横軸は入力(つまりトーンカーブ適用前),縦軸は出力(つまりトーンカーブ適用後)を表しているのです.デフォルトですと,斜めに直線が引かれています.
これは,例えば矢印の部分を見てみましょう.横軸の中間の部分,つまり輝度値が128の部分に注目します.この横軸の位置から垂直に上がっていくと,斜め線にぶつかります.ここから左にまっすぐ進んでいくと出力の軸にぶつかります.この図は「128の輝度値を128に変化させます」という意味になります.つまり,なにも変化が起きていないということです.
これを以下のように操作すると画像全体が明るくなりました.膨らんだ部分の輝度値の画素に相当するところが出力の輝度値に変化するということを示しているのです.この図は「128の輝度値を190に変化させます」という意味になります.
これを利用すると,特定の輝度値を任意の値に変化させることが可能になります.例えば暗くなっていて見づらいところを明るくしたいという画像があったとします.
画像の暗い部分はトーンカーブ適用前における横軸の原点近くを見てあげればよいことになります.この部分を上に膨らませてあげると…
以上の様に暗い部分だけを明るくすることができました.
トーンカーブは万能のエフェクトです.前述したコントラスト,明るさの操作もトーンカーブで行うことができます.大は小を兼ねる,と言いますが,まさにトーンカーブは色調補正における一番根本の操作なのです.
しかしながらトーンカーブは使いこなす際にいくつか注意する点があります.まず一つにトーンカーブでは左下から右上に線が引かれますが,左上から右下への線をひいてはいけません.
なぜなら,左上から右下への線は入力と出力の大小関係が逆転してしまうからです.つまり明るいところが暗くなり,暗いところが明るくなってしまうため明らかに不自然な画像ができてしまいます.
また,急激なカーブを作ることもおすすめしません.急激なカーブは色の変化を目立たせすぎるので不自然な画像になりがちです.
以上のことに気を付けてトーンカーブを使用することができれば,表現の幅に広がりが出ると思います.
色調補正
AviUtlの標準エフェクトの色調補正について説明します.前述したように,色調補正では「明るさ」,「コントラスト」,「輝度」,「色相」,「明度」があります.これについてトーンカーブの操作と比べながら見ていきましょう.
明るさ
「明るさ」は明るい部分から白くなっていく項目になっています.AviUtlで明るさの項目を上げるということは,つまり…
以上のように白い部分からまぶしくなっていきます.
コントラスト
コントラストは,「明るい部分はより明るく」「暗い部分はより暗く」でした.これはトーンカーブで表すと以下になります.
色相,彩度,明度
これらはトーンカーブとは直接関係ないので調節してみてください!
その他スクリプト
トーンカーブは使うのにとても面倒な部分があります.そこで外部スクリプトで楽をしようというお話です.私が使用している外部スクリプトをいくつか紹介します.
トライトーン
トライトーンは「色合いを一種だけにしたい」というときに使うエフェクトです.外部スクリプトはこちらです.色は本来0~255の256値を持っています.例えばこの画像を…青みがかった画像にしたいとしましょう.この時トライトーンを用いると簡単に画像を単色風味にできます.
原理としては単純です.まず画像をモノクロにします.その後,グレーに当たる部分をトライトーンで指定した色に置き換えることで上記のような画像ができるのです.
コロラマ
以下の画像を見てください.
これはコロラマを使って以下の画像を加工したものになります.
コロラマはモノクロにした0~255の輝度値をグラデーションで変化させるエフェクトです.スクリプトリンクはこちらです.トライトーンでは変化させることができる色は一つだけでしたがコロラマでは何種類でも変化させることができます.これを使うことで炎の着色やグロー後の更なる色付けなどができると思います.
ポスタリゼーション
以下の画像は動画でたまに見る表現です.この表現を出すエフェクトをポスタリゼーションと呼んでいます.
ポスタリゼーションのスクリプトリンクはこちらです.ポスタリゼーションは色の組み合わせを減らすエフェクトです.通常では色の組み合わせは256×256×256です.これをあえて何分の一かに減らすことで特徴的な表現ができるわけです(画像では8×8×8に落としてみました).トーンカーブで同様の操作をする場合以下になります.(説明のために4×4×4に落とす操作にしています)
ノイズ
私は制作で実写素材をよく使います.その都度,実写素材にざらざらとしたノイズが載っているのが目に入って気になります.しかしノイズはどうしても入ってしまうものなので仕方がないのです.だからノイズについて知ることでうまく付き合っていくことにしましょう.
ノイズって?
ノイズは以下のような感じの画像にのっているもののことです(AviUtlのエフェクトのことを指しているわけではありません).
特に彩度をあげたりするとノイズが目立つのです…ノイズは撮影機材の影響やら圧縮の影響やらがあるので完全に避けるのは絶対に不可能です.
ノイズ除去
ノイズの除去にはいくつか方法があります.その中でも最も簡単なものを紹介します.それは「ぼかし」をかけることです.なぜぼかし?と思います.これはノイズの特性が大きくかかわっています.ノイズはもともと,きれいな画像にズレが載ってしまうことで発生する(と仮定する)ものです.
そのズレは元の画素の色よりマイナスのノイズが乗ることで暗くなったり,プラスノイズが乗ることで明るくなったりと様々です.ノイズは一画素ずつにランダムにばらばらな値が乗っかることになります.一つの画素と隣の画素でノイズの乗り方には関係がないと思われます.つまり様々な画素のノイズの平均をとると,ある画素のマイナスのノイズとある画素のプラスのノイズが打ち消しあって,いい感じの画像になるのでは?という考えが浮かびます.「ぼかし」は,まさにある画素とその周囲の画素の色の平均をとる操作です.
これによってノイズ同士の影響をノイズ自身で打ち消すことができるというわけなのです.ただ普通にぼかしをかけるとノイズは減るけども,そもそもの映像自体が見えなくなるでしょ…と思います.そこでノイズだけをぼかすバイラテラルフィルタという「ぼかし」の亜種がございますので,それを使ってノイズを取り除いて下さい.
ノイズが比較的減ったのが確認できると思います.ただ,ぼかし操作なのでやりすぎると画像自体がぼけてしまうのでホドホドに…スクリプトリンクはこちらです.
まとめ
ここまで,仕上げ方面の話をさせていただきました.色調補正,特に素材に適用するコントラストや彩度の操作は少しやるだけでかなり違ったものになりますのでぜひ試してみてください.色調補正は,いわゆる「詰め」の操作になります.確かにやらなくても動画はできます,投稿できます.しかしながら,やれば一段階上の品質になること間違いなしです!ぜひ,試してみてください!