Я пытаюсь преобразовать RGB цвета CIE-XYZ и в конечном счете хотел бы преобразовать их в CIElab однако я испытывающие проблемы с java.awt.color.ColorSpace.CS_CIEXYZ Цветовое пространство.RGB для CIE-XYZ в Java
С помощью калькулятора онлайн получить различные значения, чем те, которые предусмотрены из цветового пространства
Код:
import java.awt.color.ColorSpace;
import java.util.Arrays;
public class CIEXYZ {
private final static float[] RGB = new float[] {255.0f, 255.0f, 255.0f};
private final static ColorSpace CIEXYZ = ColorSpace.getInstance(ColorSpace.CS_CIEXYZ);
public static void main(String[] args) {
System.out.println("RGB: " + Arrays.toString(RGB));
System.out.println("CIEXYZ: " + Arrays.toString(CIEXYZ.fromRGB(RGB)));
}
}
Выход:
RGB: [255,0, 255,0, 255,0]
CIEXYZ: [0.95254517, 0.98773193, 0.81500244]
калькулятор онлайн:
http://www.easyrgb.com/index.php?X=CALC
XYZ = 95,050 100,000 108,900
Есть ли что-то я с видом или делаю не так?
Я думал, что диапазон поплавка должен быть 0.0f .. 1.0f. Для ints 0 .. 255. –
Так что я просто должен был бы разделить их на 255.0f? – MicroHat11
Когда программисты говорят о цветах, они склонны думать: «Ну, RGB, да? Это легко». Когда вы погрузитесь немного глубже в эту тему, вы столкнетесь с результатами 50-летнего исследования колориметрии (и странного числа стандартов и деталей). Например. на веб-сайте калькулятора белая точка - «Дневной свет», что бы это ни значило. В [ColorSpace] (https://docs.oracle.com/javase/8/docs/api/java/awt/color/ColorSpace.html) говорится, что XYZ использует D50. Использование этого на веб-сайте приведет к тому, что какое-то значение окажется вне диапазона (Java может зажать его или просто проигнорировать это и вернуть значение) – Marco13