сабж
color.rgb = color.r * 0.3 + color.g * 0.59 + color.b * 0.11;
Y = 0.299 R + 0.587 G + 0.114 B
oistalker
-)))))
Если я правильно понял, тебе надо сделать картинку черно-белой? тогда вот формула с шейдера от майкрософт:
float3 LuminanceConv = { 0.2125f, 0.7154f, 0.0721f };
float4 PostProcessPS( float2 Tex : TEXCOORD0 ) : COLOR0
{
return dot( (float3)tex2D( g_samSrcColor, Tex ), LuminanceConv );
}
>Y = 0.299 R + 0.587 G + 0.114 B
Ноги растут отседова: http://en.wikipedia.org/wiki/YCbCr
По-хорошему надо еще учитывать переход от RGB в sRGB и смотреть на откалиброванном мониторе :)
спс. Y = 0.3*R + 0.59*G + 0.11*B упомянается чаще.
Che@ter
насчет шойдера спасибо, я пока тупо новую тестуру генерю и заполняю ее, видимо с шейдером будет элегантнее.
вообще для шойдра лучше так:
dot(color, float3(0.299,0.587,0.114))
В примере шейдера имеется ввиду, что значения можно из программы менять.
>вообще для шойдра лучше так:
>dot(color, float3(0.299,0.587,0.114))
а для шейдера так:
dot(color, vec3(0.299,0.587,0.114))
)))
HolyDel
жжошь ^_^
да бери макс компонент цвета и не парься
о_О
а откуда числа .299,0.587,0.114 ???
я всегда так делал:
result = (r+g+b)/3;
alex19921992
от туда что глаз по разному воспринимает интенсивность разных длин волн
alex19921992
>а откуда числа .299,0.587,0.114 ???
Из телевизионного стандарта CCIR-601.
и +1 к сказанному d.m.k
правка
А еще точнее, из рекомендации Rec. ITU-R BT.601-4 http://inst.eecs.berkeley.edu/~cs150/Documents/ITU601.PDF
2.1 Construction of luminance (EY¢ ) and colour-difference (ER¢ – EY¢ ) and (EB¢ – EY¢ ) signals
The construction of luminance and colour-difference signals is as follows:
EY ¢ = 0.299 ER ¢ + 0.587 EG ¢ + 0.114 EB ¢
whence:
(ER ¢ – EY ¢ ) = ER ¢ – 0.299 ER ¢ – 0.587 EG ¢ – 0.114 EB ¢
= 0.701 ER ¢ – 0.587 EG ¢ – 0.114 EB ¢
and:
(EB ¢ – EY ¢ ) = EB ¢ – 0.299 ER ¢ – 0.587 EG ¢ – 0.114 EB ¢
= – 0.299 ER ¢ – 0.587 EG ¢ + 0.886 E
Тема в архиве.