以下に基づいて、0 から 1 の間の値を RGB 値に変換したいと考えています。
Pythonでこれをどのように行いますか?
colorsysモジュールを試してください。色相を変数として HSB を変換し、彩度と明るさを両方とも 1.0 にすると、そのような結果が得られます。
Python ルックアップ テーブル ソリューションを検索すると、この非常に便利な例が返されました:
http://www.zovirl.com/2008/11/04/interpolated-lookup-tables-in-python/
赤チャンネルの LUT の例は次のとおりです。
points = ((.4,.2), (.6,1.), (.9,1.), (1.,.5))
table = InterpolatedArray(points)
print table[.5]
3 つのカラー関数には形状の保存があり、見た目はまったく同じであることに注意してください。そのため、単一の関数を定義し、それをオフセット入力で呼び出して R、G、および B 値を生成するだけで済みます。ヒント; 緑の成分のグラフを見てください。これは基本的にドメイン 0-0.5 の上昇ラインとドメイン 0.5-1 の下降ラインです。緑色の線が色 = 0.0 (これは上昇線の下部で、< 0 になります)、色 = 1.0 および相互 (これは元の線の上部で、< 1 になります) と交差するポイントを見つけるために外挿します。 )、それを使用して緑のコンポーネントの関数をプログラムします。次に、戻り値を 0 から 1 の間に制限します。
def component(x):
'''Function for the green component.'''
top = 1.5
bottom = -0.5
if x < 0.5:
rv = x/0.5*(top-bottom)+bottom
else:
rv = (x-0.5)/0.5*(bottom-top)+top
if rv > 1.0:
return 1.0
if rv < 0.0:
return 0.0
return rv
( と の値top
はbottom
推定値です。グラフを測定してください!)
他の色については次のとおりです。赤いグラフが、緑のグラフよりも大きな色値で 0 ラインを離れていることに注意してください。したがって、緑成分関数を使用して赤色を取得するには、入力値から赤と緑のグラフ間の水平距離を減算してから、関数に入力して緑の値を計算します。青の値については、減算する代わりに何かを加算する必要があります。