• 一种新颖的保边滤波——Sub Window Filtering


    分享2019 CVPR的一篇图像滤波算法论文。这个算法的新颖之处在于:不管传统的滤波器保不保边,运用了Side Window后都可以保边。

    基本思路

    经典滤波算法基本都是:以某个像素点为中心,按照滤波半径,把这个包括像素点和其邻域加权线性组合得到输出,一般公式如下:
    在这里插入图片描述
    Ω是以像素点 i 为中心的滤波窗口,w是滤波权值,q是原图像素值,I’是输出结果。但是这样以一个像素为中心去滤波会导致的问题是,如果一个像素点处在边缘位置(这里的边缘不是指图片的大小边界,而是指图像中物体的边缘)的话,以像素为中心去滤波会导致滤波结果的边缘部分变模糊。
    论文中为了分析方便讨论了三种典型的边缘,分别是图中的 (a)阶梯状边缘、(b)斜坡状边缘和©屋顶状边缘。
    在这里插入图片描述

    根据泰勒展开公式分析,得出结论:如果一个像素点处于图像中的边缘位置,那么滤波的时候就应该把滤波器的边缘和该像素点对齐,而不是把滤波器的中心和该像素点对齐。受此启发,论文作者提出了一个新的保边滤波策略:就是把每个滤波像素点都当成是潜在的边缘点,然后对于每个待滤波的像素点,生成几种不同的滤波子窗口,然后把这些滤波窗口的边缘或者角点位置和该像素点对齐,然后滤波得到结果,最后根据把这些子窗口的滤波之后的最佳重构结果作为最终的滤波结果。
    文中提出了8个方向的滤波窗口,分别是上、下,左、右、左上、右上、左下和右下
    在这里插入图片描述

    side window filter 的核心算法流程如下:
    在这里插入图片描述

    论文中又详细分析了 box filter 和 side window box filter 对于上面提到的三种经典边缘的滤波之后的保留情况。文中给出分析的图表如下:
    在这里插入图片描述

    论文中的一些效果图
    在这里插入图片描述

    代码实现

    用C++和OpenCV实现Sub WIndow Filter 与均值滤波的结合算法。对下图进行滤波
    在这里插入图片描述
    迭代十次的均值滤波
    在这里插入图片描述
    迭代十次,加了Sub Window Filtering 的均值滤波在这里插入图片描述

    需要源代码的,请关注+点赞+留言。

  • 相关阅读:
    sql表关联查询,表查询出数据插入到另一张,使用正则查询,查询结果集转换为JSON数据
    C语言标准库函数qsort( )——数据排序
    linux(全志F1C100S/F1C200S)系列03:USB驱动移植,hub支持
    Spark读取多目录
    Python 进阶语法:os
    物联网环境中基于深度学习的差分隐私预算优化方法
    【Linux】基础IO之文件操作(文件fd)——针对被打开的文件
    责任链模式
    【腾讯云原生降本增效大讲堂】Caelus全场景在离线混部
    使用NodeList
  • 原文地址:https://blog.csdn.net/webzhuce/article/details/126826563