1

複素数を RGB ピクセルに、またはその逆にエンコードする方がよい方法は?

おそらく (の対数) 絶対値が明るさになり、引数が色相になります。

彩度の低いピクセルは、逆変換でランダム化された引数を受け取る必要があります。

何かのようなもの:
0 -> (0,0,0)
1 -> (255,0,0)
-1 -> (0,255,255)
0.5 -> (128,0,0)
私 -> (255,255,0)
-i -> (255,0,255)

(0,0,0) -> 0
(255,255,255) -> e^(i * ランダム)
(128,128,128) -> 0.5 * e^(i *ランダム)
(0,128,128) -> -0.5

そのための既製の公式はありますか?

編集:RGBをHSBに変換して元に戻すだけでよいようです。

編集 2: 既存の RGB -> HSV コンバーター フラグメント:

もし (hsv.sat == 0) {
    hsv. 色相 = 0; // !
    hsv を返します。
}

0 は必要ありません。ランダムが必要です。そしてhsv.sat==0、 if だけでなく、それが本来あるべき値よりも低い場合 (「べき」とは、最大彩度、複素数からの変換後の彩度を意味します)。

4

3 に答える 3

4

多くの問題が発生します。

|RGB|=2^24かつ|C|=?

複素数セットが有限で離散的であると仮定すると、RGB システムの最適な方法は次のようになると思います:
デカルト軸:

代替テキスト

極軸:

代替テキスト

ユニークで少しセマンティックなものになると思います。たとえば、カウンター グリッドや地理マップの色付け、医療画像分析などです。

代わりに HSL システムと極軸を使用できます。

代替テキスト

このエンコーディングで何をしたいですか?

于 2010-04-02T15:23:17.180 に答える
0

OPは別の質問を念頭に置いていたようです...しかしとにかく、これが組み込まれている場所が1つあります。これはGPLコードなので、必要に応じて使用できます。

Sageのcomplex_to_rgb関数は、NumpyとPythonを使用してこれを実行します。Mathematicaにはそのような複雑なプロットがあり(実際、Sageはそれらに触発されています)、おそらくコードではありませんが、おそらく内部的にもこのようなものがあります。

于 2011-06-08T22:26:04.640 に答える
0

最初にあなたの質問に対するいくつかのコメント:

  • 1+i -> (510,255,0) ?
  • 「明るさ」と「色相」は通常、RGB ではなく HSV カラー モデルのコンポーネントです。

おそらく、複素数の極形式を使用して、V を固定した HSV などのカラー ホイールにマッピングできますか? 複素数の大きさは無限になる可能性があるため、それらを任意のカラー モデルにマッピングするのに問題がある可能性があります。おそらく、複素数を単位円にマッピングするために非ユークリッド幾何学を使用できます。

しかし、あなたの質問に答えるために、私はあなたの問題に対する既製の解決策に出くわしたことはありません.

SOから学ぶのを待っています。

于 2010-04-02T13:44:27.963 に答える