これが古い投稿であることは承知していますが、次の人が私よりも良い助けになるように、機会があればできる限りこれらのことに答えるのが好きです....
異なる環境で同じブレンディングを実装するという私自身の十字軍の中で、多くの提案で提供されている素朴な数学の問題に遭遇しました。他の画像操作に LCH スペースを使用していない限り、このためだけに変換コストを支払う価値はないかもしれません。あなたが正しい; 変換には多くの計算が必要であり、変換してすぐに RGB に戻す場合は、色域外のポイントを適切に処理する必要があります。私の知る限り、これは RGB に戻す前にデータの切り捨てを行うことを意味します。負のピクセル値と超最大ピクセル値の切り捨て変換により、画像の黒と白の領域が洗い流されます。問題は、変換前に切り捨てるということは、特定の H と L の最大クロマを計算しようとすることを意味することです。事前に計算して LUT を使用することはできますが、それほど高速ではありません。
優れた (HSL よりも優れた) 色/明るさの分離を提供し、合理的に同様に動作する (重要でない目的で) カラー モデルが必要な場合は、代わりに YPbPr を使用することをお勧めします。これは単一のアフィン変換であるため、はるかに高速であり、RGB 色域の面が平面のままであるため、境界計算は単純です。境界計算は単なる線と平面の交差計算です (さらに速度が必要な場合は、これらを LUT に組み込むこともできます。繰り返しますが、LAB や LUV ブレンドほど良くはありません。前景が非常に飽和している場合は、次のように気付くことがあります。速度とシンプルさが重要な場合は、検討する価値があるかもしれません。
例として調査する価値があるのは、HuSL (www.husl-colors.org) です。HuSL は CIELUV のバージョンであり、彩度空間が前述の RGB 色域の境界に正規化されています。そこで利用可能な WMaxima ワークシートは、切り捨ての最大彩度を計算する方法についていくつかのアイデアを提供するはずです。色のブレンドに HuSL を使用すると HSL よりもうまく機能しますが、正規化によって彩度 (S) の表現が歪むため、LUV の均一性 (これらすべての分数べき乗を行った理由) が失われます。ここでの実装も CIELAB ではなく CIELUV に基づいていますが、画像編集を行っていない限り、その結果はおそらくあまり重要ではありません。
同様に、例が役立つ場合、これらのブレンドを提供する Mathworks FEX の画像ブレンド機能と、HuSL およびバインドされた LCHab/uv 変換ツール (および LCHab と LCHuv の最大クロマ LUT) があります。 matlab スクリプトですが、数学的な概念は同じです。
彩度の境界計算をまったく処理したくない場合は、次のようにすることを検討してください。
- 画像から輝度を抽出します。必要な輝度の定義を使用して、加重平均を実行するだけです。[0.299 0.587 0.114]*[RGB]' は Rec.601 iirc です。
- HSL で HS チャネル スワップを実行します (GIMP はHSI ではなく HSV ではなくHSL を使用します)。RGB に戻す
- お気に入りの輝度-彩度モデル (YPbPr など) に変換し、Y' を元の輝度に置き換えます。RGB に変換します。
これは基本的に、イメージ エディターでレイヤーを使用して一般的な輝度を維持するためのプログラムによるアプローチです。これにより、驚くほど良い結果が得られ、一般的な変換ツールが使用されます。
最後に、HSV、HSI、HSL、CIELAB (変換前後の切り捨てあり)、および HSL+Y 法など、さまざまなカラー モデルを使用したブレンドの例を使用して、これについて独自に説明します。また、あなたが私と同じくらい太っている場合、投影されたRGB空間のジオメトリを視覚化すると、LCHのポイント間で彩度/明度情報を交換するときに何が起こるかをよりよく理解するのに役立つ場合があります(および管理の必要性OOGカラーポイント)
詳細情報へのリンクを投稿したいと思いますが、私のような人がそれを行うことは許可されていないと思います.
編集: 実は、私は何かに気づきました。速度と均一性が重要で、わずかに制限されたクロマ範囲が許容される場合 (おそらく UI グラフィックスなど)、私の YPbPr 推奨事項への追加が適切である可能性があります。YPbPr の RGB 色域の範囲を考えてみましょう: 中立軸の周りの角にある歪んだ立方体です。このボリュームの最大の回転対称サブセットは双円錐です。立方体の面ではなく、この双錐体に切り捨てる方が、立方体の面との交点を計算するよりもはるかに高速です。ブレンドはより均一になりますが、最終的には最大彩度が制限されます。同じ原理で動作する HuSL メソッド (HuSLp) がありますが、YPbPr でこれを行うと、HuSLp よりも多くの RGB 空間にアクセスできます。そこには' これは、実際には私のブログでこれを行うことに関する投稿です (LAB ブレンディングと比較した例を示しています)。円錐交点の計算の速さは、今まで頭に浮かびませんでした。