この記事はフリューAdvent Calendar 2024の18日目の記事となります。
はじめに
みなさん、こんにちは。
プリントシール機(通称:プリ)の画像処理を担当している中嶋です。
プリの画像処理では、数々の補正処理や変換処理を開発してプリ画像の加工に活用しています。
その中でも、彩度にまつわる処理の開発について、内容の一部をご紹介します。
彩度とは? -画像を鮮やかに見せる-
まず、色を表す方法として「色相」/「彩度」/「明るさ」の3要素を使う方法があります。
今回はそのうち「彩度」を増加させる処理について検討していきます。
プリ画像では、人物写真の発色の良さが重要です。
彩度を高くすることで、画像を鮮やかに見せる効果が期待できます。
プリ画像に対して、一般的な彩度の処理をかけたものが以下になります。
見たところ、確かに画像は鮮やかになりました。
ただし、いくつか気になるところもあります。
- 白に近い色について、色の変化が乏しい
- リボンのような彩度が高い(原色に近い)色の彩度が高くなりすぎている
- 肌の色の赤みが強くなり、印象が変わって見える
これらを改善するには、どうするのがよいでしょうか。
一つずつ順を追って説明していきます。
彩度の表し方 -HSLとHSV-
最初に、白に近い色についての対策を考えます。
先ほど、色の表し方である「色相」/「彩度」/「明るさ」について触れましたが、
実はこの方式には大きく「HSL系」と「HSV系」の2種類があります。
HSL系では、明るさを表すのに「輝度(Lightness/Luminance)」を用い、
HSV系では、明るさを表すのに「明度(Value)」を用います。
※図は HSL色空間とHSV色空間 - Wikipedia より引用
言葉だけでは一見して違いがわかりにくいですが、
明るい領域での色の動きに特徴があり、
HSL系ではL(輝度)が高い領域では、S(彩度)を上げたとしてもすべての色が白に近くなるのに対して、
HSV系ではV(明度)が最大の場所でも、S(彩度)を上げていくと鮮やかな色に推移しています。
最初に挙げた一般的な彩度の処理の画像は、実はHSL系を用いたものでした。
プリ画像のように、白に近い色の出現頻度が多い画像を対象にする場合には、
HSV系の処理を用いることで、これらの場合でも色に変化を出すことができます。
彩度を上げすぎない処理
続いて、元の彩度が高い色領域について考えてみます。
HSV系で処理を行う場合、彩度が最大になるとほぼ原色と等しくなってしまいます。
もともと彩度が高い色については、彩度が最大値で飽和しないように補正することが必要になります。
次のグラフをご覧ください。
元の彩度が低い部分では、彩度が高くなるにつれて上がり幅を増やし、
中間領域で変化量が最大になるようにします。
これに対して、元の彩度が高い領域では、最大値に近づくにつれて上げ幅に制約を持たせ、
徐々に緩やかに変化させて飽和しないようにしています。
このように、彩度が高い領域については、彩度を上げすぎないことで自然な仕上がりにすることができます。
“赤色の研究“
最後に、肌色の赤みについて見ていきましょう。
このプリ画像の肌の色は、だいたい赤~黄色の色相に分布しています。
彩度を高めていくと、これらの色が原色に近づいていくため、肌の印象が変わって見えるのです。
対策としては、これらの色相については彩度の変化量を抑えていくことが考えられます。
赤色(R)の色相について、それ以外の色相(緑色=G)と比較して、
特に中間領域での変化量を抑えるような計算式を導入したものが上のグラフになります。
こうして、特定の色相に対して計算式を変化させることで、
肌などの印象を変えたくない領域での色変化を抑えながらも、
他の狙った部分での色変化の効果をより高められるようになりました。
結果の比較
これらの計算を導入した彩度の処理の結果は、次のようになります。
最初に挙げた一般的な彩度の処理と比較しても、
肌色の印象が変わることなく、元の彩度が高い部分のキツさが和らぎ、
自然な仕上がりになっていることが分かるのではないでしょうか。
まとめ
今回は、彩度の変化処理を題材に、写りをより良くするための色調変化の経過を見ていきました。
- HSV系で処理することで、白に近い色でも変化を出すことができる
- 彩度を飽和しないようにすることで、色がキツくなる印象を和らげる
- 肌色の印象が変わりすぎないようにするために、赤色は変化を抑えるとよい
これらを組み合わせることで、プリ画像の写りに適合した、
自然に変化する彩度の処理を実現することができました。
プリントシール機の画像処理開発では、こうした技術を活かすことで
よりよい撮影体験を提供できるよう、日々改善に努めています。