15

正方形の四隅に4つの色(A、B、C、D)があり、その正方形を4つの色の間でうまく調和するグラデーションで塗りつぶしたい場合、点Eの色をどのように計算しますか?

Eが他のポイントに近いほど、その色が結果に影響を与えるはずです。

それを行う方法はありますか?精度よりもスピードとシンプルさが優先されます。

色http://rabien.com/image/colours.png

4

3 に答える 3

24

2つの色の間にグラデーションが必要な場合の最善の解決策は、HSV表現(色相飽和値)を使用することです。

2つの色のHSV値がある場合は、H、S、およびVの線形補間を行うだけで、良い色になります(RGB空間での補間は、常に「悪い」結果につながります)。

ここには、それぞれRGBからHSVおよびHSVからRGBに移行する式もあります。

ここで、4つのコーナーの問題について、Eからその4つのポイントA、B、C、およびDまでの距離で重み付けされた4つのH / S/V値の線形結合を作成できます。

編集:tekBluesと同じ方法ですが、HSV空間でテストします(RGBおよびHSV空間でテストするのは非常に簡単です。違いがわかります。HSVでは、クロマチックシリンダーを回転させるだけで、次のようになります。良い結果)

EDIT2:「スピードとシンプルさ」を好む場合は、L2ノルム(ユークリッドノルム)の代わりにL1ノルムを使用できます。

したがって、aが正方形のサイズであり、点の座標がA(00)、B(0a)、C(a0)、D(aa)である場合、点の色相E(xy)は次のように計算できます。 :

Hue(E) = ( Hue(B)*y/a + Hue(A)*(1-y/a) ) * (x/a)  +  ( Hue(D)*y/a + Hue(C)*(1-y/a) ) * (1-x/a)

Hue(A)ポイントAHue(B)の色相、Bの色相などはどこにありますか。

彩度と値に同じ式を適用します。

ポイントEの色相/彩度/値を取得したら、RGB空間で変換できます。

于 2009-07-09T23:39:13.667 に答える
2

このサイトをチェックしてください。このサイトでは、「HSVのグラデーションがより満足できる」という@ThibThibのコメントのビジュアルデモを提供しています。

http://www.perbang.dk/rgbgradient/

これは、RGBグラデーションとHSVグラデーションの両方を作成して表示するグラデーションクリエーターです。

FFAAAAからAAFFAA(明るい赤から緑)への9つのステップを試してみると、明るい黄色への移行がうまくいき、HSVとRGBの移行は似ています。

しかし、FF0000から00FF00(太字の赤から緑)までの9つのステップを試してみてください。そうすれば、RGB1が厄介な緑がかった茶色に遷移するのがわかります。ただし、HSV勾配は、太字の黄色に移行します。

于 2012-09-06T21:49:45.887 に答える
1
  1. 各点A、B、C、Dまでの点Eの距離を決定します
  2. ポイントEの色は、赤/緑/青の組み合わせになります。各色軸を、A、B、C、Dの同じ色軸の平均として計算し、距離で熟考します。

    distance_a = sqrt((xa-xe)^ 2 +(ya-ye)^ 2)

    distance_b=...。

    sum_distances = distance_a +distance_b..。

    赤=(red_a distance_a + red_b distance_b ...)/ sum_distances

    color_E = ColorFromARgb(赤、緑、青)

于 2009-07-09T23:35:53.890 に答える