画像の彩度を下げるための多くのオプションがあります。さらに、画像の彩度を下げることは単に白黒にすることではなく、一部のアプリケーションではそれらが同等であると考える場合があることに注意してください。
詳細については、この投稿を更新しました。
平均
これは、学生がグレースケールに変換するために最初にイメージできることです (少なくとも私が過去に最初に考えたことです!)。
level = (R + G + B) / 3
悪い結果を生むことはありません。実装は高速で簡単です。しかし、人間が光度を知覚する方法と一致しないという大きな欠点があります。
輝度
この 2 番目の方法 (ルミナンスはルミノシティ、ルマ、または強度と呼ばれることもあります) は、私たちの目が明るさを認識する方法のより良いモデルです。これは、目の錐体密度が色全体で均一ではないという事実に基づいています。私たちは緑を赤よりも強く、赤を青よりも強く知覚します。
すべての色を同じ強度で知覚するわけではないため、平均法は不正確です (少なくとも、自然に見える結果は得られません)。これを管理する方法は?単純に加重平均を使用します。
level = R * 0.3 + G * 0.59 + B * 0.11
ご想像のとおり、これらの値については多くの議論があります。元の ITU-R 勧告は、次の式を提案しました。
level = R * 0.2126 + G * 0.7152 + B * 0.0722
私が間違っていなければ、Photoshop は単純な彩度低下機能にこれを使用します (はい、最初のものの丸められていないバージョンです)。
level = R * 0.299 + G * 0.587 + B * 0.114
推奨事項が最近変更されたにもかかわらず、多くの違いに気付くとは思いません。この式の詳細については、ウィキペディアのこちらを参照してください。
詳細を知りたいですか?Charles Poynton のこの記事を読んでください:ガンマのリハビリテーションと、このトピックに関する彼のFAQ 。
脱飽和
各ピクセルはRGB カラー モデルで記述されていますが、彩度はHSL カラー モデルに属します (実際には、彩度を扱う場合は HSL モデルと HSV モデルの両方を使用できます)。これらのモデルの詳細については、リンクを参照してください。
画像の彩度を下げるには、次の手順を実行します。
- 各ピクセルを RGB から HSL に変換します (詳細が必要な場合は、この記事を参照してください)。
- 彩度を強制的にゼロにします(これが何をするべきかです
setSaturation(0)
)
- RGB に変換し直します (このブックマークを参照してください)。
このプロセスの大きな簡略化を紹介しましょう: RGB の最大値と RGB の最小値の間の中間点を見つけて色の彩度を下げることができます (明度、RGB 色空間の色は 3D の点であることを覚えていますか?スペース?)。彩度の低い画像を取得する (簡略化された) 式は次のとおりです。
level = (max(R, G, B) + min(R, G, B)) / 2
分解
局所最大分解と呼ばれることもある単純な形式の彩度低下は、単純に各 RGB トリプレットの最大値を選択します。
level = max(R, G, B);
ご想像のとおり、ローカル最大値またはローカル最小値の両方を使用できます (ローカルと書いたのは、各ピクセルの最小値/最大値を検索するためです)。
その他の方法
RGB トリプレットから 1 つのチャネル (たとえば、緑のチャネル) を保持し、その値をすべてのチャネルにコピーするだけで、非常に高速な方法で B&W 画像 (彩度の低い画像のように見えるもの) を取得できることを忘れないでください)。
Photoshop のチュートリアルでは、その機能を使用して画像の彩度を下げることはありませんが (彩度低下機能と調整パレット)、より良い結果を得るために、均一な色 (輝度セクションの値で計算) のレイヤーを追加し、そのレイヤーを元の画像 (コードをステップ実行するチュートリアルと再現を検索します)。