两种方法解决图片的去雨(De-rain)问题 | CVPR2017

简介:

去雨指的是:对于一张雨中的图片,去除画面中的雨滴,得到还原后的图片,与图片去雾、超分辨率等同属CV领域中图像处理的范畴。去雨作为一种偏向low level的图像处理,本质上是分离图片中的内容与叠加的雨滴模式,并加以去除。这一问题以往多采用字典学习、稀疏编码等方法加以建模。在今年的CVPR中同时出现了2篇使用deep learning处理去雨问题的文章,而思路各不相同,故分别介绍供大家参考。

两种方法解决图片的去雨(De-rain)问题 | CVPR2017

第一篇Removing rain from single images via a deep detail network(下称deep detail),对于雨滴模型的创新主要是提出了2点insights。

1、类似ResNet的思路,回归带雨图像与原图的残差,而不是直接输出还原图像。这样一来可以使算法操作的图像目标值域缩小,稀疏性增强。实际上这一点在超分辨率等很多问题中已经被广泛应用。

2、使用频域变换,分离图像中的低频部分和高频部分,只对高频部分做去雨操作。原因是雨滴基本只存在于高频部分,分离后可以使得操作目标进一步稀疏化,实验效果显著优于不做这一操作的结果。

两种方法解决图片的去雨(De-rain)问题 | CVPR2017

实现上作者使用了一个26层的ResNet,为了保证输出分辨率不变,去掉了所有的Pooling操作。实验表明:与直接输入带雨图像、输出原图相比,一个26层的ResNet效果已经与原始方法50层的ResNet效果相近,并显著优于其他旧方法。这证明了两个技巧的有效性。

第二篇Deep Joint Rain Detection and Removal from a Single Image(下称joint detection)对于雨滴建模如下:

两种方法解决图片的去雨(De-rain)问题 | CVPR2017

其中B是原图,O是带雨的图片,其他的量代表雨滴带来的影响。S指叠加的雨滴的强度,R指含雨滴范围的一个 binary mask,A对雨雾进行建模。之所以将S、R分别描述并分别用网络预测,是为了避免只回归S影响了图中不含雨滴的部分,R实际上描述了雨滴存在的区域,这也是标题中rain detection的含义。S、R预测的例子可见下图。t指的是图片中多个方向的雨叠加的效果,训练所用的合成雨的图片就是多次叠加的结果。最后A描述了一个图像整体的偏移,这是由大雨中远处大量雨滴叠加造成的类似雾的效果,实际算法中也用了去雾算法做处理。

两种方法解决图片的去雨(De-rain)问题 | CVPR2017

在训练时作者使用了多分支的dilated convolution网络,以在节约计算量的同时扩大网络的感受,也获得更多的context信息。网络级联地预测S和R,在训练时都提供loss,在测试时得到S、R后,按之前的模型进行去雨处理。在实际实验中还发现采用去雨1次 – 去雾1次 – 再去雨1次的流程得到的结果是最好的。

此外两篇文章在训练数据和测试方法上都是沿用之前工作的方法。训练数据都是使用不带雨的图片人工合成带雨的图片,并从图中抽取patch进行训练。在测试流程上,对于合成图片,主要比较衡量图片结构相似度的SSIM指标。对于真实环境的带雨图片,主要是视觉上的qualitative比较。

对于去雨算法的应用领域,join detection论文作者表示,主要可以用于监控视频、比赛视频等场景中,需要增强画质的时候应用。此外deep detail论文的作者还表示,他们的框架在其他画质增强的应用实验中也得到了不错的效果,包括透过玻璃观看景物而玻璃上有大量雨滴等情形。

本文作者:思颖

本文转自雷锋网禁止二次转载,原文链接

相关文章
|
机器学习/深度学习 人工智能 自然语言处理
视觉 注意力机制——通道注意力、空间注意力、自注意力
本文介绍注意力机制的概念和基本原理,并站在计算机视觉CV角度,进一步介绍通道注意力、空间注意力、混合注意力、自注意力等。
12786 58
|
数据库 数据库管理 Python
解释Python中的内存视图(Memory View)。
解释Python中的内存视图(Memory View)。
506 0
|
机器学习/深度学习 算法 数据可视化
python/matlab图像去雾/去雨综述
python/matlab图像去雾/去雨综述
|
关系型数据库 PostgreSQL
postgresql查看服务与启动
服务启动,状态查看等等
2221 0
|
测试技术 持续交付 UED
软件测试的艺术与科学:平衡创新与质量的探索在软件开发的波澜壮阔中,软件测试如同灯塔,指引着产品质量的方向。本文旨在深入探讨软件测试的核心价值,通过分析其在现代软件工程中的应用,揭示其背后的艺术性与科学性,并探讨如何在追求技术创新的同时确保产品的高质量标准。
软件测试不仅仅是技术活动,它融合了创造力和方法论,是软件开发过程中不可或缺的一环。本文首先概述了软件测试的重要性及其在项目生命周期中的角色,随后详细讨论了测试用例设计的创新方法、自动化测试的策略与挑战,以及如何通过持续集成/持续部署(CI/CD)流程优化产品质量。最后,文章强调了团队间沟通在确保测试有效性中的关键作用,并通过案例分析展示了这些原则在实践中的应用。
306 1
|
机器学习/深度学习 计算机视觉
【YOLOv8改进】MSFN(Multi-Scale Feed-Forward Network):多尺度前馈网络
**HCANet: 高光谱图像去噪新方法**\n混合卷积与注意力网络(Hybrid Convolutional and Attention Network)是针对HSI去噪的创新模型,结合CNN和Transformer,强化全局与局部特征。它使用卷积注意力融合模块捕获长距离依赖和局部光谱相关性,多尺度前馈网络提升多尺度信息聚合。代码可在[GitHub](https://github.com/summitgao/HCANet)获取。
域名科普:常见的域名有哪几类?
域名科普:常见的域名有哪几类?
2757 3
域名科普:常见的域名有哪几类?
|
NoSQL 前端开发 安全
Springboot----项目整合微信支付(获取支付二维码)
Springboot----项目整合微信支付(获取支付二维码)
787 0
Springboot----项目整合微信支付(获取支付二维码)
|
安全 C#
阿里云域名新注、续费、转入收费价格表(最新版)
阿里云域名价格表包括域名注册、域名续费及域名转入价格,不同时期的收费价格是不一样的,本文整理了2022年最新版的阿里云域名新注、续费、转入收费价格表,可供读者参考!
4479 0
阿里云域名新注、续费、转入收费价格表(最新版)
|
SQL C++ Python
第1章 Python概述 课后习题参考答案
一、单选题 1、以下选项中说法不正确的是______。(答案为D) A. 解释是将源代码逐条转换成目标代码并同时运行的过程 B. 编译是将源代码转换成目标代码的过程 C. Python语言是解释型语言,兼有编译功能 D. 静态语言采用解释方式执行,脚本语言采用编译方式执行
965 0