第十章 OpenGL ES 基础-图像USM锐化

第十章 OpenGL ES 基础-图像USM锐化

第一章 OpenGL ES 基础-屏幕、纹理、顶点坐标
第二章 OpenGL ES 基础-GLSL语法简单总结
第三章 OpenGL ES 基础-GLSL渲染纹理
第四章 OpenGL ES 基础-位移、缩放、旋转原理
第五章 OpenGL ES 基础-透视投影矩阵与正交投影矩阵
第六章 OpenGL ES 基础-FBO、VBO理解与运用
第七章 OpenGL ES 基础-输入输出框架思维
第八章 OpenGL ES 基础-MVP矩阵理解
第九章 OpenGL ES 基础-高斯模糊原理
第十章 OpenGL ES 基础-图像USM锐化
第十一章 OpenGL ES 基础-基础光照
第十二章 OpenGL ES 基础-色温、色调、亮度、对比度、饱和度、高光
第十三章 OpenGL ES-RGB、HSV、HSL模型介绍
第十四章 OpenGL ES-方框模糊(均值模糊)
第十五章 OpenGL ES-VR 全景模式原理
第十六章 OpenGL ES-桶形畸变算法-常用VR

为什么要锐化?

图片调整后的颜色应用于原始图像的RGB值,以使得图像看起来更加清晰和/或改变外观。

流程

1、图片高斯模糊
2、获取高斯模糊像素点,根据USM锐化公式计算每个像素点锐化之后的像素

USM公式

image为原图图片
gauss为原图进行高斯模糊图片

  mask=image.rgb - gauss.rgb
  rgba=vec4(vec3(image.rgb + factor * mask.rgb), image.a);

点击这里高斯模糊章节-高斯模糊原理篇章

GLSL代码

static const char* usm_vertex_shader ="attribute vec4 position;\n"
                                      "attribute vec2 texCoord;\n"
                                      "varying vec2 vTexCoord;\n"
                                      "\n"
                                      "void main()\n"
                                      "{\n"
                                      "   gl_Position = position;\n"
                                      "   vTexCoord = vec2(texCoord.x,texCoord.y);\n"
                                      "}";

static const char* usm_fragment_shader ="precision highp float;\n"
                                        "varying vec2 vTexCoord;\n"
                                        "uniform sampler2D texture;\n"
                                        "uniform sampler2D texture1;\n"
                                        "uniform mediump float factor;\n"
                                        "\n"
                                        "void main()\n"
                                        "{\n"
                                        "    vec4 image = texture2D(texture, vTexCoord);\n"
                                        "    vec4 gauss = texture2D(texture1, vTexCoord);\n"
                                        "    vec3 mask = vec3(image.rgb - gauss.rgb);\n"
                                        "    gl_FragColor = vec4(vec3(image.rgb + factor * mask.rgb), image.a);\n"
                                        "}";

运行效果:

在这里插入图片描述

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

baoyu45585

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值