使用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,, );

   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学习_高斯滤波的更多相关文章

  1. OpenCV计算机视觉学习(4)——图像平滑处理(均值滤波,高斯滤波,中值滤波,双边滤波)

    如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice &q ...

  2. [学习opencv]高斯、中值、均值、双边滤波

    http://www.cnblogs.com/tiandsp/archive/2013/04/20/3031862.html [学习opencv]高斯.中值.均值.双边滤波 四种经典滤波算法,在ope ...

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

    本篇文章中,我们一起仔细探讨了OpenCV图像处理技术中比较热门的图像滤波操作.图像滤波系列文章浅墨准备花两次更新的时间来讲,此为上篇,为大家剖析了"方框滤波","均值滤 ...

  4. OpenCV实现的高斯滤波探究_1(《学习OpenCV》练习题第五章第三题ab部分)

    首先看下OpenCV 官方文档对于cvSmooth各个参数的解释: Smooths the image in one of several ways. C: void cvSmooth(const C ...

  5. SIFT四部曲之——高斯滤波

    本文为原创作品,未经本人同意,禁止转载 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和http://www.cnblogs.com/xujianqing/ 或 ...

  6. Atitit   图像处理 平滑 也称 模糊, 归一化块滤波、高斯滤波、中值滤波、双边滤波)

    Atitit   图像处理 平滑 也称 模糊, 归一化块滤波.高斯滤波.中值滤波.双边滤波) 是一项简单且使用频率很高的图像处理方法 用途 去噪 去雾 各种线性滤波器对图像进行平滑处理,相关OpenC ...

  7. python学习_数据处理编程实例(二)

    在上一节python学习_数据处理编程实例(二)的基础上数据发生了变化,文件中除了学生的成绩外,新增了学生姓名和出生年月的信息,因此将要成变成:分别根据姓名输出每个学生的无重复的前三个最好成绩和出生年 ...

  8. Linux操作系统学习_操作系统是如何工作的

    实验五:Linux操作系统是如何工作的? 学号:SA1****369 操作系统工作的基础:存储程序计算机.堆栈(函数调用堆栈)机制和中断机制 首先要整明白的一个问题是什么是存储程序计算机?其实存储程序 ...

  9. 基于MATLAB的中值滤波均值滤波以及高斯滤波的实现

    基于MATLAB的中值滤波均值滤波以及高斯滤波的实现 作者:lee神 1.   背景知识 中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值. 中值滤 ...

随机推荐

  1. laravel笔记

    向视图中传递变量 使用with()方法 return view('articles.lists')->with('title',$title); 直接给view()传参数 return view ...

  2. 关于com组件注册的问题

    问题是这样的: 在调用摄像头的时候,用到com组件,我已经在工程中添加了com组件,但是运行的时候却报这样的错误. 解决方案:程序生成中,目标平台为Any CPU ,应该改为x86 具体原因不知道……

  3. poj 1511(SPFA+邻接表)

    题目链接:http://poj.org/problem?id=1511 思路:题目意思很简单就是要求源点到各点的最短路之和,然后再求各点到源点的最短路之和,其实就是建两个图就ok了,其中一个建反图.1 ...

  4. springmvc的系统学习之配置方式

    资源:尚学堂  邹波 springmvc框架视频  一.springMVC 工作流程        页面请求---->控制器(Controller DispatcherServlet)----& ...

  5. Maven的配置文件pom.xml

    Maven的配置文件pom.xml 简介: 什么是POM? POM是项目对象模型(Project Object Model)的简称,它是Maven项目中的文件,使用XML表示,名称叫做pom.xml. ...

  6. MyEclipse — Maven+Spring+Struts+Hibernate 整合 [学习笔记-2]

    引入Spring 修改 pox.xml 文件 添加jar包引用 <!-- spring3 --> <dependency> <groupId>org.springf ...

  7. vim中如何引用自定义模板文件

    我们在使用vim新建文件时可以引用自定义模板,来避免重复的数据格式处理花费太多时间. 实现方法很简单,只需要2步即可:1. 在.vim/template目录放入自己的模板文件(如shellconfig ...

  8. hdu 2897 邂逅明下

    转: 这个游戏和Bash game差不多,只不过是Bash game说的是每次最少取一个,最多m个,这个游戏限制在p 和q之间而已,若最后不足p个,那么就一次取完.而且该游戏要求的是最后取光的人输. ...

  9. java消息队列

    来个个人通俗的解释吧.消息队列,顾名思义 首先是个队列.队列的操作有入队和出队 也就是你有一个程序在产生内容然后入队(生产者) 另一个程序读取内容,内容出队(消费者) 我想你应该是缺乏一个使用场景. ...

  10. iOS开发--开发者帐号

    iOS应用上线 http://www.jianshu.com/p/ffddc5e5f0b9 http://www.jianshu.com/p/986e02d38f1b 好不容易终于申请下来了ios 公 ...