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

How can I make an histogram equalization using GLSL shader?

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

如何在 GLSL 中做到这一点。

提前致谢。

我找到了解决我的问题的方法,不是使用直方图均衡,而是使用线性拉伸,这里是 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>