|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Roman Maltsev 2:5000/256.31 11 Jul 2001 02:18:00 To : Vadim Ponomarev Subject : метpы -> RGB -------------------------------------------------------------------------------- 09 Jul 01 21:52, Vadim Ponomarev wrote to Alexander Hritonenkov: VP>>> Как из длины световой волны в видимом диапазоне пеpейти к VP>>> RGB компонентам. Это невозможно по своей природе. Монохроматический свет не лежит в области цветов, воспроизводимых монитором. Монитор - это не лазер. VP> Какова зависимость между Hue и длиной волны. Линейная? 1/x? VP> Что-то другое? Hикакая. Вообще, если интересно, достань где-нибудь усредненные кривые чувствительности глаза. В глазе есть 3 характерных разновидности колбочек, у каждой из которых своя чувствительность к разным длинам волн. Кажется, такие кривые были в феймановском учебнике физики, правда, весьма схематические. Короче, у одного вида максимальная чувствительность к красному, у другого к зеленому, у третего к синему. Что касается монитора, излучающего 3 "основных" цвета, то частоты этих цветов подобраны так, чтобы лежать примерно по краям и посередине спектра. (Hе помню точно, но, кажется, максимумы чувствительности датчиков глаза расположены по другому). Реально, каждый из них, во первых, составляет целый кусок спектра, а во вторых, раздражает все три датчика! Именно поэтому нельзя изобразить на мониторе фиолетовый: синий цвет монитора раздражает еще и зеленый датчик, а природный фиолетовый влияет только на синий датчик, а от области чувсвительности зеленого расположен далеко. Природный синий, кстати, тоже раздражает зеленый датчик. И вообще, есть люди с нестандартными кривыми чувствительности ("полудальтоники") - у них один из крайних датчиков настроен не на свой цвет, а на средний между "родным" и зеленым. В результате, диапазон цветовосприятия сужается, но спектральное разрешениеь на суженном диапазоне выше. Искать по ключевому слову "колориметрия". AH>> Идея в том, что там 0 гpадyсов Hue соответствyет кpасномy, AH>> а сколько-то гpадyсов соответствyет фиолетовомy. Пpичем, пpи Hе путай фиолетовый и пурпурный. У фиолетового длина волны меньше, чем у синего. А пурпурный есть смесь красного и синего, в природе почти не встречается, и уж совершенно точно не соответсвует никакой длине волны. AH>> пеpеходе от нyля к этомy значению, цвета плавно пеpеходят по AH>> цепочке AH>> Кpасный-Оpанжевый-Желтый-Зеленый-Голyбой-Синий-Фиолетовый. AH>> Hасколько я знаю, именно так и изменяются цвета с AH>> yвеличением частоты. VP> Вроде так, но тогда вопрос с углами, близкими к 2п. По Там пурпурный, который есть сумма двух цветов, по определению. Эдакое убиение двух зайцев: делаем область цветов замкнутой (а значит, без разрывов на концах), да еще и получаем описание "нестандартного" пурпурного цвета. Вот перевод RGB -> HSI Hue = (Alpha-arctan((Red-intensity)*(3^0.5)/(Green-Blue)))/(2*PI) with { Alpha=PI/2 if Green>Blue { Aplha=3*PI/2 if Green<Blue { Hue=1 if Green=Blue Saturation = (Red^2+Green^2+Blue^2-Red*Green-Red*Blue-Blue*Green)^0.5 Intensity = (Red+Green+Blue)/3 Note that you have to compute Intensity *before* Hue. А это перевод RGB -> HSL Another point of view of this cone is to project the coordinates onto the base. The 2D projection is: Red: (1;0) Green: (cos(120 deg);sin(120 deg)) = (-0.5; 0.866) Blue: (cos(240 deg);sin(240 deg)) = (-0.5;-0.866) Now you need intermediate coordinates: x = Red-0.5*(Green+Blue) y = 0.866*(Green-Blue) Finally, you have: Hue = arctan2(x,y)/(2*PI) ; Just one formula, always in the correct quadrant Saturation = (x^2+y^2)^0.5 Luminosity = (Red+Green+Blue)/3 Всего хорошего, Roman Maltsev aka DailyHacking. --- * Origin: * DailyHacking BBS * 7-383-236-7809 * 00:00- (2:5000/256.31@Fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/169843b4bbf04.html, оценка из 5, голосов 10
|