Tone Mapping中luma滤波(降噪)对噪声放大的定性分析

news/2024/4/28 1:24:50/文章来源:https://blog.csdn.net/luzhanbo207/article/details/129709011

Tone Mapping中luma滤波对噪声放大的定性分析

在tone mapping过程中,通常经过统计之后得到一条mapping曲线,记这条曲线为f(x)f(x)f(x),mapping过程中,对于给定的点,假定其亮度为xxx,映射后为f(x)f(x)f(x),信号的放大增益为k=f(x)xk=\frac{f(x)}{x}k=xf(x),上述放大增益的过程在luma平面上进行,若tone mapping在raw图像上,且像素值为xrawx_{raw}xraw,则经过tone mapping后的像素值为k⋅xraw=xraw⋅f(x)xk\cdot x_{raw}=x_{raw}\cdot\frac{f(x)}{x}kxraw=xrawxf(x);为了方便讨论,我们仅讨论在luma平面进行tone mapping,那么tone mapping后的像素计算公式为k⋅x=x⋅f(x)x=f(x)k\cdot x=x\cdot\frac{f(x)}{x}=f(x)kx=xxf(x)=f(x)

图1 luma降噪对图像噪声放大及对比度增强现象

经过上面的背景介绍和铺垫,下面讨论在tone mapping过程中,对于luma平面进行降噪滤波之后再计算放大增益,对于噪声放大、边缘增强及对比度增强现象的内在原理。

图2 luma降噪极端情况对mapping信号放大的影响

对于图像中的x1x_1x1x2x_2x2,映射曲线为f(x)f(x)f(x),那么x1x_1x1点映射为f(x1)f(x_1)f(x1)x2x_2x2点映射为f(x2)f(x_2)f(x2),先分析极端情况,x1,x2x_1,x_2x1x2经过滤波的像素值均变为x0x_0x0,映射之后为f(x0)f(x_0)f(x0),上述数量关系如图2所示,于是

k1=f(x1)x1,k2=f(x2)x2,k0=f(x0)x0k_1=\frac{f(x_1)}{x_1},k_2=\frac{f(x_2)}{x_2},k_0=\frac{f(x_0)}{x_0} k1=x1f(x1),k2=x2f(x2),k0=x0f(x0)

于是,在没有开NR时,其tone mapping后x1x_1x1x2x_2x2的差异为:
Δ0=k2x2−k1x1\Delta_0=k_2x_2-k_1x_1 Δ0=k2x2k1x1

开NR后,其tone mapping后x1x_1x1x2x_2x2的差异为:
Δ1=k0x2−k0x1\Delta_1=k_0x_2-k_0x_1 Δ1=k0x2k0x1
比较Δ0\Delta_0Δ0Δ1\Delta_1Δ1的大小:
Δ1−Δ0=f(x0)x0(x2−x1)−f(x2)−f(x1)x2−x1(x2−x1)=[f(x0)x0−f(x2)−f(x1)x2−x1](x2−x1)\Delta_1-\Delta_0=\frac{f(x_0)}{x_0}(x_2-x_1)-\frac{f(x_2)-f(x_1)}{x_2-x_1}(x_2-x_1)=[\frac{f(x_0)}{x_0}-\frac{f(x_2)-f(x_1)}{x_2-x_1}](x_2-x_1) Δ1Δ0=x0f(x0)(x2x1)x2x1f(x2)f(x1)(x2x1)=[x0f(x0)x2x1f(x2)f(x1)](x2x1)
由于x2−x1>0x_2-x_1>0x2x1>0,于是只需要讨论f(x0)x0−f(x2)−f(x1)x2−x1\frac{f(x_0)}{x_0}-\frac{f(x_2)-f(x_1)}{x_2-x_1}x0f(x0)x2x1f(x2)f(x1)的符号即可,令
m(x)=f(x0)x0−f(x2)−f(x1)x2−x1m(x)=\frac{f(x_0)}{x_0}-\frac{f(x_2)-f(x_1)}{x_2-x_1} m(x)=x0f(x0)x2x1f(x2)f(x1)
为了分析Δ1−Δ0\Delta_1-\Delta_0Δ1Δ0的符号,我们回过头来对mapping曲线f(x)f(x)f(x)做一些数学层面的条件归纳:首先f(x)f(x)f(x)为单调函数,其一阶导数f′(x)>0f^{'}(x)>0f(x)>0,其次曲线f(x)f(x)f(x)的斜率在不断减小,即其一阶导数为减函数,于是f′′(x)<0f^{''}(x)<0f′′(x)<0,此外还有f(0)=0f(0)=0f(0)=0,于是问题简化为一个简单的数学问题:
对于f(x)f(x)f(x),有f(0)=0,f′(x)>0,f′′<0f(0)=0,f^{'}(x)>0,f^{''}<0f(0)=0,f(x)>0,f′′<0,当x∈(x1,x2)x\in(x_1,x_2)x(x1,x2)时,讨论m(x)m(x)m(x)与0的大小

图3 直观判断luma降噪对mapping信号放大的影响

针对这个问题,我们先直观判断一下m(x)m(x)m(x)的符号,f(x2)−f(x1)x2−x1\frac{f(x_2)-f(x_1)}{x_2-x_1}x2x1f(x2)f(x1)(x1,f(x1))(x_1,f(x_1))(x1,f(x1))点与(x2,f(x2))(x_2,f(x_2))(x2,f(x2))连线的斜率,f(x0)x0\frac{f(x_0)}{x_0}x0f(x0)(0,0)(0,0)(0,0)点与(x0,f(x0))(x_0,f(x_0))(x0,f(x0))的斜率,从直观上看,后者大于前者,于是有m(x0)>0m(x_0)>0m(x0)>0,如图3所示;

下面证明这个判断,令g(x)=f(x)xg(x)=\frac{f(x)}{x}g(x)=xf(x),分析其单调性,
g′(x)=xf′(x)−f(x)x2g^{'}(x)=\frac{xf^{'}(x)-f(x)}{x^2} g(x)=x2xf(x)f(x)

要判定其单调性,只需判定其符号,而分母显然为正数,从而只需要分析分子,令
h(x)=xf′(x)−f(x)h(x)=xf^{'}(x)-f(x) h(x)=xf(x)f(x)

那么
h′(x)=f′(x)+xf′′(x)−f′(x)=xf′′(x)h^{'}(x)=f^{'}(x)+xf^{''}(x)-f^{'}(x)=xf^{''}(x) h(x)=f(x)+xf′′(x)f(x)=xf′′(x)
由于x>0,f′′(x)<0x>0,f^{''}(x)<0x>0,f′′(x)<0,于是h′(x)<0h^{'}(x)<0h(x)<0,从而h(x)h(x)h(x)为单调减函数,又有h(0)=0−0=0h(0)=0-0=0h(0)=00=0,所以h(x)≤0h(x)\le 0h(x)0,从而对于x∈(0,∞),g′(x)≤0x\in (0,\infty),g^{'}(x)\le 0x(0,),g(x)0,从而可知,g(x)=f(x)xg(x)=\frac{f(x)}{x}g(x)=xf(x)为减函数。
回到m(x)=f(x)x−f(x2)−f(x1)x2−x1m(x)=\frac{f(x)}{x}-\frac{f(x_2)-f(x_1)}{x_2-x_1}m(x)=xf(x)x2x1f(x2)f(x1),对于x∈(x1,x2)x\in (x_1,x_2)x(x1,x2)其最小值为
mmin=m(x2)=f(x2)x2−f(x2)−f(x1)x2−x1=x2f(x1)−x1f(x2)x2(x2−x2)m_{min}=m(x_2)=\frac{f(x_2)}{x_2}-\frac{f(x_2)-f(x_1)}{x_2-x_1}=\frac{x_2f(x_1)-x_1f(x_2)}{x_2(x_2-x_2)} mmin=m(x2)=x2f(x2)x2x1f(x2)f(x1)=x2(x2x2)x2f(x1)x1f(x2)
其分母为正数,因而只需要考虑其分子符号;对于分子x2f(x1)−x1f(x2)x_2f(x_1)-x_1f(x_2)x2f(x1)x1f(x2),将其除以 x1x2x_1x_2x1x2,不改变其符号,于是有
x2f(x1)−x1f(x2)x1x2=f(x1)x1−f(x2)x2\frac{x_2f(x_1)-x_1f(x_2)}{x_1x_2}=\frac{f(x_1)}{x_1}-\frac{f(x_2)}{x_2} x1x2x2f(x1)x1f(x2)=x1f(x1)x2f(x2)

由于前面已经分析过,g(x)=f(x)xg(x)=\frac{f(x)}{x}g(x)=xf(x)为减函数,以及x1<x2x_1<x_2x1<x2,有f(x1)x1−f(x2)x2>0\frac{f(x_1)}{x_1}-\frac{f(x_2)}{x_2}>0x1f(x1)x2f(x2)>0,从而mmin>0m_{min}>0mmin>0,又由于 x0<x2x_0<x_2x0<x2,于是m(x0)≥0m(x_0)\ge 0m(x0)0,从而Δ1−Δ0>0,Δ1Δ0>1\Delta_1-\Delta_0>0,\frac{\Delta_1}{\Delta_0}>1Δ1Δ0>0,Δ0Δ1>1,这说明luma经过滤波之后对于相同差异的输入点,其输出差异Δ1\Delta_1Δ1会比luma没经过滤波输出差异Δ0\Delta_0Δ0大;反应在图像的tone mapping中,对luma降噪相对于直接tone mapping,会放大噪声,同时也增强边缘,增加对比度,也就是图1中的现象。

下面将问题放到更一般的情况,降噪将x1x_1x1变为x3x_3x3,将x2x_2x2变为x4x_4x4,大小关系为x1<x3<x4<x2x_1<x_3<x_4<x_2x1<x3<x4<x2,在曲线上的关系如图4所示

图4 一般情况luma降噪对信号放大的影响示意图

从而k1=f(x1)x1,k2=f(x2)x2,k3=f(x3)x3,k4=f(x4)x4k_1=\frac{f(x_1)}{x_1},k_2=\frac{f(x_2)}{x_2},k_3=\frac{f(x_3)}{x_3},k_4=\frac{f(x_4)}{x_4}k1=x1f(x1),k2=x2f(x2),k3=x3f(x3),k4=x4f(x4),于是有
Δ0=f(x2)x2x2−f(x1)x1x1\Delta_0=\frac{f(x_2)}{x_2}x_2-\frac{f(x_1)}{x_1}x_1 Δ0=x2f(x2)x2x1f(x1)x1
Δ1=f(x4)x4x2−f(x3)x3x1\Delta_1=\frac{f(x_4)}{x_4}x_2-\frac{f(x_3)}{x_3}x_1 Δ1=x4f(x4)x2x3f(x3)x1

Δ1−Δ0=f(x4)x4x2−f(x3)x3x1−[f(x2)x2x2−f(x1)x1x1]=x2[f(x4)x4−f(x2)x2]+x1[f(x1)x1−f(x3)x3]\Delta_1-\Delta_0=\frac{f(x_4)}{x_4}x_2-\frac{f(x_3)}{x_3}x_1-[\frac{f(x_2)}{x_2}x_2-\frac{f(x_1)}{x_1}x_1]=x_2[\frac{f(x_4)}{x_4}-\frac{f(x_2)}{x_2}]+x_1[\frac{f(x_1)}{x_1}-\frac{f(x_3)}{x_3}] Δ1Δ0=x4f(x4)x2x3f(x3)x1[x2f(x2)x2x1f(x1)x1]=x2[x4f(x4)x2f(x2)]+x1[x1f(x1)x3f(x3)]

由于0<x1<x3<x4<x20<x_1<x_3<x_4<x_20<x1<x3<x4<x2以及g(x)=f(x)xg(x)=\frac{f(x)}{x}g(x)=xf(x)为减函数,[f(x4)x4−f(x2)x2]>0,[f(x1)x1−f(x3)x3]>0[\frac{f(x_4)}{x_4}-\frac{f(x_2)}{x_2}]>0,[\frac{f(x_1)}{x_1}-\frac{f(x_3)}{x_3}]>0[x4f(x4)x2f(x2)]>0,[x1f(x1)x3f(x3)]>0,从而Δ1−Δ0>0,Δ1Δ0>1\Delta_1-\Delta_0>0,\frac{\Delta_1}{\Delta_0}>1Δ1Δ0>0,Δ0Δ1>1;于是,对于一般情况而言,luma上降噪也会放大噪声,增强边缘,增加对比度,而且降噪强度越大,会导致luma平面越平滑,Δ1−Δ0\Delta_1-\Delta_0Δ1Δ0也变得越大,从而这种噪声放大与图像增强现象也越强。

综上,对于映射曲线满足f(x)f(x)f(x)为单调增函数,f(x)f(x)f(x)的斜率在不断减小,f(0)=0f(0)=0f(0)=0时,对luma平面降噪会放大图像中的噪声,增强边缘,增加对比度,而通常的tone mapping曲线f(x)f(x)f(x)或者整条曲线满足上述条件,或者整条曲线的一部分满足上述条件,满足上述条件的部分都会对图像进行不同程度的增强和噪声放大。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_274559.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

虚拟机设置桥接模式:静态IP

一、下载virtual box并安装系统 链接&#xff1a;https://www.virtualbox.org/ 安装并配置Ubuntu桌面版&#xff1a;https://blog.csdn.net/Zhichao_Zhang/article/details/127142410?spm1001.2014.3001.5506 安装并配置CentOS7&#xff1a;https://blog.csdn.net/csp7321711…

【学习笔记】《Writing Science》14-21

文章目录14 Energizing Writing 充满活力的写作14.1. ACTIVE VERSUS PASSIVE VOICE 主动语态和被动语态14.1.1. Controlling Perspective 控制视角14.1.2. Hiding the Actor 隐藏演员14.2. FUZZY VERBS 模糊动词14.2.1. Fuzzy Hypotheses 模糊假设14.3. NOMINALIZATIONS 名词化…

自动化测试学习(七)-正则表达式,你真的会用吗?

目录 一、正则表达式在python中如何使用 二、用正则表达式匹配更多模式 三、常用字符分类的缩写代码 总结 所谓正则表达式&#xff08;regex&#xff09;&#xff0c;就是一种模式匹配&#xff0c;学会用正则匹配&#xff0c;就可以达到事半功倍的效果。 一、正则表达式在…

本地资源检测|单规则多阈值设置功能上线

作为一款可以全面自动检测项目静态工程内各项资源、代码和设置的UWA服务&#xff0c;本地资源检测能够帮助项目组制定合理的资源与代码标准&#xff0c;及时发现潜在的性能问题和异常错误&#xff0c;建立有效的开发规范意识。 此次3.1.0版本更新&#xff0c;在优化和完善现有…

Rcpp包运行C++代码

提高 R 脚本性能的最简单、最快捷的方法是更改脚本的问题部分并用 C 重写它们。Rcpp包提供了 R 和 C 之间的接口。1. cppFunction()转换简单的C函数### 1. cppFunction()转换简单的C函数 library(Rcpp) cppFunction(codeint fibonacci(const int x){if(x < 2) return x;if(x…

项目日记:学成在线(第二天P24~p34)

1、注入的两种方式&#xff1a;Autowired、Resource&#xff08;基于类型和名称&#xff09; 相同&#xff1a; Resource和Autowired都是做bean的注入时使用 不同&#xff1a; ①Autowird 属于spring框架,默认使用类型(byType)进行注入&#xff1a;&#xff08;基于类型&#x…

堆溢出——unlink漏洞攻击(bamboobox)

题目自取&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1S9xbAWhFw0xFqFyQTACqLA?pwdvvud 提取码&#xff1a;vvud 介绍&#xff1a; 终于学到Unlink了&#xff0c;不得不说和栈的难度相比确实大了很多&#xff0c;学起来确实很淦&#xff0c;一个unlink漏洞也确…

VSCode配置git bash为默认终端

打开左下角齿轮图标 打开Settings 搜索框输入 terminal.integrated.profiles.windows, 在下方显示的内容上点击 Edit in settings.json 配置修改如下 "terminal.integrated.profiles.windows": {"PowerShell": {"source": "PowerShell&qu…

Python每日一练(20230322)

目录 1. Excel表列序号 &#x1f31f; 2. 单词拆分 &#x1f31f;&#x1f31f; 3. 删除有序数组中的重复项 II &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练…

营销即服务!怎么做小程序店铺打造优质用户体验?

随着移动互联网的快速发展&#xff0c;小程序已经成为了许多企业打造优质用户体验的重要工具。一个好的小程序店铺能够为用户提供良好的购物体验&#xff0c;提高用户满意度和转化率。那么&#xff0c;怎么做小程序店铺打造优质用户体验呢&#xff1f; 一&#xff1a;做小程序店…

Linux 信号(signal):信号的捕捉流程

目录一、程序的运行状态二、信号捕捉流程在处理信号的时候&#xff0c;其实要经过一系列流程的&#xff0c;本文就来简单介绍一下信号处理的捕捉流程。 一、程序的运行状态 程序运行状态分为内核态和用户态。程序在运行库函数、用户自定义函数等第三方函数时就会在用户态运行&…

VSCode for C/C++ 插件

VSCode for C/C 插件功能性插件C/C【千万级下载&#xff01;】必选C/C Extension Pack【千万级下载&#xff01;】扩展包Code Runner【千万级下载&#xff01;必备】右键代码运行&#xff0c;格式化在终端的显示CMake、 CMake Integration、CMake Language Support、CMake Tool…

达梦数据库普通表转分区表

在生产环境中&#xff0c;数据库中一开始用的是普通表&#xff0c;但随着时间推移&#xff0c;数据量越来越大&#xff0c;可以考虑将普通表转换为分区表&#xff0c;提升数据库的性能。本文将介绍在DM8数据库中&#xff0c;实现将普通表转换为分区表的方法。环境说明数据库版本…

SpringBoot基础教程

springboot基础 一、springboot介绍 Spring Boot 提供一种快速使用spring的方式&#xff0c;基于约定大于配置的思想&#xff0c;可以让开发者不必在配置与逻辑业务中来回进行思维切换&#xff0c;全身心的投入到业务的代码编写中&#xff0c;从而大大提高了开发效率。2014年…

TypeScript的枚举与类型约束

● 上一章我们讲了 TS 的接口 ● 这一章, 我们就来聊一聊 TS 的枚举和约束 枚举 认识枚举 ● 在很多计算机语言中都有枚举的概念, 但是 JS 中是没有枚举这个概念的, 为了弥补这个缺憾 在 TS 加入了枚举类型 ● 什么是枚举呢 ? 枚举( mei ju ) : 枚举的意思就是一一列举,…

PyTorch 深度学习实战 | 基于 ResNet 的花卉图片分类

“工欲善其事&#xff0c;必先利其器”。如果直接使用 Python 完成模型的构建、导出等工作&#xff0c;势必会耗费相当多的时间&#xff0c;而且大部分工作都是深度学习中共同拥有的部分&#xff0c;即重复工作。所以本案例为了快速实现效果&#xff0c;就直接使用将这些共有部…

【C++初阶】六、模板初阶(函数模板+类模板)

文章目录泛型编程函数模板函数模板的概念函数模板的格式函数模板的原理函数模板的实例化模板参数的匹配原则类模板类模板的定义格式类模板的实例化泛型编程 引入 - 通用的交换函数 如果让你编写一个函数&#xff0c;用于两个数的交换。在C语言中&#xff0c;我们会用如下方法…

我让Chat GPT准备了几份SAP 顾问英文面试自我介绍的模板,大家感受一下

有个朋友说有个面试要用英文来做自我介绍&#xff0c;我灵机一动&#xff0c;不如让Chat GPT准备了几份SAP 顾问英文面试自我介绍的模板&#xff0c;大家感受一下。我看下来感觉写的还是中规中矩&#xff0c;可以一用&#xff0c;。 模板1 Sure, I can help you with that! Her…

【Java学习笔记】39.Java 多线程编程

Java 多线程编程 Java 给多线程编程提供了内置的支持。 一条线程指的是进程中一个单一顺序的控制流&#xff0c;一个进程中可以并发多个线程&#xff0c;每条线程并行执行不同的任务。 多线程是多任务的一种特别的形式&#xff0c;但多线程使用了更小的资源开销。 这里定义和…

navigator 拓宽前端视野

前言&#x1f490; 写本文的起因是最近做了一个共享屏幕在线演示ppt的需求&#xff0c;发现了navigator的新大陆。原来web端开启屏幕共享是如此的简单&#xff0c;在接触之前还以为是多么高大上的功能,需求评审时内心还有些慌张。 人总是对自己不了解的东西心生恐惧&#x1f6…