C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Как зная яркость пикселя разложить ее на R, G, B,
Guest
Отправлено: 10.03.2005, 18:10


Не зарегистрирован







Как зная яркость пикселя разложить ее на R, G, B, составляющие?
AVC
Отправлено: 10.03.2005, 18:24


Ветеран

Группа: Модератор
Сообщений: 1583



Яркость не является характеристикой пикселя, а является функцией RGB. Когда-то применял формулу
оттенок_серого = 0.55*G + 0.3*R + 0.15B
Bond
Отправлено: 10.03.2005, 18:25


Станционный диспетчер

Группа: Участник
Сообщений: 142



Если под выражением "яркость пикселя" подразумевается его цвет, то:
CODE
char R = Color & 0xFF, G = (Color >> 8 ) & 0xFF, B = (Color >> 16 ) & 0xFF;
Rius
Отправлено: 10.03.2005, 18:27


Мастер участка

Группа: Участник
Сообщений: 321



В винде задается цвет пикселов, а не их яркость. Цвет раскладывается так:
CODE
DWORD color = clNavy;//или TColor color = clNavy;
BYTE r, g, b;
b = (color & 0x00ff0000) >> 32;
g = (color & 0x0000ff00) >> 16;
r = (color & 0x000000ff);

Обратно собирается так:
CODE
TColor color = RGB(r, g, b);


Отредактировано Rius — 10/03/2005, 20:31
Guest
Отправлено: 10.03.2005, 18:47


Не зарегистрирован







Я имел ввиду что если я получил яркость пикселя следующим образом (R*.257 + G*.504+B*.098+16.) то из той яркости можно ли восстановить значение R G и B

Bond
Отправлено: 10.03.2005, 18:52


Станционный диспетчер

Группа: Участник
Сообщений: 142



Это уже уравнение с тремя переменными: R, G, B cool.gif

Вернуться в Вопросы программирования в C++Builder