RGB в RYB (с потерями)

Блог о программировании и не только

RGB в RYB (с потерями)

Алгоритм преобразования RYB в RGB (RGB to RYB) я нашел тут: https://github.com/bahamas10/node-rgb2ryb, реализация по JavaScript.

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

Табличный метод, но немного иначе. RYB таблица

А что если сформировать таблицу-изображение небольшого размера в котором бы  каждый пиксель представлял бы значение RYB, а позицией пикселя было бы значение RGB.

После наброска программы получилось следующее изображение:

RYB_TableРазмер 640×480 был выбран для более компактного хранения, хотя погрешности достаточно велики.

Код для выбора значения RYB в соответствии с RGB значение цвета(Qt 5 \ C++):

 

комментария 4

  1. RayMon:

    Saved as a favorite, I really like your blog!

  2. Андрей Звезинцев:

    Вот здесь есть оба преобразования – из RGB в RYB, а также из RYB в RGB:
    https://github.com/bahamas10/node-rgb2ryb/blob/master/rgb2ryb.js
    Однако, вынужден заметить, что при тестировании на цветовом кубе RGB (256*256*256 цветов), ошибочная конвертация (RGB->RYB->RGB) составила порядка 8.5%, что очень много. Т.е. 8.5% из всех цветов RGB эти формулы переводят некорректно.

  3. Андрей Звезинцев:

    Простите, в предыдущем комментарии я ошибся! В указанных по ссылкам алгоритмах ОШИБОК НЕТ!
    Это я виноват – я с js в C# вот это “if (b && g)” портировал как “if ((b >=1) && (g >= 1))”, а надо было как “if(b != 0 && g != 0)”
    Так что, повторюсь, – по ссылке https://github.com/bahamas10/node-rgb2ryb/blob/master/rgb2ryb.js есть оба КОРРЕКТНЫЕ преобразования — из RGB в RYB и из RYB в RGB.

    • Из RGB в RYB нелься перевести без потерь) В интернете есть алгоритм преобразование основанные не на кубе, а они несовсем верны

Добавить комментарий