基于改进CLAHE的水下彩色图像增强算法*

2019-11-28 03:09王红茹
舰船电子工程 2019年11期
关键词:直方图幅值分配

王红茹 李 瑞 王 佳

(1.江苏科技大学机械工程学院 镇江 212003)(2.江苏省船海机械先进制造及工艺重点实验室 镇江 212003)

1 引言

海洋经济的兴起促使水下装备及相关技术的研发成为各国关注的重点方向,水下视觉技术更是其中的关键[1]。然而,水下成像环境通常较为复杂,使得水下图像的质量较低。水中悬浮物引起的光线散射效应以及光线在水中传播的衰减造成水下图像对比度低、模糊、光照不均等问题[2~3]。因此,水下图像增强的研究成为计算机视觉领域的热点之一。水下图像增强方法分为物理模型法和非物理模型法。物理模型法根据水下图像的退化过程进行建模,反演退化过程得到输出图像,但其建立的水下成像模型过于理想化,且模型参数具有不确定性,导致这类方法适应性不强[4]。非物理模型方法包括基于空域增强的CLAHE算法[5~6],基于频域增强的小波变换[7],以及基于颜色恒常性的Retinex理论[8~10]等。小波变换在去除水下噪声方面效果不错,但是并不能有效提高图像对比度和清晰度;Retinex则容易存在过度增强和欠饱和区域,且耗时较多。而CLAHE算法在提高图像对比度的同时可以较好地抑制噪声放大的问题,但是对于暗部细节的增强不够明显。

综上,本文根据水下成像的特点,在CLAHE算法的基础上提出一种改进的水下图像增强算法。根据像素值的分布确定裁剪幅值,对直方图进行裁剪与分配;对超出幅值部分进行二次分配,确定其分配的动态范围;最后引入同态滤波,以改善光照不均。

2 算法原理

2.1 限制对比度自适应直方图均衡

CLAHE算法在HE的基础上对每个子块的直方图进行限幅,可以较好地抑制噪声放大,算法具体步骤如下。

1)将原图像分成n*n个大小相等且互不叠加的子块。

2)计算每个子块的直方图。

3)计算裁剪幅值T。

式中,nx和ny为每个子块在x和y方向上的像素个数,K为灰度级数,c为裁剪系数。

4)裁剪直方图,并对像素点进行分配。根据裁剪幅值T对子块直方图h(x)进行裁剪,如图1(a)所示;然后将裁剪掉的像素数平均分配到每个灰度级上,如图1(b)所示。设超出裁剪幅值T的像素总数为S,每个灰度级平均分配到的像素个数为A,则有:

用h’(x)表示重新分配以后的直方图,有

图1 直方图裁剪、分割

5)对重新分配以后的子块直方图进行均衡化处理。

6)插值运算。若每个子块中的像素仅通过相应的映射函数进行变换,会使得最终的图像呈现块状效应,因此利用插值运算来求解像素点的值。

图2 插值运算

用黑色标记的四个边角区域的像素,直接根据所在子块的映射函数进行计算,如图2所示。白色标记的四个边缘区域的像素值通过相邻两个子块的映射函数进行变换得到两个映射值,再对这两个值进行线性插值运算,如式(5)。其中,f(x ,y) 为所求点的像素值,f1,f2为该点通过相邻两个子块的映射函数变换得到的映射值,为相邻两个子块的中心像素坐标。

灰色标记的中心区域的像素值则通过周围四个子块的映射函数变换得到四个映射值,再对这四个值进行双线性插值运算得到,如式(6)。其中,f’1,f’2,f’3,f’4为该点通过周围四个子块的映射函 数 变 换 得 到 的 映 射 值 ,分别为周围四个子块的中心像素坐标。

2.2 裁剪幅值的确定

CLAHE算法中,确定裁剪幅值的关键在于裁剪系数c,c的取值不同会直接影响到子块直方图的裁剪和重新分配。另外,如果划分的子块越多,那么每个子块的像素数和灰度级数越少,统一的裁剪幅值可能大于子块直方图中任意灰度级的像素个数,导致该子块直方图并没有被裁剪和重新分配,该子块得不到增强。

本文根据子块直方图像素值的分布提出一种确定裁剪幅值的方法。根据子块直方图的像素分布,选取像素数目前20%的灰度级,设其对应的像素数目分别为 s1,s2,…,sl,l为前20%的灰度级数,根据式(7)计算裁剪幅值,使得每个子块的裁剪幅值较为合适,能保证每个子块具有一定的增强效果。

2.3 二次分配的动态范围

子块直方图经过裁剪和重新分配以后(图1(b)),整体有一定的增强,但是会有一部分灰度级的像素个数再次超过裁剪幅值T。为进一步提升增强效果,对超出部分再一次进行分配。由于直方图中较低和较高的灰度级对应的是图像中较暗和较亮的部分,所含的有用信息较少。因此,本文引入自适应上下限阈值,确定二次分配的动态范围,将超出部分分配到中间灰度级上,如图(3)所示。设子块直方图中前五十个灰度级分别为x1,x2,…,x50,所对应的像素个数分别为 a1,a2,…,a50,根据下式计算自适应下限阈值tl:

图3 确定动态范围

同理,取直方图中后五十个灰度级与对应的像素个数,可计算出自适应上限阈值th。

设第一次分配以后超出裁剪幅值T的像素总数为S’,每个灰度级平均分配的像素个数为A’,则有:

用h’’(x)表示二次分配以后的直方图,有:

当 x∈[0,tl)∪(th,K-1]时,

当 x∈[tl,th]时,

2.4 同态滤波

水下图像除了对比度低以外,还存在光照不均的情况。为此,引入同态滤波[11]以改善局部过暗或过亮现象。同态滤波以照射-反射模型为基础,对图像的灰度范围进行调整,将图像g(x ,y) 表示为入射分量i(x ,y)和反射分量r(x ,y) 的乘积,表达式如下。

其中,入射分量i(x ,y)取决于光照条件,频谱集中在低频区域;反射分量r(x ,y)取决于成像物体表面特性,反映图像细节信息,频谱集中在高频区域。具体步骤如下。

对式(14)两边同时取对数,得到:

对上式进行傅里叶变换,得到频域的表达式:

对G(u ,v)乘上同态滤波函数H(u ,v ),得到:

对上式进行傅里叶逆变换,转换到空间域:

指数变换得到同态滤波后的图像:

3 算法流程

首先,将原图像从RGB空间转换到HSV空间[12],仅对明度分量V进行限制对比度自适应直方图均衡;将图像划分为大小相等的子块,确定裁剪幅值后对每个子块直方图进行裁剪和分配,再根据自适应上下限阈值对直方图进行二次分配;然后对每个子块进行直方图均衡化处理,并对不同区域的像素进行插值运算;最后,对灰度图像进行同态滤波处理并与明度分量V进行加权求和,与H、S分量融合后转回RGB空间获得最终输出图像。算法流程如图(4)所示。

图4 算法流程图

4 实验与分析

本文算法的开发环境为visual studio 2015、opencv 3.2.0,实验所用图像均为水下专用彩色摄像头拍摄,为了模拟真实水下环境,在水箱中加入颜料以及杂质等,拍摄时光线条件及拍摄角度各不相同且对比度都较低。为了验证本文算法的有效性,对其以及HE算法、CLAHE算法、MSRCR算法进行实验对比,实验结果如图5~图9所示。其中,图5(a)为白天拍摄,光照较为充足,但是水箱边框处的条纹出现模糊,而绿色物体周围由于前面物体的遮挡显得较暗;图5(b)拍摄时的光线不够充足,图像四周偏暗,整体较为模糊;图5(c)的拍摄环境为晚上,因此采用水下LED灯为其照明,图像出现了严重的光照不均,中心区域过亮且存在反光,而周围区域普遍过暗,远处的水箱边框细节几乎看不到。

4.1 定性分析

由图6可以看出,HE算法对于对比度的提升不够明显,反而加重了图像中局部区域的过暗及过亮的程度,丢失了更多的细节信息。图7中,MSRCR算法一定程度上提升了图像对比度,但是三幅图像出现了不同程度的色彩偏差,尤其是物体边缘,图像失真较为严重。图8(b)中,CLAHE算法提升了图像的对比度,但是相较于图9(b),依然存在部分偏暗区域。图8(c)中,CLAHE算法对于整体亮度提升不够明显,且球体反光较为严重;而图9(c)中,本文算法较好地提升了图像亮度和对比度,可以清晰地看见水箱边框,并且球体表面细节也更加突出。

图5 原始图像

图6 HE算法处理结果

图7 MSRCR算法处理结果

图8 CLAHE算法处理结果

图9 本文算法处理结果

4.2 定量分析

为了能够对各个算法进行更精确的分析对比,选取峰值信噪比(PSNR)和结构相似性指数(SSIM)作为客观的评价指标。PSNR是使用较为广泛的一种评价指标,它基于对应像素点间的误差对图像质量进行评价,数值越大表示失真越小,计算公式如下。

式中,H,W分别为图像的高度和宽度;X,Y分别表示待评价图像和原图像;n为像素的比特数,一般取8;MSE为均方误差。

SSIM分别从亮度、对比度、结构三个方面评价图像质量,其值越接近1则图像失真越小,越接近0则失真越大,其计算公式如下:

其中,μX,μY分别表示图像 X,Y 的均值;分别表示图像X,Y的方差;σXY表示图像 X,Y的协方差。

各算法的评价指标PSNR,SSIM分别见表1、表2。

表1 各算法PSNR值

表2 各算法SSIM值

5 结语

本文根据水下成像的特点,在限制对比度自适应直方图均衡算法的基础上,提出一种改进算法。该算法由像素的直方图分布确定裁剪幅值,解决了部分子块得不到增强的问题;对超出幅值部分的二次分配增强了图像细节;而同态滤波的引入则改善了光照不均。实验结果表明,本文算法在增强水下图像对比度的同时,能够较好地还原过暗或过亮区域的细节,且不存在图像失真,有效地提升了水下图像的质量。

猜你喜欢
直方图幅值分配
室温下7050铝合金循环变形研究
1种新型燃油分配方案设计
Crying Foul
遗产的分配
用直方图控制画面影调
可靠性步进电机细分驱动技术研究
例析频率分布直方图
中考频数分布直方图题型展示
平地机作业负载谱分析
Prevention of aspiration of gastric contents during attempt in tracheal intubation in the semi-lateral and lateral positions