低照度图像增强之卷积神经网络RetinexNet
转载请标注:https://blog.csdn.net/weixin_38285131
目录
低照度图像增强一直是计算机视觉领域的一个热门研究方向,之前传统的基于Retinex理论的研究方法已经出现很多,比如:MSR,MSRCR,MSRCP等,这些方法在低照度图像增强方面效果有明显提升,上一篇博客主要介绍了基于Retinex理论的集中图像增强方法,并给出了python代码。博客链接如下:
[图像增强Retinex算法之python实现——MSR,MSRCR,MSRCP,autoMSRCR](https://blog.csdn.net/weixin_38285131/article/details/88097771)
但是基于传统的图像图像处理方法处理每一张图像会比较耗时,一副4000*8000的图像需要耗时十几分钟,这样就没法批量处理低照度图像,因此本文介绍一种基于Retinex理论的卷积神经网络模型——RetinexNet,该模型是北大的童鞋在2018年发表在BMVC上的,论文名字是——Deep Retinex Decomposition for Low-Light Enhancement
[论文PDF]
RetinexNet项目介绍,数据集,PPT等
一丶Retinex理论——图像分解
这个理论在上一篇博客中已有介绍,任何一幅图像可以分解为光照图像(illumination)和反射图像(reflectance),反射图像是物体的本身性质决定的即为不变的部分,光照图则受外界影响比较到,可以去除光照影响或者对光照图像进行校正,则可以达到增强图像的目的。如下图所示:
左边即为低照度图像,中间即为光照图,右边即为反射图像,原图S(x,y)=I(x,y)*R(x,y),将图像变换到log域则变成了相减,然后将光照图像减去即可达到增强图像的目的。
二丶RetinexNet卷积神经网络
摘抄自论文摘要:
Retinex理论是一种有效的微光图像增强工具。假设观测图像可以分解为反射图像和照度图像。大多数现有的基于Retinex卢纶的方法都为这种高度不适定的分解精心设计了手工约束和参数,当应用于各种场景时,这些约束和参数可能会受到模型容量的限制。Retinex包括一个用于分解的分解网络(Decom)和一个用于照明调节(Relight)的增强网络。在分解网络的训练过程中,没有分解反射和光照的地面真值。该网络的学习只有关键的约束条件,包括低/正常光图像共享的一致反射率,以及光照的平滑度。在分解的基础上,利用增强网络增强网对光照进行后续的亮度增强,联合去噪对反射率进行去噪操作。视网膜网是端到端可训练的,学习分解的性质有利于亮度的调节。
理论整体路线即为下图所示:
输入:低照度图像
分解网络(Decom):对图像进行分解
增强网络(Relight):对图像进行增强和调整
输出:校正之后的图像
1.训练数据说明
数据主要是利用单反相机不同的光圈值和感光度拍摄同一个场景,作为图像对进行训练,也就是说同一场景拍摄一个低照度图像,然后在拍摄一个正常图像进行训练,具体数据如下图所示:
作图为正常拍摄图像,右图为低照度图像,大概拍摄了500张图像对作为训练数据
2.分解网络——Decom
文中的分解网络应该是一个五层的卷积神经网络,代码中是利用relu函数进行激活,没有什么特别的处理,具体结构如下:
可以看到将图像对中的低照度图像和正常图像作为输入数据送入卷积神经网络进行分解,最后得到光照图像和反射图像,根据Retinex理论反射图像基本接近,但是两者光照图像相差很大,这样把每一张训练图像进行分解,然后再送入后面的增强网络进行训练。
3.增强网络——Relight
增强网络,我看代码应该是一个九层的卷积神经网络,利用relu进行激活,中间还进行最邻近差值的resize操作,具体如下图:
对刚才分解的反射图像进行去噪音操作,他中间用了平滑,但是我觉得用了平滑之后降低了图像本身的锐度,图像变得模糊,个人觉得这一步还应该做一下增强处理,回头看看能不能修改一下这个中间处理操作。应该可以用拉普拉斯进行一下图像恢复吧,我觉得这一步降低图像锐度不太好,重建图像稍显模糊。
4.结果展示
中间即为校正之后的,右边为正常光照图像,虽然和正常图像比不了,但是已经很不错了,
最后与其他算法做了一些对比工作,感觉各有千秋吧,不过都有一定的亮度提升,还是很值得研究一哈的 做一下改进。
下一步,我准备用这个神经网络训练一下自己的数据,然后测试一下增强效果。
转载请注明地址:https://blog.csdn.net/weixin_38285131