| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > Изменение яркотсти цвета |
| Автор: masterik 22.1.2008, 17:15 |
| Доброго времени суток, Очень срочно нужен алгоритм изменения яркости цвета в RGB пространстве... или на крайний случай в HSL/HSB пространстве. Например имеется цвет RGB (255, 255, 128) - отсюда мне нужно получить два цвета: немного темнее и светлее имеюшегося... Был бы рад увидеть не только формулу или кусок кода, но и парочку комментариев или ссылочку для прочтения... Заранее очень благодарен за любую помощь |
| Автор: _Y_ 25.1.2008, 16:55 |
| Earnest, а мне тоже интересны формулы для яркости\контрастности\интесивности |
| Автор: dereyly 26.1.2008, 04:10 |
| можно возвести в степень или умножить =) вроде степень увеличивает яркость, а умножение осветляет Ну если неравномерная освещенность то нужно гистограмму(ы) анализировать выделять пики и растягивать (как то так) |
| Автор: masterik 31.1.2008, 13:43 | ||
Было бы интересно! Нашел неплохие примеры конвертации между пространствами: http://www.codeproject.com/KB/recipes/colorspace1.aspx http://www.codeproject.com/KB/miscctrl/colorwheelv1.aspx А нет формулы, чтобы прямо в RGB выполнить эту задачу, чтобы не терять время на переходы между пространствами? |
| Автор: Sardar 31.1.2008, 16:18 |
| Если для человеческого глаза, то по идее (r, g, b) +- ([0.30, 0.59, 0.11] * (сколько нужно отнять/добавить)), отнимет именно от якрости, коэффициенты задают чувствительность человеческого глаза к исходной компоненте. |
| Автор: TeAnton 2.2.2008, 19:06 |
| Если нужно быстро, и не нужен особо точный результат, можно просто каждый компонент RGB умножить на коэффициент. Коэффициент больше 1 осветляет, коэффициент меньше 1 затемняет. Дешево и сердито. Не забудь потом обработать переполнение через 255. |
| Автор: masterik 4.2.2008, 15:41 | ||||
Спасибо, вот что у меня вышло:
Правильно ли я понял, то что вы предложили? Я получаю немного странные результаты... в каком диапозоне должен лежать коэффициент? RGB компоненты должны быть в диапозоне [0,1] или [0,255]? |
| Автор: Earnest 5.2.2008, 10:46 | ||||
Извините, давно не заглядывала. Вот формулы пересчета и коррекции яркости\контраста. Все весьма несложно и работает вполне быстро.
|
| Автор: masterik 5.2.2008, 12:41 | ||
| Sardar, Earnest, Большое вам спасибо за помощь! Объеденив два ваших решения, которые очень схожи, получил нужный мне результат! Так как пишу для PocketPC, где нет FPU, поэтому все вычисления с целыми числами!
|