一种红通道反转的水下图像复原算法
2019-01-24易本顺吴晨玥章云港
冯 雨,易本顺,吴晨玥,章云港
(武汉大学 电子信息学院,武汉 430072)
1 引 言
水下图像作为研究水下世界的信息载体对于海洋工程以及科学研究都有着重要的作用,如资源勘探、海洋救援、海洋生物研究等[1].然而,水下图像往往存在严重的退质现象:一方面,水对光的选择性吸收导致光的能量衰减,其中红光吸收最为严重导致图像呈现出蓝绿色基调;另一方面,微粒杂质的散射导致图像清晰度下降,呈现出雾状模糊[2];另外,人工光源的使用也会导致图像存在局部亮斑等问题.因此,水下图像的清晰化具有重要的研究意义.
水下图像清晰化分为增强和复原两种方法[3].在增强方面,应用较多的有基于颜色恒常性理论的Retinex算法,该方法从人类视觉感受出发,直接增强图像对比度、颜色等主观效果[4].在复原方面,水下图像成像模型与雾天成像模型类似,所以很多学者提出将暗通道先验用于复原水下图像[5],但由于红通道的快速衰减导致求得透射率偏大,复原图像偏暗;Chiang[6]提出了一种基于波长补偿的水下图像清晰化算法,该算法需已知三个通道的衰减率,从而对图像的各通道进行颜色衰减补偿;Galdran[7]提出了一种基于自动红通道的水下图像复原算法,该算法在成像模型公式上对红通道进行反转来进行透射率的求解,但其证明复杂,且三通道衰减率的比例在不同水质下也会不同,因此适用性存在一定限制;Li[8]提出了一种基于最小信息损失和直方图先验的水下图像增强算法,该算法建立了透射率与图像信息损失的关联函数,通过最小化信息损失求得最优透射率,但该方法对红通道效果欠佳;S.B.Borkar[9]提出用k-means聚类分离前景背景,对两者进行单独复原,但该算法只用于前景背景明显分离的图像,适用性不强.
本文通过对水下图像成像特点的分析以及Galdran[7]提出的自动红通道基础上,提出了以下改进:首先针对水下图像颜色失真给出了一种简单的自动白平衡算法;对于红通道反转,本文并未在原图的基础上进行进一步的透射率求解和复原,而是将原图的复原直接转化为红通道反转后图像的复原,对复原结果图像将其红通道再次反转即可;另外对背景光计算提出了更为有效的方法,并将其用于修正三通道透射率.实验结果显示,本文算法复原图像更加清晰,视觉效果更加自然,且对于存在人工光源的图像,无需额外计算亦可恢复出清晰图像.
2 水下图像成像模型
由Jaffe-McGlamery成像模型[10]可知,相机接收的光可表示为三个分量之和:直接分量为物体反射光未被散射进入相机的光,前向散射为物体反射光的散射部分,后向散射来源于环境光经过微粒等杂质散射后进入相机的光.一般前向散射可忽略不计,因此水下图像的简化成像模型[11]可以表示为:
Iλ(x)=Jλ(x)tλ(x)+Aλ(1-tλ(x))
(1)
式中,Iλ(x)为图像中位于x处且波长为λ的光强度,Jλ(x)tλ(x)为直射分量,Aλ(1-tλ(x))为背景光散射分量,其中,Jλ(x)为复原图像,Aλ为背景光强度,tλ(x)为透射率,λ∈{R,G,B},由 Lambert-Beer 定律[12]可知,光在介质中传播是呈指数衰减的,透射率数学表示为:
tλ(x)=exp(-cλd(x))
(2)
因此,求出三个通道的透射率与背景光强度即可恢复出清晰图像.
3 本文算法
由水下图像成像模型可知,图像复原的关键在于得到正确的背景光强度和透射率.He[13]提出的暗通道先验有效地解决了户外有雾图像的背景光和透射率的估计问题,所以不少学者将其用于水下图像复原.其定义如下:
(3)
其中,Jλ表示无雾图像的每个通道,Ω(x)为一定的邻域范围,Jdark为其暗通道,暗通道先验理论指出,对于室外的无雾图像,其非天空区域的暗通道值趋于0.图像去雾即是在暗通道先验基础上求出其模型参数,恢复出无雾图像.
水下图像虽与雾天图像成像模型相似,但由于不同波长光的衰减程度不一样,导致水下图像的红色通道像素值很低,直接采用暗通道先验会导致透射率估计过大,影响复原结果,而只通过蓝绿通道进行暗通道计算又会导致透射率过小.另外不同颜色衰减不一,其透射率也应不同,采用统一的透射率会导致散射去除不完全,复原图像颜色失真.因此,本文结合Galdran[7]提出的反转红通道基础提出了了改进的水下图像复原算法,如图1所示,主要包括:(1)颜色校正;(2)红通道反转;(3)背景光估计;(4)透射率修正.
3.1 颜色校正
光在水下传播时,红光衰减大,蓝绿光衰减小,导致图像存在色偏,若直接对色偏图像进行处理,得到的结果可能仍存在色偏,所以有必要对色彩进行校正.本文将自动阈值白平衡算法[14]用于水下图像的颜色校正,考虑到水下图像的特殊性,若直接应用往往导致恢复结果存在严重的偏红现象,因此将红通道保持不变,具体步骤如下:
1)白点检测:将图像变换到YCbCr颜色空间,计算Cb、Cr的均值Mb、Mr,以及其对应的绝对均方差Db、Dr,由公式(4)得到满足条件的白色参考点;
|Cb(i,j)-(Mb+Db×sign(Mb))|<1.5×Db|Cr(i,j)-(1.5×Mr+Dr×sign(Mr))|<1.5×Dr
(4)
2)白点调整:计算白色参考点各通道平均值Raver、Baver、Gaver,由公式(5)计算各通道增益,其中Ymax为整副图像亮度的最大值;
(5)
3)颜色恢复:
Bnew=B*kB,Gnew=G*kG,Rnew=R*kR
(6)
图1 算法流程图Fig.1 Flow diagram of our algorithm
3.2 红通道反转
暗通道先验对水下图像失效的原因在于红通道的衰减很大,且传播距离越大,衰减越大.对于水下图像,如图2所示,其中(a)、(e)为原图,(b)、(f)为其对应红通道,(c)、(g)为原图的暗通道,可以发现,原图对应的暗通道与红通道相似,背景亮度低于前景亮度,且对于存在人工光源时该现象更为明显,而在暗通道先验中,雾天图像的暗通道由于背景光的影响雾浓处其强度也会更大[13],也正是基于此特性,才能正确求出其背景光强度和透射率,很明显由于红通道的影响,水下图像的暗通道并不满足此特性.本文对成像公式进行拆分:
1-IR(x)=(1-JR(x))tR(x)+(1-AR)(1-tR(x))IG(x)=JG(x)tG(x)+AG(1-tG(x))IB(x)=JB(x)tB(x)+AB(1-tB(x))
(7)
(8)
再对公式(7)进行修正可得:
(9)
3.3 背景光估计
在Galdran[7]的算法里,其背景光计算方法是:对反转后的红通道找出其最亮的点作为背景点,显然,当前景点存在某些红通道本身就很低的点时,容易造成误判,且只用一个最亮的点作为背景点容易受到噪声的影响.本文采用四叉树分层搜索来提高估计的全局背景光强的准确性,算法的具体过程如下所述:首先,将红通道反转后的图像分为4个矩形区域,并将每一个矩形区域的得分定义为相应矩形区域内像素值的均值减去像素值的标准差;接着,选择得分最高的矩形区域作为候选块继续进行四叉树分解,直到矩形区域的大小小于预先定义的一个阈值停止分解,将最后得到的区域内的像素值求平均得到三个通道的背景光强度.显然,由于反转后的红通道其背景像素值更大,所以整体上图像背景区域均值大,而背景一般为水体,比较平坦,即标准差很小,所以背景区域的得分是最高的.对得到的背景区域取平均即得到各通道背景光强度.
图2 红通道反转效果图Fig.2 Effect of reversed red-channel
3.4 透射率修正
对暗通道先验进行变换可得:
→0
(10)
(11)
(12)
假设式(11)求得的某点是绿色通道的透射率,则与式(12)中所求相同,且B、G两通道求得的透射率满足tR>tB>tG,这种通过背景光强度调整的透射率如图3所示,其中(a)、(e)为原图,(b-d)、(f-h)为红通道反转后的蓝绿红三个通道透射率,可以看到,三个通道透射率满足相同的分布规律,景深越小,透射率越大,且不同通道透射率大小不同.由于透射率的计算使用了块操作,所以在视觉上会有很多小块,比较粗糙,所以本文使用了引导滤波[13]对粗透射率图进行细化.
图3 三通道透射率图Fig.3 Transmission map of three-channel
3.5 水下图像复原
计算出透射率和背景光强度后,便可由式(9)复原出反转后的清晰图像,但是为了避免因透射率t过低导致的计算溢出,一般给t设置一个下界t0,实验中t0取0.2-0.3,于是可以得到图像的复原公式:
(13)
对得到的图像红通道再次进行反转操作即可得到原始图像的复原图像,图4给出了部分实验结果.可以看出,本文算法可以有效去除颜色失真及提高清晰度,并能有效用于存在人工光源的场景.
4 实验对比与分析
为了验证算法的有效性,本文与其他几种主流算法进行了对比,并利用Hautiere评价指标来定量评价各算法效果.其中,e表示增加的视觉边缘与原图的边缘数目之比,r表示平均视觉增强,σ表示复原图像中像素变黑或者变白的百分比.e和r的值越大,σ的值越小,表示算法复原效果越好.实验结果对比图如图5所示,可以看出本文算法在清晰度提升和色彩恢复方面都有不错的表现.客观评价指标对比如表1所示,本文算法的e的值均高于其他算法,且r的值排在前列,证明了算法的有效性.
图4 水下图像复原结果图Fig.4 Our results
图5 本文算法与其他算法效果对比Fig.5 Comparative results with other algorithm表1 客观评价指标对比Table 1 Comparison of criteria among algorithms
AlgorithmImage1Image2Image3Image4erσerσerσerσAncuti[15]6.243.720%1.724.620.1%0.111.820%1.002.210.1%Chiang[6]0.081.300%0.131.320%0.231.810%0.081.790%Galdran[7]5.032.000.32%1.282.200.08%0.481.430%0.931.900.03%本文算法6.252.270%6.303.900%0.732.410%3.391.950%
5 结束语
水下环境的特殊性导致传统暗通道先验方法无法直接应用于水下图像.笔者在Galdran[7]提出的反转红通道的基础上提出了改进算法.首先用改进的白平衡去除严重的色彩失真,将红通道反转来消除红通道对透射率计算的影响,针对反转后的图像特点,提出用四叉树分层搜索得到各通道背景光强,并由得到的背景光强度对透射率公式进行优化,得到三通道透射率,最后复原出清晰图像.实验结果表明,算法可有效复原出水下清晰图像,且对存在人工光源的场景也有很好的效果.