2

n色間を補間するにはどうすればよいですか。

2色のシンプルなケース

最初に、2 つの色の中間点を見つけたい、より単純なケースを考えてみましょう。

Color1 is RGB ( 255, 0, 0 ) // Red
Color2 is RGB ( 128, 128, 128 ) // Grey

ソリューションは、個別に考慮された各 R、G、B の中間点です。

RGB ( 128 + 64, 128 / 2, 128 / 2 ) = RGB ( 192, 64, 64 )

中間点は正確に 2 つの中間にあり、補間には線形の関係があるため、Color1 と Color2 の間で 0.25 などの分数で補間することが可能であり、色は Color1 に近づく必要があります。

RGB ( 255 - 32, 32, 32 ) = RGB ( 223, 32, 32 )

n色の場合

私が解決策を見つけたいのは、各色の合計が最大 1.0 の分数の重みを持つ n 色がある場合です。

(推測すると、各色は 3 次元空間の点と見なすことができ、重み付けは、補間された点が各色点に対してどれだけ離れているかを表します)

色補間はリニア RGB のみです。

いくつかの条件下では、問題の解決策である複数の整数値が存在する可能性があると思います。たとえば、同様の値を持つ色がいくつかある場合などです。

これを解決するのに役立つバイリニア補間があることを読みました。

通常、色の数は 5 を超えず、通常は 2、3、または 4 色です。

4

2 に答える 2

1

あなたの推測は許容できる解決策を提供します (はい、各次元を個別に補間する必要があります)。

問題は、色空間が複数のモデルで記述でき、それぞれが異なる次元数を持つことです。RGB、CMYK、HSL、またはその他のエキゾチックな記述を選択するかどうかに応じて、補間の外観が異なります。違いはほとんど美的なものであるため、非常に技術的な用語で説明するのは困難です. たとえば、HSL を使用した補間は、常に色の輪を使用して色間を移動します。

計算に異なるカラー モデルを使用した場合の結果 (およびそれがもたらす複雑さ) についての適切な説明は、Krita マニュアルにあります: https://userbase.kde.org/Krita/Manual/ColorManagement

于 2016-07-20T10:39:10.567 に答える
0

この問題を解決する Java コードがここにあります。これは Scala SBT でビルドされていますが、その Java コードであることに注意してください。

https://github.com/PhilAndrew/betweenrgb

重み付けされた色のマージは、ここでテストされます。

https://github.com/PhilAndrew/betweenrgb/blob/master/src/test/java/between/rgb/MergeWeightedColorsTest.java

于 2016-07-29T02:44:21.363 に答える