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,, );
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计算机视觉学习(4)——图像平滑处理(均值滤波,高斯滤波,中值滤波,双边滤波)
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice &q ...
- [学习opencv]高斯、中值、均值、双边滤波
http://www.cnblogs.com/tiandsp/archive/2013/04/20/3031862.html [学习opencv]高斯.中值.均值.双边滤波 四种经典滤波算法,在ope ...
- 学习 opencv---(7) 线性邻域滤波专场:方框滤波,均值滤波,高斯滤波
本篇文章中,我们一起仔细探讨了OpenCV图像处理技术中比较热门的图像滤波操作.图像滤波系列文章浅墨准备花两次更新的时间来讲,此为上篇,为大家剖析了"方框滤波","均值滤 ...
- OpenCV实现的高斯滤波探究_1(《学习OpenCV》练习题第五章第三题ab部分)
首先看下OpenCV 官方文档对于cvSmooth各个参数的解释: Smooths the image in one of several ways. C: void cvSmooth(const C ...
- SIFT四部曲之——高斯滤波
本文为原创作品,未经本人同意,禁止转载 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和http://www.cnblogs.com/xujianqing/ 或 ...
- Atitit 图像处理 平滑 也称 模糊, 归一化块滤波、高斯滤波、中值滤波、双边滤波)
Atitit 图像处理 平滑 也称 模糊, 归一化块滤波.高斯滤波.中值滤波.双边滤波) 是一项简单且使用频率很高的图像处理方法 用途 去噪 去雾 各种线性滤波器对图像进行平滑处理,相关OpenC ...
- python学习_数据处理编程实例(二)
在上一节python学习_数据处理编程实例(二)的基础上数据发生了变化,文件中除了学生的成绩外,新增了学生姓名和出生年月的信息,因此将要成变成:分别根据姓名输出每个学生的无重复的前三个最好成绩和出生年 ...
- Linux操作系统学习_操作系统是如何工作的
实验五:Linux操作系统是如何工作的? 学号:SA1****369 操作系统工作的基础:存储程序计算机.堆栈(函数调用堆栈)机制和中断机制 首先要整明白的一个问题是什么是存储程序计算机?其实存储程序 ...
- 基于MATLAB的中值滤波均值滤波以及高斯滤波的实现
基于MATLAB的中值滤波均值滤波以及高斯滤波的实现 作者:lee神 1. 背景知识 中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值. 中值滤 ...
随机推荐
- iOS第三方支付-银联支付
#import <Foundation/Foundation.h> #import <UIKit/UIKit.h> #import "UPPayPluginDeleg ...
- Javascript 图片延迟加载之理论基础
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- FastJson与Gson小测试
最近用到Json来传输数据,找到两个比较简单的工具 Gson 和 FastJson随便测试一下两个工具的效率~ 1 package com.json.fast; import java.util.Ar ...
- Shell练习 行列转换
原题:https://leetcode.com/problems/transpose-file/Given a text file file.txt, transpose its content. Y ...
- hdu 1847 Good Luck in CET-4 Everybody!(简单博弈SG)
#include<stdio.h> #include<string.h> #define N 1010 int hash[N]; int sg[N]; void GetSG() ...
- Java-马士兵设计模式学习笔记-代理模式-动态代理 修改成可以任意修改代理逻辑
一.概述 1.目标:动态代理的代理逻辑可以任意修改 2.思路: (1)要把代理逻辑抽离,站在jvm的角度思考,应独立出InvocationHandler接口,并接收被代理的对象及方法作为参数invok ...
- Axure 注册码
用户名:axureuser 序列号:8wFfIX7a8hHq6yAy6T8zCz5R0NBKeVxo9IKu+kgKh79FL6IyPD6lK7G6+tqEV4LG
- Mysql笔记——DML
数据操纵语言DML(Data Manipulation Language),用户通过它可以实现对数据库的基本操作. ========================== 1 插入数据 语法:INSER ...
- Jenkins Master/Slave架构
原文:http://www.cnblogs.com/itech/archive/2011/11/11/2245849.html 一 Jenkins Master/Slave架构 Master/Slav ...
- Intellij Idea @Autowired取消提示
在使用mybatis的代理进行开发时 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> ...