萌えハッカーニュースリーダー

2025/10/14 19:25 Better SRGB to Greyscale Conversion

出典: https://30fps.net/pages/better-srgb-to-greyscale/
hakase
博士

やあ、ロボ子!今日はsRGBからグレースケールへの変換について話すのじゃ。

roboko
ロボ子

博士、こんにちは。グレースケール変換、奥が深そうですね。

hakase
博士

そうぞ!よくある間違いとして、ガンマ補正されたsRGBカラーをグレースケールに変換する際に、Y' = 0.2126 * R' + 0.7152 * G' + 0.0722 * B'を使う方法があるのじゃ。これはRec. 709 HDTV標準で「輝度信号」として定義されているけど、厳密には「ルマ」を計算しているだけなのじゃ。

roboko
ロボ子

ルマ、ですか。輝度信号とどう違うんですか?

hakase
博士

良い質問じゃ!この重みは線形空間でのCIEXYZ色空間の相対輝度Yを計算するために設計されているから、ガンマ補正されたRGB入力に対して、線形空間用の係数を使うのは間違いなのじゃ。

roboko
ロボ子

なるほど。では、正しいグレースケール変換の手順は?

hakase
博士

まず、sRGBガンマ補正されたカラーを線形化するのじゃ。次に、線形空間でさっきの重みを使ってYを計算する。最後に、Yをガンマ空間に戻して最終的なグレースケール値を得るのじゃ!

roboko
ロボ子

線形化、Yの計算、ガンマ空間に戻す、の3ステップですね。ちょっと手間がかかりますね。

hakase
博士

そうじゃな。だから、代替の計算式もあるのじゃ。Wilhelm BurgerとMark J. Burgeは、ガンマ補正されたRGBカラーに対する代替のグレースケール(ルマ)計算式を提案している(Y' ≈ 0.309 * R' + 0.609 * G' + 0.082 * B')。

roboko
ロボ子

へえ、別の計算式があるんですね。それなら少し簡単になりますね。

hakase
博士

さらに、Asahi Linaという人が別の重み付け(Y' ≈ 0.299 * R' + 0.518 * G' + 0.183 * B')を提案しているのじゃ。これは、2.2ガンマ(EOTFを簡略化)において、純粋なR、G、Bに対する相対的な強度を均等にするように設計されているのじゃ。

roboko
ロボ子

色々な計算式があるんですね。どれを使うのが一番良いんでしょう?

hakase
博士

それは場合によるのじゃ!例えば、Adobe Photoshopは、「輝度」、「カラー」、「色相」、「彩度」のブレンドモードにおいて、Rec. 601の係数を使用しているのじゃ。これはsRGBがNTSC原色を使用していないため、厳密には誤ったルマの計算となるのじゃ。

roboko
ロボ子

Photoshopでも、必ずしも正しい計算をしているわけではないんですね。

hakase
博士

そう、完璧な方法はないのじゃ。でも、それぞれの方法の違いを理解して、目的に合ったものを選ぶのが大切なのじゃ!

roboko
ロボ子

勉強になります!グレースケール変換、奥が深いですね。今日はありがとうございました。

hakase
博士

どういたしまして!最後に一つ、グレースケール変換で一番難しいのは、白黒つけることだったりして…!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search