opengl对图像进行模糊处理

本文介绍了使用OpenGL进行图像模糊处理,特别是通过高斯滤波实现图像的平滑。卷积过程中,应用一个卷积核对图像每个像素点及其邻域进行加权平均,以替换中心像素点的值,从而达到减少噪点和失真的效果。
摘要由CSDN通过智能技术生成

右下角图片为模糊效果图


对图像进行模糊处理也就是平滑处理

图像模糊的用途:用来减少图像上的噪点或失真

同样需要对图像做卷积处理

卷积过程



卷积的数学表达式


本文的图像模糊采用的高斯滤波

具体操作:用一个卷积核扫描图像中的每一个像素,用模板确定的邻域内像素的加权

平均灰度值去替代模板中心像素点的值

opengl 中shader实现

varying vec2 V_Texcoord;

uniform sampler2D U_MainTexture;

void main()
{
	//高斯滤波核
	// 1 2 1
	// 2 4 2
	// 1 2 1
	vec4 color=vec4(0.0);
	int coreSize=3;
	float texelOffset=1/150.0;
	float kernel[9];

	kernel[6]=1;kernel[7]=2;kernel[8]=1;
	kernel[3]=2;kernel[4]=4;kernel[5]=2;
	kernel[0]=1;kernel[1]=2;kernel[2]=1;

	//移动高斯核,对原图做卷积计算
	int index=0;
	for(int y=0;y<coreSize;y++)
	{
		for(int x=0;x<coreSize;x++)
		{
		
			//原图像素点
			vec4 currentColor=texture2D(U_MainTexture,V_Texcoord+vec2((-1+x)*texelOffset,(-1+y)*texelOffset));
			//卷积计算
			color+=currentColor*kernel[index++];
		}
	}
	//根据邻域内像素的加权平均灰度值去替代模板中心像素点的值
	color/=16.0;
	gl_FragColor=color;
}

渲染入口

#include <windows.h>
#include "glew.h"
#include <
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值