点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达你是不是也遇到过这种情况:阳光正好时想拍张逆光大片,结果照片里全是乱糟糟的光斑、条纹;晚上拍路灯,画面糊成一片,连星星点点的光源都看不清?这些讨厌的"光污染",在计算机视觉里被称为"镜头眩光",不仅影响颜值,还会让自动驾驶的目标检测、监控识别等任务频频出错。
最近,TPAMI 2025上的一篇论文《基于对抗曲线学习的图像镜头眩光去除》给出了新思路,不仅能把眩光"擦"得干干净净,还能保住画面里的每一个光源,甚至换个手机拍的图也能完美处理!今天就来聊聊这篇论文有多神~
论文信息
题目:Image Lens Flare Removal Using Adversarial Curve Learning
基于对抗曲线学习的图像镜头眩光去除
作者:Yuyan Zhou, Dong Liang, Songcan Chen, Sheng-Jun Huang
源码:https://github.com/YuyanZhou1/Improving-Lens-Flare-Removal
先吐槽:以前的去眩光方法,问题真不少!
其实科学家们早就开始研究去眩光了,但效果一直不尽如人意。最大的麻烦在于——没有足够的"配对数据"。你想啊,要训练AI去除眩光,得有"带眩光的图"和对应的"无眩光原图"吧?但现实中很难拍到完全一样的两张图,所以大家只能靠合成数据。
以前合成数据的思路特别简单:找一张正常图,再叠一张纯眩光图,直接相加就完事了。但这方法有俩大bug:
**画面容易"过曝"**:就像图1左边那样,强光地方一片惨白,细节全没了,因为它没考虑相机的"自动曝光"和"色调映射"(简单说就是相机处理光线的独特套路)。
光源留不住:AI经常把光源当成眩光一起删掉,或者用"硬阈值"判断(比如亮度超过0.99才算光源),结果要么漏了暗一点的光源,要么多个光源只留一个(图1右边就是反例)。
图1:左边是传统合成方法的过曝问题,右边是旧方法漏检光源的尴尬
新方法放大招:从"合成数据"到"泛化能力"全升级
这篇论文的厉害之处,在于从根上解决问题。团队一口气放了四个大招,咱们一个个看~
大招1:会"模仿相机"的合成管道,数据更真实!
相机拍照时,从传感器接收到光线到最终出图,要经过一整套"图像信号处理(ISP)"流程,比如色调映射(把强光压暗、弱光提亮)、伽马校正(让颜色更符合人眼感知)。以前的合成方法完全不管这些,难怪合成的图不真实。
新方法聪明在哪?它在"伽马反转空间"里搞事情:给场景图和眩光图的每个像素"算账"——根据亮度分配权重。亮的地方(比如光源附近),眩光占比高;暗的地方,场景图占比高。就像给两张图做"智能混合",既不会过曝,又符合相机的真实成像逻辑。
看下面的图4,传统方法合成的图亮度明显偏亮(红色曲线),而新方法合成的图(蓝色曲线)和真实逆光图(绿色曲线)几乎重合!用这种数据训练AI,效果能差吗?
图4:新方法合成的数据亮度分布更接近真实照片
大招2:对抗曲线学习,换手机拍也不怕!
你可能发现过:用iPhone拍的图去眩光效果好,换成安卓就拉胯?因为不同手机的ISP不一样,处理光线的"套路"千差万别,AI很容易"认死理"。
论文团队把这个问题变成了"对抗游戏":训练一个"曲线生成网络",专门给当前AI制造"最难处理的光线情况"(模拟不同手机的ISP);同时训练"去眩光网络",努力适应这些"刁难"。就像练武术时找各种风格的对手过招,练出来自然身手不凡。
结果就是:不管是iPhone、小米、华为还是iPad拍的图,AI都能稳稳拿捏。比如下面的图9,旧方法在iPad拍的图上连眩光条纹都去不掉,新方法不仅能清干净,还不影响画面其他部分。
图9:不同设备拍摄图像的去眩光效果对比,ACL是论文提出的方法
大招3:多光源恢复,大小明暗都能留!
拍夜景时,天上的月亮、路边的路灯、远处的车灯,怎么让AI既去掉眩光,又把这些光源都保留下来?以前用"硬阈值"的方法太死板,亮一点的留得住,暗一点的就没了。
新方法用了个"软技巧":选一个"强凸函数"当权重(比如x的15次方)。简单说,就是让亮度越高的地方,权重越大——光源作为最亮的部分,自然会被重点保留,而周围的眩光则被过滤掉。不管是单个月亮,还是一群路灯,都能原原本本留下来(看图7和图8)。
图7:左边是旧方法漏检夜间光源,右边是新方法完美恢复月亮和路灯
图8:新方法能同时恢复多个不同大小的光源
大招4:新数据集上线,15种设备拍了300张图!
想测试AI的真实能力,得有靠谱的测试集。以前的数据集要么设备单一,要么眩光类型少,根本测不出AI的"泛化力"。
团队专门收集了15种消费电子设备(从iPhone 11到华为Mate 40,甚至还有iPad)拍的300张图,白天晚上都有,眩光的形状、颜色、位置五花八门(看图5)。有了这个数据集,谁的方法真好用,一测就知道!
图5:新数据集中不同设备拍摄的眩光图像,形状颜色各不相同
效果有多牛?看对比就知道!
话不多说,直接上结果。
在定性对比里(图6),传统方法要么去不干净眩光,要么把画面搞得灰蒙蒙;专门去夜间眩光的方法,白天就歇菜。而新方法不管白天黑夜,眩光清得干干净净,画面还特别通透。
图6:不同方法的去眩光效果对比,最后一列是论文方法
定量指标更能说明问题:在PSNR(峰值信噪比)和SSIM(结构相似性)这两个衡量图像质量的硬指标上,新方法远超传统方法,甚至用了Transformer的Uformer模型搭配新合成数据,效果还能再上一个台阶。
更绝的是对下游任务的帮助。比如目标检测(图12),带眩光的图里,YOLOv5把眩光当成汽车、交通灯,连被眩光挡住的椅子都没认出来;用新方法去眩光后,检测器瞬间"擦亮眼睛",该认的全认对了!
图12:去眩光后,目标检测效果明显提升
一点小遗憾和未来可期
当然,新方法也不是完美的:对抗曲线学习需要同时训练两个网络,计算成本翻倍,训练时间和内存消耗都增加了。但为了换来得心应手的泛化能力,这点代价似乎很值。
总的来说,这篇论文从数据合成、模型泛化、光源恢复三个核心问题入手,一步步破解了镜头眩光的难题。以后不管用什么设备拍逆光、夜景,再也不怕眩光毁片了~ 对了,论文的源码已经开源,感兴趣的小伙伴可以去扒一扒细节!
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。
下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。
下载3:人工智能0基础学习攻略手册
在「小白学视觉」公众号后台回复:攻略手册,即可获取《从 0 入门人工智能学习攻略手册》文档,包含视频课件、习题、电子书、代码、数据等人工智能学习相关资源,可以下载离线学习。
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~