最近出于学习的需要,阅读了关于水下图像增强的论文《Color Balance and Fusion for Underwater Image Enhancement》,并且尝试着按照论文中所介绍的步骤使用matlab来实现,由于本人对图像处理初次接触,感觉做出来的效果一般,本文对论文提及的步骤进行简略介绍,代码是按照论文步骤写的,并不十分完善,此论文主要用于学习交流,欢迎大家阅读分享并提出宝贵意见。
光的水下传播
Jaffe-McGlamery图像模型,在水下介质中,一般像平面上的点上的总辐照度入射有三个主要分量:直接分量、前向散射和后向散射。直接分量是被目标物体直接反射到成像平面上的光分量,可表示为:
前向散射是由于光线在进入相机镜头的过程中发生了随机偏差。后向散射是由于人造光(如闪光)撞击水粒子,并反射回相机。表示为:
忽略前向散射分量,简化水下光学模型为:
论文提出的图像增强方法采用了两步策略,结合白平衡和图像融合来改善水下图像,而不需要借助于光学模型的显式反演。
总体流程介绍
该论文提出的图像增强方法采用了两步策略,结合白平衡和图像融合来增强水下图像。
白平衡的目的是补偿由颜色的深度选择性吸收造成的颜色投射,而图像融合的目的是增强场景的边缘和细节,以减轻由于后向散射造成的对比度损失。
白平衡
现有的白平衡算法基本都是基于一定的假设和先验条件。常见的白平衡算法有Max RGB、Gray World、Gray Edge。其中灰色世界算法对于合理失真的水下场景具有良好的视觉效果。然而,对极度恶化的水下场景进行更深入的研究发现,大多数传统方法的性能都很差。它们不能消除颜色的变化,通常看起来是蓝色的。最好的去除蓝色调的方法是灰色世界,但是我们观察到这种方法有严重的红色伪影。这些伪影是由于红色通道的一个非常小的平均值,导致该通道在出现红色的位置上的过度补偿(因为灰色世界通过其平均值来分割每个通道)。
论文中提出的白平衡算法基于以下四个观察/原则:
与红色和蓝色的水道相比,绿色的水道在水下保存相对完好。长波长的光,即红光,在清澈的水中首先会消失;
绿色通道是相对于红色通道包含对手颜色信息的通道,因此补偿红色比绿色引起的更强的衰减尤为重要。因此,我们通过在红色通道中加入绿色通道的一部分来补偿红色衰减。我们最初尝试在红色中加入绿色和蓝色的部分,但论文经测试提出,只使用绿色通道的信息可以更好地恢复整个色谱,同时保持背景(水域)的自然外观;
补偿应与平均绿值和平均红值的差值成比例,因为在灰色世界假设下(所有通道在衰减前的平均值相同),这种差值反映了红绿衰减之间的差异/不平衡;
为了避免在灰色世界算法中的红损耗补偿后的红通道饱和,对红通道的增强应该主要影响红通道值较小的像素值,而不应该改变已经包含重要红分量的像素。换句话说,绿色通道信息不应该在红色通道信息仍然重要的区域进行传输。
论文中提到某些水质恶劣的图片,可能需要对红色和蓝色通道补偿,所以作者在代码实现时,定义了一个阈值K,若绿色通道与蓝色通道的比值大于K,则对红色通道和蓝色通道均进行补偿;否则,只对红色通道进行补偿。
锐化与Gamma变换
Gamma变换:一般而言,白平衡水下图像往往显得太亮。
锐化:非锐化掩模
典型的掩模公式:S = I +β(I-GI),较小的β不能锐化I,但过大的β会导致过饱和区域,具有较亮的高光和较暗的阴影,论文使用的掩模公式:S=(I+N{I-GI})/2
融合过程中的权重
拉普拉斯对比度权重
通过计算应用于每个输入亮度通道的拉普拉斯滤波器的绝对值来估计全局对比度。它为边缘和纹理分配了高值。然而,对于水下去雾任务,这个权值不足以恢复对比度,主要是因为它无法区分斜坡和平坦区域。显著性权重
突出在水下场景中失去显著性的显著对象。饱和权重
对高饱和区域的优化,使融合算法能够适应彩色信息。
金字塔建立及融
多尺度分解基于拉普拉斯金字塔。金字塔表示将图像分解为带通图像的和。
两个金字塔具有相同的层数,并且在每层上独立地执行拉普拉斯输入与高斯归一化权重的混合:
处理前(左)与处理后(右)对比图
相关源代码已上传至原创代码共享Q群 (需要赞赏才能加群),需要源代码的关注请加原创代码共享Q群下载,原创代码共享Q群主要用于小编原创代码以及其他优秀代码分享,目前群中已有30多款代码,在matlab爱好者公众号中回复“原创”获取加群信息。
特别鸣谢:感谢作者Joker向matlab爱好者公众号投稿,同时也希望更多的关注者向公众号献计献策献文,随时欢迎大家投稿。在matlab爱好者公众号中回复投稿即可获取投稿相关信息。
参考资料:
[1] Codruta O. Ancuti etc. Color Balance and Fusion for Underwater Image Enhancement[J].
如需转载,请在公众号中回复“转载”获取授权,未经授权擅自搬运抄袭的,必将追究其责任!
互动专区
在matlab爱好者公众号中回复“QQ”,加入公众号专属Q群(非免费),与更多matlab爱好者一起交流。
如需转载,请在公众号中回复“转载”获取授权,未经授权擅自搬运抄袭的,必将追究其责任!