美颜技术---引导滤波 Guided Filter
引导滤波 Guided Filter
paper: Guided Image Filtering
简介
导向滤波是何恺明2013年的杰作,相比于常见的滤波器,例如双边滤波(BF),PS的表面模糊,拥有更好的保边效果和性能优势。导向滤波除了能做保边滤波,在图像去雾,图像抠图均有应用
初步定义
将引导滤波定义为一个线性滤波
输入图像qqq, 引导图像III, 滤波后输出图像qqq
数学模型
qi=∑jWij(I)pjq_i=\sum_{j}{W_{ij}(I)p_j} qi=j∑Wij(I)pj
其中iii 和jjj分别表示像素下标,WijW{ij}Wij是与引导图像III 相关的滤波核函数,滤波输出一个加权平均值
重要假设
假设一:导向滤波的一个重要假设是输出图像qqq和引导图像III在滤波窗口wkw_kwk上存在局部线性关系:
qi=akIi+bk,∀i∈wkq_i=a_kI_i+b_k,∀i∈w_k qi=akIi+bk,∀i∈wk
对于一个以kkk为边长的方形窗口wkw_kwk,aka_kak和bkb_kbk是根据窗口的某些特征求得的常量系数,对这个公式两边求导,得到$ ∇ q = a ∇ I ,两边的梯度呈线性关系,该特性保证了输出图像,两边的梯度呈线性关系,该特性保证了输出图像,两边的梯度呈线性关系,该特性保证了输出图像q$的一个特性,即可以在图像边缘处保持引导图像的梯度特征。
从公式中可知,求得aka_kak和bkb_kbk两个常量,即可得到输出图像qiq_iqi
假设二:输入图像的非边缘区域中不平滑的区域,视为是有噪声的。
该假设是为了求解aka_kak和bkb_kbk而设立的
因此提出数学模型
qi=pi−niq_i=p_i-ni qi=pi−ni
其中qiq_iqi为输出像素,pip_ipi为输入像素,nin_ini为噪声
现在要把噪声最小化
建立数学模型:
最小二乘法可以表示为:
argmin∑wk(akIi+bk−pi)2argmin\sum_{w_k}(a_kI_i+b_k−p_i)^2 argminwk∑(akIi+bk−pi)2
为了不让aka_kak过大,因此设置一个正则化参数ϵ\epsilonϵ,建立滤波窗口内的损失函数:
- E(ak,bk)=∑iϵwk((akIi+bk−pi)2+ϵak2).E(a_k,b_k)=\sum_{i\epsilon w_k}((a_kI_i+b_k−p_i)^2+ϵa_k^2). E(ak,bk)=iϵwk∑((akIi+bk−pi)2+ϵak2).
求最优解
对aka_kak, bkb_kbk求偏导
- ∂Eak=∑iϵwk(2(akIi+bk−pi)Ii+2ϵak)=0∂Ebk=∑iϵwk(2(akIi+bk−pi))=0\frac{\partial E}{a_k}=\sum_{i \epsilon w_k}(2(a_kI_i+b_k-p_i)I_i+2\epsilon a_k)=0 \\ \frac{\partial E}{b_k}=\sum_{i \epsilon w_k}(2(a_kI_i+b_k-p_i))=0 ak∂E=iϵwk∑(2(akIi+bk−pi)Ii+2ϵak)=0bk∂E=iϵwk∑(2(akIi+bk−pi))=0
根据偏导,求bkb_kbk
bk=1w∑iϵwk(pi−akIi)b_k=\frac{1}{w}\sum_{i\epsilon w_k}(p_i-a_kI_i) bk=w1iϵwk∑(pi−akIi)
为了简化表达,把1w∑iϵwkpi\frac{1}{w}\sum_{i\epsilon w_k}p_iw1∑iϵwkpi表示为$\bar{p_k} ,,,\frac{1}{w}\sum_{i\epsilon w_k}I_i表示为表示为表示为\bar{I_k} $
bk=pkˉ−akIkˉb_k=\bar{p_k}-a_k\bar{I_k} bk=pkˉ−akIkˉ
根据偏导,求aka_kak
-
∑iϵwk(2(akIi+bk−pi)Ii+2ϵak)=0\sum_{i \epsilon w_k}(2(a_kI_i+b_k-p_i)I_i+2\epsilon a_k)=0 iϵwk∑(2(akIi+bk−pi)Ii+2ϵak)=0
==>
- ∑iϵwk(akIi2+bkIi−piIi+ϵak)=0\sum_{i \epsilon w_k}(a_kI_i^2+b_kI_i-p_iI_i+\epsilon a_k)=0 iϵwk∑(akIi2+bkIi−piIi+ϵak)=0
把bkb_kbk代入式子==>
- ∑iϵwk(akIi2+(pkˉ−akIkˉ)Ii−piIi+ϵak)=0\sum_{i \epsilon w_k}(a_kI_i^2+(\bar{p_k}-a_k\bar{I_k})I_i-p_iI_i+\epsilon a_k)=0 iϵwk∑(akIi2+(pkˉ−akIkˉ)Ii−piIi+ϵak)=0
把常量系数aka_kak提取出来==>
- ak∑iϵwk(Ii−Ikˉ)Ii+ϵ)=∑iϵwk(piIi−pkˉIi)a_k\sum_{i \epsilon w_k}(I_i-\bar{I_k})I_i+\epsilon)=\sum_{i \epsilon w_k}(p_iI_i-\bar{p_k}I_i) akiϵwk∑(Ii−Ikˉ)Ii+ϵ)=iϵwk∑(piIi−pkˉIi)
==>
ak=∑iϵwk(piIi−pkˉIi)∑iϵwk(Ii2−IkˉIi+ϵ)a_k=\frac{\sum_{i \epsilon w_k}(p_iI_i-\bar{p_k}I_i)}{\sum_{i \epsilon w_k}(I_i^2-\bar{I_k}I_i+\epsilon)} ak=∑iϵwk(Ii2−IkˉIi+ϵ)∑iϵwk(piIi−pkˉIi)
根据方差的原理和推导公式,这里把Ii2−IkˉIiI_i^2-\bar{I_k}I_iIi2−IkˉIi进似看成方差σ2\sigma^2σ2
ak=∑iϵwk(piIi−pkˉIi)∑iϵwk(σ2+ϵ)a_k=\frac{\sum_{i \epsilon w_k}(p_iI_i-\bar{p_k}I_i)}{\sum_{i \epsilon w_k}(\sigma ^2+\epsilon)} ak=∑iϵwk(σ2+ϵ)∑iϵwk(piIi−pkˉIi)
进一步化简
ak=piIiˉ−pkˉIiˉσ2+ϵa_k=\frac{\bar{p_iI_i}-\bar{p_k}\bar{I_i}}{\sigma ^2+\epsilon} ak=σ2+ϵpiIiˉ−pkˉIiˉ
得出结论
bk=pkˉ−akIkˉak=piIiˉ−pkˉIiˉσ2+ϵb_k=\bar{p_k}-a_k\bar{I_k} \\ a_k=\frac{\bar{p_iI_i}-\bar{p_k}\bar{I_i}}{\sigma ^2+\epsilon} bk=pkˉ−akIkˉak=σ2+ϵpiIiˉ−pkˉIiˉ
结论:qi=akIi+bkq_i=a_kI_i+b_kqi=akIi+bk
公式推导结束
优化结果
原因:由于ak,bka_k,b_kak,bk是根据某一个窗口求得的值,但是对于一个像素,是有多个窗口进行重叠了,所以要求得一个像素的ak,bka_k,b_kak,bk值,需要考虑与该像素有关的所有重叠窗口。
优化策略:
- 对与中心像素有关的重叠窗口求得的ak,bka_k,b_kak,bk值进行加权平均,具体操作是使用均值滤波器。
优化后公式
- qi=1w∑kϵwkakIi+biq_i=\frac{1}{w}\sum_{k\epsilon w_k}a_kI_i+b_i qi=w1kϵwk∑akIi+bi
算法流程
调参调节
对于该算法,当 I=pI=pI=p时,即输入图像和引导图像是同一副图像时,该算法即成为一个边缘保持滤波器。同时,方程的解也可作如下表示
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mtnORW3Q-1657358757822)(C:\Users\EDY\Desktop\美颜与滤镜\images\引导滤波\image-20220709163344084.png)]
- ϵ\epsilonϵ相当于界定平滑预取和边缘区域的阈值
- 情况一: 对于平坦区域,是低方差区域,方差远小于ϵ\epsilonϵ。从而$a_k\approx 0 ,,,b_k\approx \bar{p_k}$,相当于在该区域做了均值滤波
- 情况二: 对于边缘区域,是高方差区域,方差远小于ϵ\epsilonϵ。从而$a_k\approx 1 ,,,b_k\approx 0$,相当于在该区域保持了原有梯度
上面时论文里说的情况,根据实际的调参情况,更通俗的调参说明
- 两个参数
- 均值滤波核尺寸
- 大尺寸核,可以去除大尺寸斑点
- 小尺寸核,磨皮细腻,可以去除小尺寸斑点
- 正则项ϵ\epsilonϵ
- 衡量了滤波时的边缘的模糊程度
- 越大,边缘越模糊,越小,边缘越清晰
- 均值滤波核尺寸
算法优势
与双边滤波对比
1.双边滤波有梯度反转现象,而导向滤波可以完好的保留图像原有的梯度
从图中可以观察到,双边滤波梯度反转现象可以很明显的看到,即在边缘区域,图像原本的斜线上升梯度在进行双边滤波后,图像的梯度不再是原有的斜线,而是出现了梯度波动,图像没有良好的保持原有梯度
而对图像进行导向滤波后,滤波后的图像的梯度还能保持良好
2.速度上的优势,双边滤波的时间复杂度为O(nk2)O(nk^2)O(nk2),而导向滤波的时间复杂度O(n)O(n)O(n),n表示图像像素数量,k表示滤波核的尺寸。
- 导向滤波在均值滤波时候也是涉及到滤波核的尺寸,为什么时间复杂度为O(n)O(n)O(n)?
- 均值滤波器可以被优化为O(n)
- 导向滤波在均值滤波时候也是涉及到滤波核的尺寸,为什么时间复杂度为O(n)O(n)O(n)?
实验效果图
- 原图
winSize=15winSize=15winSize=15, ϵ=0.005\epsilon=0.005ϵ=0.005
winSize=15winSize=15winSize=15, ϵ=0.015\epsilon=0.015ϵ=0.015
- 原图
- winSize=25winSize=25winSize=25, ϵ=0.005\epsilon=0.005ϵ=0.005
- winSize=25winSize=25winSize=25, ϵ=0.015\epsilon=0.015ϵ=0.015
美颜技术---引导滤波 Guided Filter相关推荐
- 引导滤波(guided filter)理解和代码实现
最近在学习图片的滤波和去噪的相关知识,查阅了一些资料参考了一些博客,这里做一个整合+理解.参考的博客资料在文末. 引入普通滤波的概念 假设输入图像为p,滤波窗口为wk,经过滤波后的输出图像为q,那么q ...
- 详解——导向滤波(Guided Filter)和快速导向滤波
文章目录 导读 原理推导 导向滤波的应用 导向滤波的实现 快速导向滤波的实现 算法效果 代码 参考 导读 在图像滤波算法中,导向滤波.双边滤波.最小二乘滤波并称三大保边滤波器,他们是各向异性滤波器.相 ...
- 导向滤波python_导向滤波(Guided Filter)简要介绍
1.介绍 提到导向滤波,首先想到的是"何恺明",他的确是真大神,在图像领域,是中国人的骄傲,深度学习流行的时候,也是提出各种新算法,比如ResNets,而最近两年,深度学习的发展已 ...
- 引导滤波(guided image filtering)原理及C++实现
引导滤波 引导滤波是由何凯明等人与2010年提出,它本质上具有O(N)复杂度,相对于双边滤波有更好的边缘保持特性,且不会出现梯度反转现象.在不同引导图像的引导下,可广泛应用于降噪.去雾.高动态范围压缩 ...
- 快速导向滤波 matlab,导向滤波小结:从导向滤波(guided filter)到快速导向滤波(fast guide filter)的原理,应用及opencv实现代码...
http://blog.csdn.net/kuweicai/article/details/78385871 1. 导向滤波简介 导向滤波是何凯明在学生时代提出的一个保边滤波(edge-preserv ...
- 导向滤波小结:从导向滤波(guided filter)到快速导向滤波(fast guide filter)的原理,应用及opencv实现代码
1. 导向滤波简介 导向滤波是何凯明在学生时代提出的一个保边滤波(edge-preserving smoothing)算法.何凯明在cv圈应该算是名人了,学生时代关于图像去雾的研究就以第一作者的身份获 ...
- 2019 DGF(深度引导滤波网络) 相关的论文笔记
文章目录 *Fast End-to-End Trainable Guided Filter* *KeyPoint* *overview* *keywords* *extends* 摘要 引言 相关工作 ...
- 传统图像去噪方法(二)之引导滤波
各向同性滤波 我们知道对于滤波器而言,在均值滤波中W时是1/n,n是w中所有像素个数.在高斯平滑中,W服从二维的高斯分布. 但是无论是均值滤波还是高斯滤波,他们都有一个共同的弱点,它们都属于各向同性滤 ...
- 图像滤波【一】:从高斯滤波到引导滤波
前言:最近在做一个图像的作业, 要求python实现双边滤波和引导双边滤波. 可以使用opencv,numpy.不能用opecv增强库(ximageproc之类的就用不了啦), 这里记录一下学习心得. ...
- 【OpenCV 例程200篇】61. 导向滤波(Guided filter)
[OpenCV 例程200篇]61. 导向滤波(Guided filter) 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续 ...
最新文章
- 《数学之美》第4章 谈谈分词
- 数字证书应用综合揭秘(包括证书生成、加密、解密、签名、验签)
- FPGA+DSP SRIO通信(一)——DSP端参数设置(通道)
- 一友人昨夜接到电话,发生何事
- php 不同时区时间转换,在PHP中将DateTime字符串转换为不同的时区
- “我来管管看”系列:采购误差缘何而来?
- 2020 OPPO 开发者大会重磅推出 ColorOS 11,适配机型达 33 种
- 我们来看看load data infile 需要注意的一些地方
- StarUML 3 中文文档 构件图
- Cocos2D-x设计模式发掘之二:二段构建模式 -----------cocos2d-x3.0正式版本(7.22)
- 会议室管理前端页面_12个非常不错的免费HTML后台管理模板
- kappa一致性检验教程_诊断试验的一致性检验-Kappa
- 现有的评分和排名算法
- 如何简单实用AWS的 AWS Educate Starter Account 账号玩转aws云
- 虚拟化在防泄密领域的缺点
- c语言打印红色爱心(程序员的浪漫)
- 基于机智云平台的泵站智能巡检系统
- 携程违反银联禁止记录CVC码的规定 可能面临重罚
- VMware的 Mount虚拟光驱问题
- Build a web app fast: Python, HTML JavaScript resources