Side Window Filtering(CVPR 2019)阅读与实现

CVPR2019 Oral论文《Side Window Filtering》解读及算法 Python 实现 摘要 ​ 2019 年国际计算机视觉领域顶尖会议 CVPR 收纳了一篇来自国内学者殷慧、龚元浩及邱国平提出的一个新颖的图像滤波算法论文。文章提出了一种新型的侧窗滤波算法,解决了传统滤波算法会造成图像边缘模糊而丢失边缘信息的问题。文章名字很简短 – 《Side Window Filtering》,甚至连算法的思想也不是很复杂,但是呈现的结果却十分优秀。在拜读这篇文章之后,决定对文章做二次的解剖分析和整理,并对文中提到的部分算法进行复现,作为本学期《数字图像处理》课程的结课报告。下面是在利用 Latex 进行排 阅读详情

论文 https://arxiv.org/abs/1905.07177

主要针对图像滤波中边缘模糊的问题提出改进
由于很多图像中会遇到滤波窗口问题,因此论文中预计SWF可以得到广泛的应用

论文中认为edge两边极值不同且edge处不可导
g ( x − ϵ , y ) ≠ g ( x + ϵ , y ) g(x - \epsilon, y) \neq g(x + \epsilon, y) g(x−ϵ,y)̸​=g(x+ϵ,y)
g ′ ( x − ϵ , y ) ≠ g ′ ( x + ϵ , y ) g'(x - \epsilon, y) \neq g'(x + \epsilon, y) g′(x−ϵ,y)̸​=g′(x+ϵ,y)

依据泰勒展开式
在这里插入图片描述

只展开到一阶
g ( x − 2 ϵ , y ) ≈ g ( x − ϵ , y ) + g ′ ( x − ϵ , y ) ( − ϵ ) g(x - 2\epsilon, y) \approx g(x - \epsilon, y) + g'(x - \epsilon, y)(-\epsilon) g(x−2ϵ,y)≈g(x−ϵ,y)+g′(x−ϵ,y)(−ϵ)
and g ( x + 2 ϵ , y ) ≈ g ( x + ϵ , y ) + g ′ ( x + ϵ , y ) ϵ g(x + 2\epsilon, y) \approx g(x + \epsilon, y) + g'(x + \epsilon, y)\epsilon g(x+2ϵ,y)≈g(x+ϵ,y)+g′(x+ϵ,y)ϵ

证明edge location ‘a-’ 处必须由左侧region得到,同理edge右侧

提出了几个side window模型,根据 θ \theta θ和 ρ \rho ρ的变动
可以有Left, Right, Up, Down, NorthWest, NorthEast, SouthWest, SouthEast几个窗口

一改以往目标pixel处于window中心的思想,把目标pixel(x, y)放在side window的边缘,就减小了滤波过程中对边缘的削弱

在这里插入图片描述

按照以下算法对经典图片lena进行滤波处理,和均值滤波进行比较
(参照https://blog.youkuaiyun.com/just_sort/article/details/93664078,代码作了修改)

在这里插入图片描述

lena原图
在这里插入图片描述

均值滤波后
在这里插入图片描述

SWF均值滤波后
在这里插入图片描述

可以看到SWF对边缘的保留效果还是很好的
对代码进行一些修改还可以达到提取边缘的效果
在这里插入图片描述

Side Window Filtering(侧窗滤波)原理分析、代码实现及效果分析 最近学习了下侧窗滤波算法,这是一个保边滤波算法,据说该算法的论文是近几年CV行业为数不多的非深度学习论文,方法简单而高效,查阅资料自己实现了下算法,跑了一些图后,不太确定自己实现的效果是否正确。翻看论文的时候,看他们的论文中贴出的图效果很惊艳,甚至有些动物的毛发都可以保留下来,就愈发有点怀疑自己实现的结果是否正确。于是灵机一动,要不自己造点数据来跑算法,验证下看看吧,于是就有了如下动图: 上图中原图就是我造的数据,里面包含各种边缘类型,大致也包含论文中提出的三种边缘模型: 另外还有一些散点视.. 阅读详情

相关推荐

Side window filter

目录box filterside window filtering :S-BOX 先介绍了box滤波器,然后介绍了Side window filter,之后介绍了S-BOX。写的很粗略,理解的不是很透彻,具体可以看我的参考内容。 box filter 参考: https://blog.csdn.net/lxy201700/article/details/25104887 (我瞎说的:不要管它的算法...

woshidakeai的博客 1757

Side Window Filtering 论文笔记

局部窗口通常用于计算机视觉(CV),几乎没有例外,窗口的中心与正在处理的像素对齐。当像素在边缘上时,将窗口的中心放在像素上是导致许多滤波算法边缘模糊的原因之一。基于此,本文提出了一种新的侧窗滤波(SWF)技术,该技术将窗口的边或角与被处理的像素对齐。SWF技术非常简单,在实践中是非常有效的。许多传统的线性和非线性滤波器都可以在SWF框架下轻松实现。大量的分析和实验表明,实现SWF原理可以显著提高它们的边缘保持能力。

SG_teresa's blog 2932

引导滤波(guidedFilter)与边窗盒式滤波(sideWindowBoxFilter)的C++与OpenCV实现

引导滤波(guidedFilter)与边窗盒式滤波(sideWindowBoxFilter)的C++与OpenCV实现 好久没更博客了。去年年底跳了槽,转回了工业检测领域,忙于找工作和开发新算法,同时担心泄露技术秘密,所以一直没有更新博客。刚过去的三个月试用期里开发了两个原创算法,一个已经申请专利(涉及工业品区域边界轮廓提取),一个正准备申请(涉及复杂纹理下的圆孔提取),也算是值得骄傲的一件事了。待专利授权下来后,我可以给大家讲一讲这两个新算法,目前就暂且保密啦。 引导滤波和边窗滤波都是近几年出现.

u014230360的博客 2419

Side Window Filtering 边窗滤波

原理分析 通常用常规图像算法做检测类的算法需要将图像特征增强,其中就需要滤波,把噪点去掉,如果直接用滤波,像高斯滤波,中值滤波,均值滤波等等,不仅会把噪点过滤掉,也会把图像的一些细节,包括边缘给模糊掉,从而造成图像信息丢失。有时候为了保留边缘及一些细节信息,就会用到保边滤波算法。之前用过的保边滤波包括双边滤波,表面模糊等算法。这两个算法都比较慢,对于检测类的算法来说,性价比不高。 传统滤波算法以滤波器的核中心与要处理的像素对齐进行计算,不考虑要处理的像素是否是在边缘区域,

cyy1104的博客 2030

【图像处理】边窗滤波 Side Window Filtering

上一篇我们介绍了导向滤波(Guide Filter),这次也介绍一个保边滤波,Side Window Filtering,这个是CVPR 2019的oral 论文,在现在深度学习相关论文占据大半的CVPR上能够脱颖而出非常了不起,而且文章的idea非常简单粗暴。值得学习。 论文链接:https://arxiv.org/pdf/1905.07177.pdf boxfilter的边窗滤波版本: https://github.com/YuanhaoGong/SideWindowFilter 论文作者在知乎的科普:

Shwan_ma的博客 5100

好用的去噪代码matlab-Side-Window-Filtering:CVPR2019中的“侧面窗口过滤”。MATLAB与某些应用程序的重新

好用的去噪声代码matlab 侧窗过滤 简介:来自CVPR 2019论文的“侧面窗口过滤”。 MATLAB实现与一些应用程序。 实现了过滤器(均值,中值,高斯)和应用程序(平滑,降噪,着色)。 作者: 纸: 引用代码: 环境 在MATLAB中运行。 在MATLAB 2019b测试。 怎么跑 您可以运行以下文件。 demo1.m :演示1-图像平滑和边缘保留 demo2.m :演示2-图像降噪 demo3.m :演示3-图像着色 结果图像将在处理后保存。 结果 演示1-图像平滑和边缘保留 演示2-图像降噪 演示3-图像着色 去做 在演示1中,SW-MED的速度太慢。 应该加快速度。 在演示3中,为什么最大运算符不起作用,而最小运算符不起作用? 我认为这是错误的。 如果您知道原因,可以给我建议。 在演示3中,代码csig = c_var*2; ,如果设置为0.6,则原始算法具有良好的性能。 有什么影响? 学分 如果发现有用,请给我加星 :glowing_star: ! :) 您可以引用该论文的作者。 GitHub网站: 这篇报告: @inproceedings{swfilter, author={Hui Yin a

Python深度学习:从入门到实战

亲爱的读者,欢迎您翻开这本书。我们即将探索的,是深度学习的宇宙——一个由数据、算法与算力构筑的奇妙世界。它既是严谨的科学,也是创造的艺术,更是一条通往未来智慧的修行之路。本书将带您从最基础的数学原理出发,亲手搭建神经网络,驾驭Transformer等前沿模型,最终将智慧转化为现实世界的价值。请放下畏惧,保持好奇。这不仅是一次知识的学习,更是一场思维的远行。来,随我一起,开启这趟非凡的旅程吧。

weixin_45747731的博客 449

手把手教你用AirSim和Unreal4在Ubuntu上创建自定义无人机仿真场景

本指南详细介绍了如何在Ubuntu系统上使用AirSim和Unreal Engine 4搭建高精度无人机仿真环境。从硬件配置、驱动安装到Unreal Engine编译和AirSim集成,手把手教你创建自定义场景,适用于算法验证和开发测试。

y7z8a的博客 255

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

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

阿兵-AI医疗的专栏 2221

Linux SMP系统多核启动机制详解

对称多处理(SMP)是现代操作系统支持多核并行计算的基础架构。其核心原理是通过引导处理器(BSP)初始化系统环境后,通过处理器间中断(IPI)机制唤醒应用处理器(AP)。在x86架构中,AP启动时处于实模式,需要特殊的trampoline代码完成保护模式切换和分页设置。这种设计既保证了系统初始化的正确性,又实现了多核并行处理的性能优势。理解SMP启动流程对优化系统启动速度和调试多核问题至关重要,特别是在云计算和嵌入式系统中,高效的SMP初始化能显著提升系统响应能力。本文以Linux内核为例,深入解析了从BS

weixin_35006125的博客 289

【开关电源篇】整流及其滤波电路的工作原理和设计指南-超简单解读

半波整流是一种利用二极管的单向导通特性,将交流电转换为直流电的基础电路。它通过“切除”交流电的半个周期,仅保留另外半个周期来实现整流。1 开关电源超快学习思路点击跳转1.1开关电源的原理、结构和实物入门篇-超简单解读点击跳转1.2开关电源的EMI输入电路-超简单解读点击跳转倍压整流适用于需要高电压、小电流的特殊场合,通过电容充放电实现电压倍增。

2301_81299416的博客 2924

好用的去噪代码matlab-Side-Window-Filtering简介:图像处理领域的利器

好用的去噪代码matlab-Side-Window-Filtering简介:图像处理领域的利器 去发现同类优质开源项目:https://gitcode.com/ 在数字图像处理领域,噪声是一个常见且难以避免的问题。为了有效去除图像中的噪声,而不损失图像细节,matlab-Side-Window-Filtering项目应运而生。以下是对这个项目的详细介绍。 项目介绍 matlab-Side-Wind...

gitblog_06755的博客 455

从零搭建风电场:手把手教你用WAsP+WindPRO完成风资源评估全流程

本文详细介绍了从零开始搭建风电场的全流程,重点讲解如何使用WAsP和WindPRO进行风资源评估和风场布局优化。内容包括软件配置、数据采集规范、风图谱建模实战、机组选型策略以及常见问题解决方案,帮助工程师掌握风电开发的核心技术,提升项目成功率。

year5的博客 369

CVPR2019 Oral 论文《Side Window Filtering》C++代码实现

算法原理 可以看这篇文章: https://zhuanlan.zhihu.com/p/58326095 简单介绍 这篇文章提出了一种新的方法用于滤波保留边缘和角点,原理在上面的文章可以找到,同时也能找到论文原文和一份github的代码,这种方法可以配合现有的任何滤波方法使用,让这些滤波方法都强制保留边缘。只需要将对应的滤波的核的系数换成对应的滤波方法的核即可。这里我实现了均值滤波的Side Win...

I good vegetable a! 4757

codesys【modbusRTU】主站

【代码】modbusRTU【codesys】

cfqq1989的博客 4370

利用Ghidra与SVD插件实现STM32固件深度逆向分析

本文详细介绍了如何利用Ghidra逆向工程框架结合SVD插件,实现对STM32固件(.bin文件)的深度逆向分析。通过加载描述芯片外设寄存器的SVD文件,Ghidra能将晦涩的硬件地址操作转换为可读的寄存器符号,极大提升了对嵌入式固件中通信协议、安全校验等关键逻辑的分析效率。文章涵盖了从Java环境搭建、工具配置到实战逆向解析的完整流程。

peach的博客 942

【阅读笔记】空域保边降噪《Side Window Filtering》

当像素在边缘,邻域窗口的选择应该在与边缘处在同一侧,不能跨过边缘,提出边缘保持的侧窗滤波算法。除此之外还有别的应用场景(比如平滑,HDR应用,结构纹理分解,深度估计,上颜色等),这里就不展示了,融合侧窗滤波思路的效果更好一些,感兴趣的可以看看原文。对于某一像素 (x,y) ,它的侧窗数量可以是无穷多个,我们只选取8个便于计算的特殊角度的窗口,然后再通过比较各个窗口处理的效果最终选出最合适的窗口。就切断了可能的法线方向的扩散。:将待处理的像素置于滤波窗口的某个合适的边缘,使得滤波窗口尽可能地位于边缘的一侧,

AomanHao的博客 1715

【Bug已解决】This model‘s maximum context length is X tokens. However, you requested Y tokens 解决方案

summary_prompt = "请将以下对话历史压缩成一段简洁摘要,保留关键决策和结论:\n" + format_messages(old_part)return [{"role": "system", "content": f"此前对话摘要:{summary}"}] + recent_part这种方式能在大幅降低 token 消耗的同时,尽量保留任务推进所需的关键上下文,是目前业内做长会话 Agent 最常见的处理方式之一。方案适用场景推荐指数滑动窗口裁剪短任务,对早期历史依赖不强⭐⭐⭐。

一键难忘的博客 1万+
上一篇: leetcode 88. Merge Sorted Array
下一篇: leetcode 59. Spiral Matrix II(螺旋矩阵II)
蓝羽飞鸟
博客等级 码龄8年 1万+粉丝 727原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝羽飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值