右下角图片为模糊效果图
对图像进行模糊处理也就是平滑处理
图像模糊的用途:用来减少图像上的噪点或失真
同样需要对图像做卷积处理
卷积过程
卷积的数学表达式
本文的图像模糊采用的高斯滤波
具体操作:用一个卷积核扫描图像中的每一个像素,用模板确定的邻域内像素的加权
平均灰度值去替代模板中心像素点的值
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 <