千家信息网

引导图滤波原理以及OpenCV实现是怎样的

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章将为大家详细讲解有关引导图滤波原理以及OpenCV实现是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。引导图滤波器是一种自适应权重滤波器
千家信息网最后更新 2025年12月02日引导图滤波原理以及OpenCV实现是怎样的

这篇文章将为大家详细讲解有关引导图滤波原理以及OpenCV实现是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

引导图滤波器是一种自适应权重滤波器,能够在平滑图像的同时起到保持边界的作用。这里只说一下自适应权重原理、C++实现灰度图像以及彩色图像的引导图滤波、验证结果。

  • 自适应权重原理

    引导图滤波作为一种线性滤波器,可以简单定义为如下形式:

    其中I是引导图像(guided Image),P是输入的待滤波图像,Q是滤波后的输出图像,W是根据引导图I确定的权重值。权重值W可以用下式表示(原文献有详细推导):

    μk是窗口内像素点的均值,Ii和Ij指相邻两个像素点的值,σk代表窗口内像素点的方差,ε是一个惩罚值。自适应权重可以根据上式分析得到:Ii和Ij在边界两侧时,(Ii-μk)和(Ij-μk)异号,否则,则同号。而异号时的权重值将远远小于同号时的权重值,这样处于平坦区域的像素则会被加以较大的权重,平滑效果效果更明显,而处于边界两侧的像素则会被加以较小的权重,平滑效果较弱,能够起到保持边界的效果。
    惩罚值ε对滤波效果影响也很大,当ε值很小时,滤波如前面所述;当ε值很大时,权重的计算公式将近似为一个均值滤波器,平滑效果会更明显。


    同样也可以根据线性滤波公式来看引导图滤波的自适应权重原理,局部线性滤波模型公式如下:

    I指引导图像,Q是输出图像,ak和bk两个系数根据引导图I和输入图像P共同决定。将上式两边求梯度,可以得到▽q=a*▽I,即输出图像的梯度信息完全由引导图像的梯度信息决定,当引导图中有边界时,输出图像中对应位置也会有边界。而a和b的值将会决定梯度信息和平滑信息的权重大小。
    通过观察a和b的公式,a的分子为I和P的协方差,分母部分为I的方差加上截断值ε;b的值为P的均值减去a乘以I的均值。可以看出当a值很小时,b约等于窗口内像素点的均值pk,近似于均值滤波;而当a值很大时,输出则主要取决于a*▽I的大小,梯度信息能够得到保留。

  • C++实现灰度图像以及彩色图像的引导图滤波
    根据原文献中提供的伪代码,不难用C++实现引导图滤波算法。伪代码如下:


    不同之处在于求a时将原来的方差σ替换为协方差3x3矩阵∑k,表示如下:

    U是3x3单位矩阵,求出来的a将不再是一个值,而是一个1*3的向量,然后求b。a为1*3的向量,μk为3*1的向量,相乘后b为一常量,由此可以求得常量b的值。

    这里又分为两种情况:
    ①输入图为单通道:按照上述步骤计算即可。
    ②输入图为三通道:先分离三个通道,对每个通道进行上述滤波操作,然后合并通道即可。

    注:引导图为彩色图比引导图为灰度图,边界保护更加明显,见原文。

    • 效果验证

    代码里面求均值部分,可以由OpenCV中的boxFilter()函数实现,或者blur()函数实现。总之是一个均值滤波器,之所以与窗口大小无关,是因为使用直方图实现的均值滤波,能够大大降低运算时间。VS2015+OpenCV3.4.0实现的代码放在我的码云code上:https://gitee.com/rxdj/guidedFilter.git。
    主要输入参数就是引导图I,输入图P,窗口半径r,截断值ε,输出参数为滤波后图像Q。引导图I和输入图像P可以相同,也可以不同,比如stereo matching中常常用原参考图像作为引导图,对代价空间图进行引导图滤波以实现代价聚合。这样能尽量保留原图像边界区域的匹配代价,而平滑平坦区域的匹配代价。
    (注:文献中的代码是通过matlab编写的,matlab中读取图像时会自动将图像归一化到0-1,因此截断值ε的设置也对应小很多,比如0.1,0.01等。而本文中读取图像后未进行归一化操作,所以截断值ε的设置会有不同。如果需要归一化,则自行读取图像后除以255即可)。

    1. 单通道灰度图原图


      改变截断值ε
      r=10, ε=0 r=10, ε=100


      r=10 , ε=2000 r=10, ε=8000


      改变窗口半径r
      r=0, ε=500 r=5, ε=500



    r=10, ε=500 r=20, ε=500

    1. 三通道彩色图
      原图


    • 快速引导图滤波算法
      快速引导图滤波算法见。快速的地方主要是采用了图像金字塔思想。步骤如下:

    1. 对引导图像I和输入图像P进行1/s的降采样,得到I', P';

    2. 利用I'和P'计算系数a和b,并计算输出图像Q';

    3. 将Q'进行s倍的上采样得到最终输出图像Q。

    由于计算部分是降采样的图像,运算量会大大减小,而不会引入明显的失真,因此成为快速引导图滤波。代码见上述码云code链接的fastGuidedFilter分支。

    关于引导图滤波原理以及OpenCV实现是怎样的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

图像 权重 均值 边界 输入 输出 平滑 代码 像素 效果 原理 信息 梯度 滤波器 通道 明显 代价 公式 彩色 灰度 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 徐汇区个人数据库服务商销售价格 硬件编程和软件开发的薪资区别 设置web服务器的实验报告 未来之夜为什么无法连接服务器 应届生网络技术找什么工作 泰拉瑞亚新服务器在哪里 超融合为什么要3台服务器 软件开发公司专题片解说词 数据库查找一条数据 80年代网络技术发展 网络技术应用书 关于网络安全知识培训的请示 华三服务器维修内部图 软件开发工作很累吗 如何爆破服务器远程登录密码 数据库创建角色的关键语句 寿光市科威网络技术有限公司 网络安全法治进校园的黑板报 在哪里可以看到数据库的内容 不一样的数据库复制进去无法识别 十堰 网络安全志愿者服务 网络安全相关案件 帝国神话什么时间开新服务器 服务器排错 浙江服务器钣金机箱订做 检查U6管理服务器 数据库连接池技术选项 数据库的时间格式为 做软件开发需要的软件 淘宝是什么软件开发出来的
0