图像反光能被一键去除了?港科大开源RFC,仅用一个操作,强反光也能完美去除|CVPR2021
本文首发极市平台(微信公众号同名),转载请标明出处。极市平台是国内专业的计算机视觉开发者平台,原文请戳这里。代码以及数据集:https://github.com/ChenyangLEI/flash-reflection-removal项目主页:https://chenyanglei.github.io/flashrr_rfc/index.html论文:https://arxiv.org/pdf/2
本文首发极市平台(微信公众号同名),转载请标明出处。
极市平台是国内专业的计算机视觉开发者平台,原文请戳这里。
代码以及数据集:https://github.com/ChenyangLEI/flash-reflection-removal
项目主页:https://chenyanglei.github.io/flashrr_rfc/index.html
论文:https://arxiv.org/pdf/2103.04273.pdf
利用偏振光去反射:https://github.com/ChenyangLEI/polarization-reflection-removal
本文介绍了一种非常鲁棒的去反光算法,在定量指标和视觉效果上都显著超过了其他的算法。
摘要
我们的算法主要利用了一张额外的闪光照片(Flash image)来进行去反射(Reflection Removal),只需要一步操作,我们可以极大地提升效果。本文的主要贡献有三个:
1.我们提出了一种新颖的提示(Reflection-free Flash-only Cues,RFC),该提示使区分反射更容易,从而进行更好地去反射。该提示非常可靠的,因为它与环境光下的反射的外观和强度无关。
2.我们提出了一个专用框架,该框架可以在使用RFC的同时避免引入仅闪光图像的artifacts。 与最新技术相比,我们在真实数据集上的PSNR提高了5.23dB以上,SSIM提高了0.04,在LPIPS中减小了0.068。
3.我们构造了第一个包含raw数据和RGB数据的数据集,以用于基于闪光的去反射。
背景
什么是去反射?观察玻璃后的背景时,玻璃上有镜面反射,导致背景物体的结构、颜色清晰度下降。例如在商场中透过玻璃看商品,在展览馆中通过玻璃看作品,再例如从车窗外看车内的人。
为什么要去反射?当我们的目标是背景时,反射属于干扰信号。反射可能影响照片美观,或者影响其他算法在照片的效果(例如目标检测)。
为什么去反射比较困难?反射和背景都是自然图像,难以分辨。在许多情况下,只看图片的一部分,即便人类也无法分辨。
相关工作
单张图像去反射。在某些情况下,反射的外观可能含有一些线索。例如,在对焦在背景时,反射可能失焦,且因此看起来模糊[6,7]。当玻璃比较厚的时候,可能产生鬼影效果[4]。然而,这些线索在很多时候并不成立。现实世界中的反光很可能是清晰且无鬼影的。当反射的外观不符合算法假设时,算法的效果常常会剧烈下降。
多张图像去反射。一些去反射方法[5]利用在反射和背景的不同运动状态来进行去反射。 但是,拍摄不同的运动图像会花费更多的精力(用户需要移动手机)。还有一些方法[3]利用了偏振光,但是偏振相机还没有被广泛运用。
基于闪光去反射。闪光灯的其他特点曾被许多工作应用过。Agrawal等人[1]假设图像的梯度方向在闪光和环境光下是一致的。 但是,它们在不理想的区域(例如,阴影,镜面反射)很难生成合理的结果。此外,它们的结果往往过于平滑。 SDN[2]假设可以通过闪光明显抑制反射,但是抑制效果对环境光下的反射强度敏感:当反射较强时,抑制不再有效。下文将介绍,在相同的设置之下,我们的算法效果上显著超过这两种算法。
Reflection-free Flash-only Cues (RFC)
首先介绍一个概念,纯闪光图片(Flash-only image)。
和一般的单张图片去反射方法上图(a) 相比,我们的方法需要多拍摄一张闪光照片图(b)。我们命名环境光照(ambient illumination)下的图片为
I
a
I_a
Ia,加上闪光光照(flash illumination)的图片为
I
f
I_f
If。我们处理得到的图片是上图©,纯闪光图片
I
f
o
I_{fo}
Ifo。如何获得?
注意此处我们需要这两张图片的raw image,因为sRGB图片的数值和光照并非线性相关。R和T分别表示闪光和背景。
式子(3)是最关键的一步操作。由式子(3)可以知道,环境光照下的反光已经完全消失,但是还有flash-only光照下的反光。我们认为,它在大多数情况下为0。因为闪光灯具有方向性,只会照亮前面的东西,不会照亮后面的东西。而玻璃的反光在经过多次弹射之后进入相机已经比较弱了。
网络结构
虽然纯闪光照片 I f o I_{fo} Ifo不包含任何的 R a R_a Ra(环境光下的反光),但是这张图片本身存在很多质量上的问题,包括:(1)偏色;(2)不均匀光照(由物体的远近和形状导致);(3)闪光灯反光;(4)新的阴影或者被照亮的灰尘。如下图:
我们需要设计一种结构,既可以利用到RFC的优点,又能规避上述纯闪光图片 I f o I_{fo} Ifo的缺陷。因此我们设计了一个两阶段的框架,第一个阶段只预测 R a R_a Ra,第二阶段再预测 T a T_a Ta。我们框架的目的是让最终得到的图片依赖于 I a I_a Ia而非 I f o I_{fo} Ifo,而I_{fo}只作为一个参考图片。这样子, I f o I_{fo} Ifo的artifacts在第一个阶段就可以被拦截了。
如果单纯利用一个网络来预测 T a T_a Ta会怎么样呢?我们实验发现网络倾向于从 I f o I_{fo} Ifo生成最终的结果,上述的多种artifact就会被引入。
实验结果
我们对比了两类算法:单图去反射算法和基于闪光的去反射算法。
上表展示了定量对比的结果,我们的表现显著超过了其他算法(包括其他基于闪光的去反光算法)。
上图展示了一个视觉对比结果,我们的算法在强的反光下仍然可以去掉反光,这主要得益于纯闪光图片
I
f
o
I_{fo}
Ifo的引导。
上图展示了一个视觉对比结果,我们的算法可以鲁棒地去掉反光。
上图展示了一个视觉对比结果,和最新的基于闪光的去反射算法相比较(SDN, IJCV2020),我们可以更好的去掉强反光(当然,弱的反光更不在话下)。
讨论与总结
我们相信纯闪光图片 I f o I_{fo} Ifo还可以被运用到很多其他的领域中。例如,我们发现环境光下的阴影也会在 I f o I_{fo} Ifo中消失,也就是说, I f o I_{fo} Ifo也可以用去阴影。其次,在纯反光图片中只有一个光源,这对于很多领域也是非常重要的,例如photometric stereo。
由于我们的reflection-free cues,我们的算法的鲁棒性和精确性都很强,这从很多实验结果中也可以得到印证。尽管我们需要多拍一张照片,但是可以通过客制的程序来以很小的代价实现这一点(连拍两张照片)。我们的缺点在于,当物体离玻璃很远时,闪光灯可能无法照到物体,那么 I f o I_{fo} Ifo就全黑了,当然,这也是多数active-sensing的共同缺点,存在距离限制。
参考文献:
[1] Amit Agrawal, Ramesh Raskar, Shree K Nayar, andYuanzhen Li. Removing photography artifacts using gradi-ent projection and flash-exposure sampling. InSIGGRAPH. 2005
[2] Yakun Chang, Cheolkon Jung, Jun Sun, and Fengqiao Wang.Siamese dense network for reflection removal with flash andno-flash image pairs.Int. J. Comput. Vis., 128(6):1673–1698,2020.
[3] Chenyang Lei, Xuhua Huang, Mengdi Zhang, Qiong Yan,Wenxiu Sun, and Qifeng Chen. Polarized reflection removalwith perfect alignment in the wild
[4] YiChang Shih, Dilip Krishnan, Fredo Durand, and William TFreeman. Reflection removal using ghosting cues. InCVPR,2015
[5] Tianfan Xue, Michael Rubinstein, Ce Liu, and William T.Freeman. A computational approach for obstruction-freephotography. ACM Trans. Graph., 34(4):79:1–79:11, 2015.
[6] Yang Yang, Wenye Ma, Yin Zheng, Jian-Feng Cai, andWeiyu Xu. Fast single image reflection suppression via con-vex optimization.
[7] Xuaner Zhang, Ren Ng, and Qifeng Chen. Single imagereflection separation with perceptual losses. In CVPR, 2018.
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)