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

如何使用GLSL着色器进行直方图均衡化?,glsl,shader,histogram,Glsl,Shader,Histogram,我是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 =

我是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>

可变矢量4 oe_层_texc;
均匀取样器2D oe_层_tex;
浮动NMIN=0.0;
浮动NMAX=65535.0;
浮点数OMIN=238.0;
浮动OMAX=557.0;
浮点空间=(NMAX-NMIN)/(OMAX-OMIN);
浮箱=(OMAX-OMIN);
vec4 srcPixel=texture2D(oe_layer_tex,oe_layer_texc.st);
浮点值=srcPixel.x*65535.0-OMIN;
color.rgb=vec3((NMIN+(值*空间))/65535.0);

您有可用的版本吗?以上这些好处似乎不起作用。此外,
垃圾箱
不在任何地方使用。