如何使用GLSL着色器进行直方图均衡?

时间:2015-06-26 16:26:58

标签: glsl shader histogram

我是osgEarth的用户(用于渲染3D地形的库),我想使用GLSL(着色器)代码对某些特定图像进行直方图均衡(非常白,需要均衡)。

如何在GLSL中做到这一点。

提前谢谢。

1 个答案:

答案 0 :(得分:2)

我找到了解决问题的方法,不是使用直方图均衡,而是使用线性拉伸,这里是GLSL代码的示例:

varying vec4 oe_layer_texc;
uniform sampler2D oe_layer_tex;
float NMIN = 0.0; 
float NMAX = 65535.0; 
float OMIN = 238.0; 
float OMAX = 557.0; 
float space = ( NMAX - NMIN ) / ( OMAX - OMIN ) ; 
float bins = ( OMAX - OMIN ); 
vec4 srcPixel =texture2D(oe_layer_tex, oe_layer_texc.st);
float value = srcPixel.x * 65535.0 - OMIN;
color.rgb = vec3(( NMIN + ( value * space ))/65535.0);
</glsl>