3

複雑な問題がありますが、この小さな問題で解決できます。ピクセルごとに機能するカラライザーを作成したいと思います。

写真の基本色を定義しています(写真には、この色のピクセルと、この色に近い他の多くのピクセルがあります):

Hex: #188DD9
HSL: 204° 80% 47%
RGB: 24 141 217

ターゲットのベースカラーを知っています:

Hex: #23752E
HSL: 128° 54% 30%
RGB: 35 117 46

というわけで、画像に色を付けたいと思います。

この 2 つの HSL 値の相関関係が見つかれば、画像をピクセルごとに色付けできると思います。

現在、(ターゲット色相 - ベース色相) = -76 でベース色の色相を移動すると、色相は問題ないことがわかりました。

この問題を解決するために、彩度と明度の関係がどこにあるのか教えていただけますか?

4

1 に答える 1

2

最終的に使用するマッピングが何であれ、黒を黒に、白を白に、グレーをグレーにマッピングしたいと思います。

加算マッピング

H' = H + (Hターゲット- Hベース)

(ラップアラウンドで)hueに使用するのはおそらく問題ありません。彩度については、グレー値を保持する必要があるため、乗法マッピングが示唆されます

S' = S * (Sターゲット/ Sベース)、

彩度が 100% を超える値はクリップされます。ただし、明度については、中間値を調整しながら 0% と 100% の両方の明度を修正する必要があるため、線形マップではうまくいきません。自然な選択は、代わりにガンマ型のマップ、つまり

L' = pow( L, log(L target ) / log(L base ) ) = exp( log(L) * log(L target ) / log(L base ) )。

ここで、明るさの値は 0 から 1 の間でスケーリングされます。

もちろん、他にも使用できるマップはたくさんありますが、これらのマップから始めて、十分な結果が得られるかどうかを確認します。最終的に、結果の品質は、HSL 色空間の知覚上の不均一性によっても制限される可能性があることに注意してください。詳細については、このウィキペディアのページを参照してください。

于 2011-07-27T14:14:37.353 に答える