GLSL学习_高斯滤波

Posted Dsp Tian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GLSL学习_高斯滤波相关的知识,希望对你有一定的参考价值。

使用RenderMonkey:

从自带的sobel修改的。

vertex:

技术分享
uniform float height;

varying vec4 vTexCoords00;
varying vec4 vTexCoords01;
varying vec4 vTexCoords02;
varying vec4 vTexCoords10;
varying vec4 vTexCoords11;
varying vec4 vTexCoords12;
varying vec4 vTexCoords20;
varying vec4 vTexCoords21;
varying vec4 vTexCoords22;

void main(void)
{
   vec4 Pos = gl_Vertex;

   gl_Position = vec4(Pos.xy,0, 1);
   
   vec4 BaseTexCoord;
   BaseTexCoord.x = 0.5 * (1.0 - Pos.x);
   BaseTexCoord.y = 0.5 * (1.0 + Pos.y);
   BaseTexCoord.zw = vec2(0.0, 1.0);
   
   float vOffset = (1.0 / height);
   
   vTexCoords00 = BaseTexCoord + vec4(-vOffset, -vOffset, 0.0, 0.0);
   vTexCoords01 = BaseTexCoord + vec4( 0.0,     -vOffset, 0.0, 0.0);
   vTexCoords02 = BaseTexCoord + vec4( vOffset, -vOffset, 0.0, 0.0);

   vTexCoords10 = BaseTexCoord + vec4(-vOffset,  0.0, 0.0, 0.0);
   vTexCoords11 = BaseTexCoord;  
   vTexCoords12 = BaseTexCoord + vec4( vOffset,  0.0, 0.0, 0.0);
   
   vTexCoords20 = BaseTexCoord + vec4(-vOffset,  vOffset, 0.0, 0.0);
   vTexCoords21 = BaseTexCoord + vec4( 0.0,      vOffset, 0.0, 0.0);
   vTexCoords22 = BaseTexCoord + vec4( vOffset,  vOffset, 0.0, 0.0);

}
技术分享

Fragment:

技术分享
uniform sampler2D BaseMap;

varying vec4 vTexCoords00;
varying vec4 vTexCoords01;
varying vec4 vTexCoords02;

varying vec4 vTexCoords10;
varying vec4 vTexCoords11;
varying vec4 vTexCoords12;

varying vec4 vTexCoords20;
varying vec4 vTexCoords21;
varying vec4 vTexCoords22;

void main(void)
{
   
   vec4 s00; vec4 s01; vec4 s02;
   vec4 s10; vec4 s11; vec4 s12;  
   vec4 s20; vec4 s21; vec4 s22;
  
   s00 = texture2DProj(BaseMap, vTexCoords00);
   s01 = texture2DProj(BaseMap, vTexCoords01);
   s02 = texture2DProj(BaseMap, vTexCoords02);

   s10 = texture2DProj(BaseMap, vTexCoords10);
   s11=  texture2DProj(BaseMap, vTexCoords11);   
   s12 = texture2DProj(BaseMap, vTexCoords12);
   
   s20 = texture2DProj(BaseMap, vTexCoords20);
   s21 = texture2DProj(BaseMap, vTexCoords21);
   s22 = texture2DProj(BaseMap, vTexCoords22);

   vec4 re=s00*0.0625+s01*0.125+s02*0.0625+
           s10*0.1250+s11*0.250+s12*0.1250+
           s20*0.0625+s21*0.125+s22*0.0625;
     
   gl_FragColor = re;
}
技术分享

 

以上是关于GLSL学习_高斯滤波的主要内容,如果未能解决你的问题,请参考以下文章

学习 opencv--- 线性邻域滤波专场:方框滤波,均值滤波,高斯滤波

机器学习3_EM算法与混合高斯模型

opencv学习-滤波篇-均值滤波和高斯滤波

opencv学习-均值滤波高斯滤波中值滤波双边滤波

opencv学习笔记15种图像滤波辨析:方框均值高斯中值双边

opnecv日记_GaussianBlur函数——高斯滤波 中文解释参数含义