最近在学习图片的滤波和去噪的相关知识,查阅了一些资料参考了一些博客,这里做一个整合+理解。参考的博客资料在文末。

引入普通滤波的概念

假设输入图像为p,滤波窗口为wk,经过滤波后的输出图像为q,那么q图的第i个像素是由输入图p中以第i个像素为中心的窗口内的所有像素加权平均得到的,即:


从公式上来看,普通的例如均值滤波与引导滤波区别在于权重的选择上,也就是Wij(I)的不同。

引导滤波

看到的最多的引导滤波的过程图如图所示:

我们逐步来看这个图,首先引导滤波有两个输入,原始图p和引导图I。经过滤波后有一个输出q,滤波窗口为Wk.整个引导滤波器的表示为公式:

其中j∈Wk,j仅仅是在某一个窗口内的下标,Wij(I)是仅仅与引导图I相关的加权平均的那个权重。
首先我们看到引导图I,文章有一个重要的假设,就是使输入引导图I与输出图q之间是一个线性关系,表示为:

其中ak和bk表示常数参数,注意一个窗口Wk只对应一对常熟参数ak和bk。例如以第一个像素为中心的窗口W1的参数为a1,b1。以第二个像素为中心的窗口w2的参数为a2,b2.
也就是总流程图中的这一部分:

图中还对线性关系两边求导得到

这就表示引导图的梯度变化与结果图的梯度变化是线性关系的,假设在引导图中我们知道A区是平滑区域,B区是边缘区域,显然B区梯度比A区要大,而且假设B区的梯度是A区的4倍。通过线性变换,我们得到了输出图q中的A区和B区梯度变为引导图的a倍,但是B区的梯度仍然是A区的4倍,同一幅图中的A和B之间的梯度关系没有被扭曲,通俗来讲就是引导图告诉了输出图哪里是平滑区域,哪里是边缘区域。这就是引导图的作用。
我们已知了引导图I,如果能求得系数ab的值,就可以计算出输出了。这时候就需要引入另外一个概念:噪声

利用最小二乘法就能计算出参数a,b。

通过上述的最小二乘法可以计算出参数a,b的表达式

具体详细的公式推导可以参考链接:
https://blog.csdn.net/weixin_43194305/article/details/88959183
计算出了参数之后,我们就可以将线性模型应用到整个图像的滤波窗口,但一个像素会被多个窗口包含,如下图,若Wk大小为3x3,则除边缘区域的外的每个点会被包含在9个窗口里,因此对于同一个像素,会得到|w|个输出qi。

我们最后需要用的参数a,b就是所求的平均的参数a,b。
最后将参数代回线性关系公式中,就可以得到输出,过程如下图所示

matlab实现代码在这里
链接:https://pan.baidu.com/s/12B2s8FuvFH1MBQPKhlz5rg
提取码:oxdw

压缩包中的文件如图所示

需要注意的是,需要写两个函数文件:boxfilter.m和guidedfilter.m。其中guidedfilter.m需要调用boxfilter.m函数,GuidedFilter_preserveEdge.m是主函数,用来调用guidedfilter函数,本代码用的输入图和引导图是同一张cat.bmp。演示的是保边效果,可以更换引导图和输入图。

引导滤波(guided filter)理解和代码实现相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. 引导滤波matlab代码实现,引导图滤波(Guided Image Filtering)原理以及OpenCV实现

    引导图滤波器是一种自适应权重滤波器,能够在平滑图像的同时起到保持边界的作用,具体公式推导请查阅原文献<Guided Image Filtering>以及matlab源码:http://ka ...

最新文章

  1. centOS外部浏览器无法访问tomcat8000端口解决办法
  2. inode与block详解
  3. DevOps:软件架构师行动指南1.7 障碍
  4. 讨论下直博和读完硕士再读博,在能力上的差距
  5. Java接受带文件的表单_Javaweb使用getPart接收表单文件过程解析
  6. top命令---Linux学习笔记
  7. mysql-5.7 持久化统计信息详解
  8. Linux 应用---make及makefile的编写
  9. 从“卡脖子”到“主导”,国产数据库 40 年的演变!
  10. 恶狗变萌犬,路人妹子变老婆:日本开源GAN“插件”,想P哪里点哪里 | Demo
  11. debian 安装_如何在 Debian/Ubuntu 系统中检查程序包是否安装?
  12. 每周荐书:高可用架构、解忧程序员、财富自由之路(评论送书)
  13. 为什么CPU的使用率总是100%
  14. 聊聊spring cloud的HystrixCircuitBreakerConfiguration
  15. python数学符号读法大全_数学符号读法大全
  16. 个人项目-数独(Python实现)——从解数独到写游戏
  17. 三菱化学控股公司:关于代表执行董事的人事变动通知
  18. 最后1天,购票渠道即将关闭!Unite 2018开发者大会全日程公布
  19. 内蒙古大学计算机考研892,893计算机考研真题分享
  20. 可以制作地图的平台,最好的可以编辑的地图工具

热门文章

  1. npm丢失报错Error: Cannot find module ‘D:\node_modules\npm\bin\npm-cli.js‘
  2. 史上最全CCA Spark and Hadoop Developer (CCA175) 开发者认证考试信息
  3. 2023王道考研数据结构第一章---基本概念
  4. 878. 第 N 个神奇数字 数学+二分
  5. Android菜单设计指南
  6. 教程2,工厂方法实现发奖,抽象工厂实现redis集群,JDK动态代理应用
  7. Apr.11st 数字图像处理连载(02)
  8. arcgis导入excel数据失败
  9. 论文分享——推荐算法
  10. 负载均衡中SNA的ip-can(iscs使用示例i)