обработка изображений — цветовая модель RGB — CMY с использованием переполнения стека

Это формула, которую мы используем для преобразования RGB в соответствующий формат CMY:

C = 1 - ( R / 255 )
M = 1 - ( G / 255 )
Y = 1 - ( B / 255 )

Я пытаюсь отобразить изображение CMY после применения этой формулы к значениям RGB исходного изображения, но получаемые в результате значения находятся в диапазоне от 0 до 1. Я не думаю, что этот диапазон можно использовать для отображения изображения.

Как сохранить значения CMY в виде массива, чтобы их можно было использовать для отображения изображения?
Нужно ли для этого масштабировать диапазон от 0-1 до 0-255?

Если мне нужно масштабировать то, почему эта формула используется, я могу напрямую использовать:

C = 255 - R
M = 255 - G
Y = 255 - B

1

Решение

#include <iostream>

using namespace std;

int main() {
float C = 1.0f - (R / 255.0f);
float M = 1.0f - (G / 255.0f);
float Y = 1.0f - (B / 255.0f);

float cmyArray[3] = {C, M, Y};
return 0;
}

Этот код будет хранить C, M, Y переменные как floating points а затем создать массив для 3 floating points быть втянутым. В этом случае он начинается со значений C, M, а также Y уже инициализированы в массив.

1

Другие решения

Как это: http://liveworkspace.org/code/2rpyRF$ 2

Если вам нужно много значений, вы можете обратиться к n-й группе cmy следующим образом: n*3 + x где x равно 0 для c, 1 для m и 2 для y.

0