Кодировать комплексное число как пиксель RGB и обратно - PullRequest
1 голос
/ 02 апреля 2010

Как лучше кодировать комплексное число в пиксель RGB и наоборот?

Вероятно, (логарифм) абсолютного значения переходит в яркость, а аргумент - в оттенок.

Ненасыщенные пиксели должны получить рандомизированный аргумент в обратном преобразовании.

Something like:
0 -> (0,0,0)
1 -> (255,0,0)
-1 -> (0,255,255)
0.5 -> (128,0,0)
i -> (255,255,0)
-i -> (255,0,255)

(0,0,0) -> 0
(255,255,255) -> e^(i * random)
(128,128,128) -> 0.5 * e^(i *random)
(0,128,128) -> -0.5

Есть ли готовые формулы для этого?

Редактировать: Похоже, мне просто нужно конвертировать RGB в HSB и обратно.

Редактировать 2: Существующий RGB -> фрагмент конвертера HSV:

if (hsv.sat == 0) {
    hsv.hue = 0; // !
    return hsv;
}

Я не хочу 0. Я хочу случайно. И не только если hsv.sat==0, но если оно ниже, чем должно быть («должно быть» означает максимальное насыщение, насыщение, которое следует после преобразования из комплексного числа).

Ответы [ 3 ]

4 голосов
/ 02 апреля 2010

У вас будет много проблем:

| RGB | = 2 ^ 24 и | C | =?

Предположим, что ваш набор комплексных чисел конечен и дискретен, я думаю, что лучший метод для RGB System такой:
Декартова ось:

alt text

Полярная ось:

alt text

Я думаю, это будет уникально и немного семантически: что-то вроде встречных сеток и раскраски географических карт и анализа медицинских изображений.

вместо этого вы можете использовать систему HSL и полярную ось:

alt text

что вы хотите сделать с этой кодировкой?

0 голосов
/ 09 июня 2011

Похоже, что у ОП был другой вопрос ... но в любом случае, это одно из мест, где это включено. Это код GPL, так что вы можете использовать его, если хотите.

Функция Sage complex_to_rgb делает это с Numpy и Python. У Mathematica есть такие сложные сюжеты (на самом деле они были вдохновлены Мудрецом), поэтому, предположительно, у него есть что-то подобное и внутри, хотя, возможно, и не код.

0 голосов
/ 02 апреля 2010

Сначала пара комментариев на ваш вопрос:

  • 1 + i -> (510,255,0)?
  • 'яркость' и 'оттенок' обычно компоненты цветовой модели HSV а не RGB

Возможно, вы могли бы использовать полярную форму комплексных чисел и сопоставить их с цветовым кругом, таким как HSV с фиксированным V? Поскольку величина комплексного числа может быть бесконечной, у вас могут возникнуть проблемы с отображением их в любую цветовую модель, все из которых (ну, все, что я знаю об этом) ограничены. Возможно, вы могли бы использовать неевклидову геометрию для отображения комплексных чисел в единичный круг.

Но, чтобы ответить на ваш вопрос, я никогда не сталкивался с готовым решением вашей проблемы.

Мы ждем, чтобы учиться у SO.

...