看到SE的技术文档关于降噪的决定研究一下,
本次试验场景:

文章中提到了3中主要滤波方法,最后一种方法又有三种方式
分别为Conventional geometry-aware filtering,Distribution-Aware Filtering,Specular Lobe-Aware Filtering and Upsampling
根据公式做了一些,自己弄得除噪方法不知道是否正确,虽然有效果=  =;

博主的步骤:
1.    找出噪波(包括噪波与贴图上的细节)
2.    算出specular,diffuse的干扰
3.    此处方法众多:a.用别的像素代替噪波b.周围采样求平均值(会造成模糊)。。。。

Conventional geometry-aware filtering

基于最基本的高斯滤波,

此方法需要计算深度depth和normal,可通过获取_CameraDepthTexture和_CameraNormalsTexture获取,详细请点

W相当于对过滤正确性的判断,因为物体的边缘可能被当做噪波误判,产生边缘粗糙或者模糊

W权重公式
 

float wk = Gaussian(GetDepth(i_) - GetDepth(j), _Sigma_z);

Si是像素i中屏幕空间点的位置
G为高斯函数

σ是高斯分布的标准差

		inline	float Gaussian(float x, float y)
{
return _A * exp(-(((pow((x - _X0), 2)) / (2 * _Sigma_x *_Sigma_x)) +
((pow((y - _Y0), 2)) / (2 * _Sigma_y *_Sigma_y)))); }

算出w结果图
 

边缘清晰可见,因为是通过depth和normal判断的,所以没有噪波,也包括了diffuse等的细节,通过w我们可以减少对边缘的降噪

然后采样对灰度进行比较,如果当前点与采样点相差过多则为噪波,采样点数越多越准确,但是也有限度

通过上图可明显发现w起的作用

结果如下(图片可点击放大查看)

放大结果

Distribution-Aware Filtering

对噪波进行判断并锐化,便于识别出噪波


 
t2为自定义参数
Ci为光滑分布

b函数为任意smoothing kernel
比如:
高斯滤波Gaussian filtering
各向异性滤波anisotropic filtering
总变分最小化Total Variation minimization
相邻滤波neighborhood filtering
NL-means algorithm
等等
这里博主使用高斯滤波

W结果如下
 
上图的结果没有开noise,但是这种方法的w是包含噪波的,所以不能用w来判断cut off,
此处的w是其第一种作用,也就是判断噪波,但是这种方法的输入参数β,可以调节对高光部分和阴影部分的过滤程度(可以看到在图中参数下specular处是全黑的,此时高光处时不会过滤的,采样点之间的差别为0),所以这种方法不需要cut off

结果如下

比之前方法的图片细节(见lena)保真度高,高光等细节损失几乎为0

SE文档中实现结果
 

Specular Lobe-Aware Filtering and Upsampling

对过滤的正确性判断加强,加上对高光的判断,免去对高光高亮处边缘的误判

	float ai = v * max(dot(N, lightDir), 0);

W的结果如下
 
加入了对高光与暗部细节部分的判断,使得高光部分降噪效果良好

三种方法中效果最好的方法

结果如下

SE文档中实现结果

三种方法效果比对

代码已上传至github

     ------ by wolf96

Unity3d 游戏中的实时降噪-对Square Enix文档的研究与实现的更多相关文章

  1. 从多个XML文档中读取数据用于显示webapi帮助文档

    前言: 你先得知道HelpPageConfig文件,不知道说明你现在不需要这个,所以下文就不用看了,等知道了再看也不急.当然如果你很知道这个,下文也不用看了,因为你会了. 方法一: new XmlDo ...

  2. 老猿学5G扫盲贴:3GPP规范中与计费相关的主要规范文档列表及下载链接

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 在<老猿学5G扫盲贴:3GPP规范中部分与计 ...

  3. 在unity3d游戏中添加中文语音控制

    最近打算尝试一下OLAMI在游戏中应用的可能性,这里做一下记录. unity官方教程中的几个项目很精简,但看起来很不错,里面有全套的资源.最后我选择了tanks-tutorial来做这个实验. 下载和 ...

  4. Unity3d 游戏中集成Firebase 统计和Admob广告最新中文教程

    之前写过俩相关的教程,最近发现插件官方更新了不少内容,所以也更新一篇Firebase Admob Unity3d插件的教程,希望能帮到大家. Firebase Admob Unity3d插件是一个Un ...

  5. C# : 操作Word文件的API - (将C# source中的xml注释转换成word文档)

    这篇博客将要讨论的是关于: 如何从C#的source以及注释, 生成一份Word格式的关于各个类,函数以及成员变量的说明文档. 他的大背景如下...... 最近的一个项目使用C#, 分N个模块, 在项 ...

  6. 在项目中利用TX Text Control进行WORD文档的编辑显示处理

    在很多文档管理的功能模块里面,我们往往需要对WORD稳定进行展示.编辑等处理,而如果使用微软word控件进行处理,需要安装WORD组件,而且接口使用也不见得简单易用,因此如果有第三方且不用安装Offi ...

  7. PHP中利用DOM和simplxml读取xml文档

    实例  用DOM获取下列xml文档中所有金庸小说的书名,该xml文档所在位置为 ./books.xml: <?xml version="1.0" encoding=" ...

  8. spring boot 中使用swagger 来自动生成接口文档

    1.依赖包 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swa ...

  9. 实时监测contenteditable(可编辑文档)的内容发生改变

    如果是文本框用onchange,oninput,onpropertychange都可以实时监控值发生变化,但是div设置了属性contenteditable(可编辑文档)就不管用了. 最简单的方法用o ...

随机推荐

  1. C#实现从EXCEL文件读取数据到SqlServer数据库

    用第三方组件:NPOI组件实现 先去官网:http://npoi.codeplex.com/下载需要引入dll(可以选择.net2.0或者.net4.0的dll),然后在网站中添加引用.使用 NPOI ...

  2. Library中的title与Name

    在Library中新增Title字段,其中文件夹的title字段与Name相同,并且默认生成:但是文件的Title字段为空.

  3. StarUML启动时候出现"System Error. Code:1722. RPC服务器不可用."错误的解决办法

    StarUML是用得很顺手的UML工具,但是启动时候每次都会出现"System Error. Code:1722. RPC服务器不可用."错误. 一般来说这个应该是某个Window ...

  4. oracle数据库的导出与导入

    导出:exp devtest10/dev10@172.16.7.39:1521/WSRZ file=d:\WSRZ.dmp log=d:\WSRZ.log full=y 导入:imp testdb/t ...

  5. 输出不大于N的素数的个数

    输出不大于N的素数的个数 Sieve of Eratosthenes 方法  素数的性质: 非素数可以分解为素数乘积. 证明 (1)n = 2 成立,n = 3 成立: (2)若 n = k 时成立, ...

  6. PHP中的设计模式:单例模式(译)

    原文链接:http://coderoncode.com/2014/01/27/design-patterns-php-singletons.html 单例模式用于限制类实例化到单个对象,当整个系统只需 ...

  7. 【elasticsearch】(3)centos7 安装中文分词插件elasticsearch-analyzer-ik

    前言 elasticsearch(下面简称ES,安装ES点击这里)的自带standard分词只能把汉语分割成一个个字,而不能分词.分段,这就是我们需要分析器ik的地方了. 一.下载ik的相应版本 查看 ...

  8. javascript 学习笔记之面向对象编程(二):继承&多态

    ~~接上篇~~上一篇实现了类的实现以及类成员变量和方法的定义,下面我们来了解下面向对象中两个最重要的特性:继承和多态. 继承 js中同样可以实现类的继承这一面向对象特性,继承父类中的所有成员(变量和属 ...

  9. Unity NGUI和UGUI与模型、特效的层级关系

    目录 1.介绍两大UI插件NGUI和UGUI 2.unity渲染顺序控制方式 3.NGUI的控制 4.UGUI的控制 5.模型深度的控制 6.粒子特效深度控制 7.NGUI与模型和粒子特效穿插层级管理 ...

  10. 帝国cms 灵动标签调用顶级栏目导航

    [e:loop={"select classname,classpath from [!db.pre!]enewsclass where bclassid=0 order by classi ...