引导滤波 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​=ak​Ii​+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​(ak​Ii​+bk​−pi​)2argmin\sum_{w_k}​(a_k​I_i​+b_k​−p_i​)^2 argminwk​∑​​(ak​​Ii​​+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​∑​((ak​Ii​+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(ak​Ii​+bk​−pi​)Ii​+2ϵak​)=0bk​∂E​=iϵwk​∑​(2(ak​Ii​+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​=w1​iϵwk​∑​(pi​−ak​Ii​)

    • 为了简化表达,把1w∑iϵwkpi\frac{1}{w}\sum_{i\epsilon w_k}p_iw1​∑iϵwk​​pi​表示为$\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​ˉ​−ak​Ik​ˉ​

  • 根据偏导,求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(ak​Ii​+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​∑​(ak​Ii2​+bk​Ii​−pi​Ii​+ϵ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​∑​(ak​Ii2​+(pk​ˉ​−ak​Ik​ˉ​)Ii​−pi​Ii​+ϵ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) ak​iϵwk​∑​(Ii​−Ik​ˉ​)Ii​+ϵ)=iϵwk​∑​(pi​Ii​−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​​(pi​Ii​−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​​(pi​Ii​−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+ϵpi​Ii​ˉ​−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​ˉ​−ak​Ik​ˉ​ak​=σ2+ϵpi​Ii​ˉ​−pk​ˉ​Ii​ˉ​​

    • 结论:qi=akIi+bkq_i=a_kI_i+b_kqi​=ak​Ii​+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​=w1​kϵwk​∑​ak​Ii​+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)

实验效果图

  • 原图

  • 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相关推荐

  1. 引导滤波(guided filter)理解和代码实现

    最近在学习图片的滤波和去噪的相关知识,查阅了一些资料参考了一些博客,这里做一个整合+理解.参考的博客资料在文末. 引入普通滤波的概念 假设输入图像为p,滤波窗口为wk,经过滤波后的输出图像为q,那么q ...

  2. 详解——导向滤波(Guided Filter)和快速导向滤波

    文章目录 导读 原理推导 导向滤波的应用 导向滤波的实现 快速导向滤波的实现 算法效果 代码 参考 导读 在图像滤波算法中,导向滤波.双边滤波.最小二乘滤波并称三大保边滤波器,他们是各向异性滤波器.相 ...

  3. 导向滤波python_导向滤波(Guided Filter)简要介绍

    1.介绍 提到导向滤波,首先想到的是"何恺明",他的确是真大神,在图像领域,是中国人的骄傲,深度学习流行的时候,也是提出各种新算法,比如ResNets,而最近两年,深度学习的发展已 ...

  4. 引导滤波(guided image filtering)原理及C++实现

    引导滤波 引导滤波是由何凯明等人与2010年提出,它本质上具有O(N)复杂度,相对于双边滤波有更好的边缘保持特性,且不会出现梯度反转现象.在不同引导图像的引导下,可广泛应用于降噪.去雾.高动态范围压缩 ...

  5. 快速导向滤波 matlab,导向滤波小结:从导向滤波(guided filter)到快速导向滤波(fast guide filter)的原理,应用及opencv实现代码...

    http://blog.csdn.net/kuweicai/article/details/78385871 1. 导向滤波简介 导向滤波是何凯明在学生时代提出的一个保边滤波(edge-preserv ...

  6. 导向滤波小结:从导向滤波(guided filter)到快速导向滤波(fast guide filter)的原理,应用及opencv实现代码

    1. 导向滤波简介 导向滤波是何凯明在学生时代提出的一个保边滤波(edge-preserving smoothing)算法.何凯明在cv圈应该算是名人了,学生时代关于图像去雾的研究就以第一作者的身份获 ...

  7. 2019 DGF(深度引导滤波网络) 相关的论文笔记

    文章目录 *Fast End-to-End Trainable Guided Filter* *KeyPoint* *overview* *keywords* *extends* 摘要 引言 相关工作 ...

  8. 传统图像去噪方法(二)之引导滤波

    各向同性滤波 我们知道对于滤波器而言,在均值滤波中W时是1/n,n是w中所有像素个数.在高斯平滑中,W服从二维的高斯分布. 但是无论是均值滤波还是高斯滤波,他们都有一个共同的弱点,它们都属于各向同性滤 ...

  9. 图像滤波【一】:从高斯滤波到引导滤波

    前言:最近在做一个图像的作业, 要求python实现双边滤波和引导双边滤波. 可以使用opencv,numpy.不能用opecv增强库(ximageproc之类的就用不了啦), 这里记录一下学习心得. ...

  10. 【OpenCV 例程200篇】61. 导向滤波(Guided filter)

    [OpenCV 例程200篇]61. 导向滤波(Guided filter) 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续 ...

最新文章

  1. 《数学之美》第4章 谈谈分词
  2. 数字证书应用综合揭秘(包括证书生成、加密、解密、签名、验签)
  3. FPGA+DSP SRIO通信(一)——DSP端参数设置(通道)
  4. 一友人昨夜接到电话,发生何事
  5. php 不同时区时间转换,在PHP中将DateTime字符串转换为不同的时区
  6. “我来管管看”系列:采购误差缘何而来?
  7. 2020 OPPO 开发者大会重磅推出 ColorOS 11,适配机型达 33 种
  8. 我们来看看load data infile 需要注意的一些地方
  9. StarUML 3 中文文档 构件图
  10. Cocos2D-x设计模式发掘之二:二段构建模式 -----------cocos2d-x3.0正式版本(7.22)
  11. 会议室管理前端页面_12个非常不错的免费HTML后台管理模板
  12. kappa一致性检验教程_诊断试验的一致性检验-Kappa
  13. 现有的评分和排名算法
  14. 如何简单实用AWS的 AWS Educate Starter Account 账号玩转aws云
  15. 虚拟化在防泄密领域的缺点
  16. c语言打印红色爱心(程序员的浪漫)
  17. 基于机智云平台的泵站智能巡检系统
  18. 携程违反银联禁止记录CVC码的规定 可能面临重罚
  19. VMware的 Mount虚拟光驱问题
  20. Build a web app fast: Python, HTML JavaScript resources

热门文章

  1. android wear刷机,1分钟搞定刷机 百度DuWear手表系统公测版上线
  2. 软件工程师必须掌握的知识结构
  3. WorldPress中文乱码问题
  4. 雨落江满泛涟漪 尘拂心海滤情音 相思入云寄清风
  5. Vue中使用swiper构建简易轮播图
  6. 永久免费的数据库防火墙(堡垒机)
  7. 1--request模块
  8. 视频带宽(码流_分辨率_帧率)
  9. C++ 侯捷视频学习(草稿)
  10. 1132: 数字字符统计