您的位置:首页 > 其它

图像亮度、对比度 算法--cg

2017-12-07 14:23 176 查看
亮度、对比度原理:

亮度对比度的算法公式

一副图像的亮度对比度调节属于图像的灰度线性变换,其公式如下:

y = [x - 127.5 * (1 - B)] * k + 127.5 * (1 + B);

x为调节前的像素值,y为调节后的像素值。

其中B取值[-1,1],调节亮度;

k调节对比度,arctan(k)取值[1,89],所以

k = tan( (45 + 44 * c) / 180 * pi );

其中c取值[-1,1]。通常我们用该值来设置对比度

特别的,

当B=0 时:y = (x - 127.5) * k + 127.5; 这时只调节对比度。

当c=0 时,k = 1:y = x + 255 * B; 这时只调节亮度。

同时,我项目中是需要处理成黑白颜色的。rgb处理成黑白的方法通常是用经验算法:

float gray = dot( color, float3(0.2989, 0.5870, 0.1140));

cg实现:

sampler2D RT : register(s0);
float4 Gan_ps(//in float4 pos : POSITION,
float2 iTexCoord : TEXCOORD0,
float4 outPos : TEXCOORD1,
, float4 outColor : TEXCOORD2
,uniform float br//亮度
,uniform float duibi
) : COLOR
{
float4 color=tex2D(RT, iTexCoord);
float c = dot( color.rgb, float3(0.2989, 0.5870, 0.1140)); //黑白处理
float k=tan((45+44*duibi)/180.0*3.1415926);
c=(c-0.5*(1-br))*k+0.5*(1+br);//亮度、对比度计算

return float4(c,c,c,1);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息