【图像增强】Underwater Image Enhancement via Piecewise ColorCorrection and Dual Prior OptimizedContrast
目录
前言
Abstract-摘要
一、Introduction-引言
二、Background-背景
2.1水下成像的重要性与水下图像面临的问题
2.2现有水下图像增强(UIE)方法及局限
三、Method-方法
3.1分段颜色校正(LACC)
3.1.1分段颜色校正-方法
3.1.2分段颜色校正-结果(验证)
3.2双重优先优化对比度增强(DPOCE)
3.2.1图片分解
3.2.2基本层增强
3.2.3细节层增强
3.3图像融合
四、summary-总结
前言
该研究发表于IEEE Signal Processing Letters期刊上,在2023年11月完成。主要作者张东卫具有党员身份,并获得博士学位。他受聘于河南科技学院信息工程学院担任特聘岗位教授一职。长期致力于图像增强技术研究,在视觉效果欠佳的图像处理方面取得了显著成果,并在智慧农业和深度学习领域展开深入探索。
文献地址:https://ieeexplore.ieee.org/document/10065491
代码地址:https://github.com/Li-Chongyi/PCDE
Abstract-摘要
翻译
由于光的吸收与散射的影响,在水下采集到的图像往往会呈现明显的质量退化现象。本文提出了一种基于分段颜色校正与双重先验优化对比度增强的方法来解决这一问题。首先介绍了一种基于最大均值模型及两个增益因子的逐段颜色校正方法来校正各色通道中的偏色现象;在此基础上进一步提出了一种基于空间与纹理先验信息的双先验优化对比度增强方法;该方法在HSV颜色空间中分别对V通道的基本层与细节层进行了分解分析,并根据不同层次的特点采取相应的增强策略以提升水下图像的空间对比度及纹理细节表现能力;通过在多个基准数据集上的大量对比实验表明;所提出的该方法较现有的11种先进算法具有更好的性能表现;此外;该算法对于复杂天气条件下的图像处理也展现出较强的适应性
一、Introduction-引言
文章以主题形式展开深入探讨水下图像增强技术。首先通过详细论述多方面因素导致水下图像成像效果欠佳并客观分析现有水下图像增强方法的技术局限性为后续研究提供理论基础。其次本研究提出了一种创新性的解决方案即基于分段式的色彩平衡校正策略结合双重先验约束下的对比度优化提升策略提出了新的水下图像增强方法并对其具体实现过程进行了详细描述。最后本工作主要贡献体现在两个方面:一是建立了一个完整的色彩平衡与对比度提升协同优化模型二是实现了算法在保持细节完整性的同时显著提升了图像的空间清晰度和视觉体验效果
二、Background-背景
2.1水下成像的重要性与水下图像面临的问题
水下成像在海洋科学考察、水下机器人研究以及水体中物体识别等多个领域发挥着核心作用,并被广泛认为是感知与理解水下环境的关键信息载体。
然而,
由于
光的波长依赖型吸收与散射特性
以及
光照不足
等因素的影响,
水中图像呈现明显的降色与对比度下降现象
。
例如,
在光的特性应用中发现选择性吸收导致图像呈现颜色偏移问题。
此外,
在光的传播特性中发现光散射导致图像细节模糊与对比度降低的现象。
2.2现有水下图像增强(UIE)方法及局限
当前,在应对水下图像质量退化问题的方法中主要包含非模型驱动、模型驱动以及数据驱动这三类方法
- 非模型驱动方法:依赖修改图像像素值以增强图像质量 ,这类技术主要包括基于Retinex原理、基于直方图均衡化的技术和基于多层融合的方法等。例如,在Zhang等人提出的方法中,他们采用最小颜色失真策略校正色偏问题,并运用自适应对比度增强策略来局部提升图像对比度。然而这些技术往往忽视了图像的纹理细节特征,在增强后的图像中容易出现过饱和现象。
- 模型驱动方法:基于先验信息推导出成像模型参数以重建高清晰度图像 ,其代表性的先验模型包括最小信息损失先验、场景深度先验、统计先验以及稀疏性先验等。例如Peng等人提出了适用于多种退化情况的广义暗通道模型框架,并由Ding等人引入全变差正则化技术细化透射图估计。然而这些方法未能充分考虑图像的空间分布特征与纹理特性,在重建细节层面仍显不足。
- 数据驱动方法:基于大量标注数据 ,借助生成对抗网络(GAN)或图神经网络(GNN)等深度学习架构已取得显著成果应用在水下图像增强领域。例如Song等人提出了一种协同增强网络框架考虑不同水下场景下的退化特性相似性,并结合强化学习与孪生对抗对比学习技术进一步提升性能表现。不过现有研究主要局限于有限规模的高质量训练集,在实际应用中由于难以获得足量高质量标注样本限制了深度学习算法的有效性和泛化能力。
三、Method-方法

整个流程包括逐段颜色校正以及应用双重优先优化对比度增强技术(DPOCE)两部分
在分段颜色校正环节:首先基于最大均值法对每个颜色通道进行划分为两个区间。随后引入两个增益因子的分段颜色校正策略以根据各通道的具体情况自动调整。
在双重优先优化对比度增强环节:开发了一种基于双重先验信息的对比度提升策略以提高色彩校正图像的质量。具体而言,在这一过程中将空间先教材应用于基础层面上以改善图像质量,并通过处理纹理特征来提升细节层的空间锐利性。
3.1分段颜色校正(LACC)
水下的图像因复杂因素和光线条件而易受偏色影响。首要任务是对颜色图像进行色彩校准以获得高可见度。
3.1.1分段颜色校正-方法
该文提出了一种基于分段线性传输的技术用于颜色校正。随后对每个颜色通道计算其灰度均值,并用数学表达式表示为:

H, W分别表示输入图片的高与宽,在后续研究中本文将采用以下公式来进行最大灰度均值的求解

随后,本文使用参考值对每个颜色通道实施分段校正,其定义为:


**

**


表示各个通道内各部分的增益调节系数。当输入参考信号(IRef)小于输出信号强度(Ic)时,在输入参考信号低于输出信号强度的情形下,则将每个颜色通道对应的灰度值拉伸至区间(IRef, 255)。同样地,在输入参考信号大于等于输出信号强度的情形下,则将每个颜色通道对应的灰度值拉伸至区间[0, IRef]范围之内。经过重新定义后变为:

function Final = PCC(I)
R = I(:, :, 1);
G = I(:, :, 2);
B = I(:, :, 3);
avR = mean2(R);
avG = mean2(G);
avB = mean2(B);
Ref = [avR, avG, avB];
Ref = max(Ref);
S1 = max(max(R(:))) - min(min(R(:)));
S2 = max(max(G(:))) - min(min(G(:)));
S3 = max(max(B(:))) - min(min(B(:)));
a = max([double(avR / 255), double(avG / 255), double(avB / 255)]);
b = [double(255 / S1), double(255 / S2), double(255 / S3)];
[m, n] = size(R);
for x = 1:m
for y = 1:n
if R(x, y) <= avR
RC(x, y) = Ref - a * (avR - R(x, y));
else
RC(x, y) = Ref + b(1) * (R(x, y) - avR);
end
if G(x, y) <= avG
GC(x, y) = Ref - a * (avG - G(x, y));
else
GC(x, y) = Ref + b(2) * (G(x, y) - avG);
end
if B(x, y) <= avB
BC(x, y) = Ref - a * (avB - B(x, y));
else
BC(x, y) = Ref + b(3) * (B(x, y) - avB);
end
end
end
Final = cat(3, uint8(RC), uint8(GC), uint8(BC));
3.1.2分段颜色校正-结果(验证)

原始图像源和采用PCC进行色彩校正后的图像的三色直方图。上部区域展示原始图像;下部区域展示了基于所述方法的颜色校正后的结果。
from PIL import Image
import matplotlib.pyplot as plt
from matplotlib_inline import backend_inline
import numpy as np
class plot:
def __init__(self) -> None:
pass
def use_svg_display(self):
backend_inline.set_matplotlib_formats('svg')
def set_figsize(self,figsize=(3.5,2.5)):
self.use_svg_display()
plt.rcParams['figure.figsize']=figsize
def set_axes(self,axes,xlabel,ylabel,xlim,ylim,xscale,yscale,legend):
axes.set_xlabel(xlabel)
axes.set_ylabel(ylabel)
axes.set_xlim(xlim)
axes.set_ylim(ylim)
axes.set_xscale(xscale)
axes.set_yscale(yscale)
if legend:
axes.legend(legend)
axes.grid()
def plot(self,X,Y=None,xlabel=None,ylabel=None,legend=None,xlim=None,ylim=None,
xscale='linear',yscale='linear',lengend=None,axes=None,figsize=(3.5,2.5),
fmts=['r','g--','b-.','p:']):
if legend is None:
legend=[]
self.set_figsize(figsize)
axes=axes if axes else plt.gca()
def has_one_axis(X):
return(hasattr(X,"ndim") and X.ndim==1 or isinstance(X,list) and
not hasattr(X[0],"__len__"))
if has_one_axis(X):
X=[X]
if Y is None:
X,Y=[[]]*len(X),X
elif has_one_axis(Y):
Y=[Y]
if len(X) !=len(Y):
X=X*len(Y)
axes.cla()
for x,y,fmt in zip(X,Y,fmts):
axes.plot(x,y,fmt)
self.set_axes(axes,xlabel,ylabel,xlim,ylim,xscale,yscale,legend)
# 读取图像
image = Image.open('../test/1.jpg')
# 获取像素数据
pixels = image.load()
width, height = image.size
# 分别用于存储每个像素位置各通道的值
pixel_values_red = np.zeros(256)
pixel_values_green = np.zeros(256)
pixel_values_blue = np.zeros(256)
for y in range(height):
for x in range(width):
r, g, b = pixels[x, y]
pixel_values_red[r]+=1
pixel_values_green[g]+=1
pixel_values_blue[b]+=1
x=np.arange(0,256,1)
myplot=plot()
myplot.plot(x,[pixel_values_red,pixel_values_green,pixel_values_blue],xlabel='Pixel_values',
ylabel='pixel_number',figsize=(4.5,2.5),legend=['r','g','b'])
3.2 双重优先优化对比度增强(DPOCE**)**
3.2.1图片分解
基于空间信息与纹理特征提取的V通道基本层与细节层分解方法 ,能够有效解决低对比度与细节模糊的问题。将输入图像、基本层以及细节层分别定义为IV、IB,并进一步表示为IV-IB。所提出的层分解优化模型以矩阵向量的形式定义为:

其中

和

分别表示I_{V}和I_{B}的级联向量形式,N表示输入图像的像素的总数,并且

表示不同方向上的梯度运算矩阵的表达式。

强制基层尽可能靠近输入图像。然后,我们在第二项中引入基本层

的空间先验.同时,在第三项

在细节层次的纹理级别上进行处理,在细节层次上进行操作时会生成一个二进制向量表示。为了简化描述过程, 我们引入了两个辅助变量来辅助运算

和

替代

和

最后,增广拉格朗日模型被重新定义为:

其中j₁和j₂分别代表拉格朗日函数中的两个变量。\n
本文采用**交替方向乘法(ADMM)**这一技术手段,在最小化若干个子问题的同时最大化一对问题以实现目标函数的迭代优化。\n
当λ₁设定为0.25且λ₂设定为0.025时,在进行广泛的数据统计分析后发现,在约二十次迭代过程中ADMM能够有效实现对输入图像基础层面信息的分解逼近。\n
在求解出基本层面信息后,则可以通过ID=IV-IB这一公式来进行细节层面信息的计算。\n
随后我们依次针对不同增强操作的基础层面与细节层面展开具体实施。

function [D, B] = LLD(S, lambda1, lambda2)
iter = 3;
[hei, wid] = size(S);
fx = [1, - 1];
fy = [1; - 1];
otfFx = psf2otf(fx, [hei, wid]);
otfFy = psf2otf(fy, [hei, wid]);
DxDy = abs(otfFy) .^ 2 + abs(otfFx) .^ 2;
B = S;
C = zeros(hei, wid * 2);
E = zeros(hei, wid * 2);
L1 = zeros(hei, wid * 2);
L2 = zeros(hei, wid * 2);
ro1 = 1;
ro2 = 1;
DiffS = [- imfilter(S, fx, 'circular'), - imfilter(S, fy, 'circular')];
for i = 1:iter
CL = C + L1 ./ ro1;
EL = DiffS - E - L2 ./ ro2;
C1L1 = CL(:, 1:wid);
C2L2 = CL(:, 1 + wid:end);
E1L3 = EL(:, 1:wid);
E2L4 = EL(:, 1 + wid:end);
Nomi = fft2(S) + ro1 .* conj(otfFx) .* fft2(C1L1) + ro1 .* conj(otfFy) .* fft2(C2L2);
+ ro2 .* conj(otfFx) .* fft2(E1L3) + ro2 .* conj(otfFy) .* fft2(E2L4);
Denomi = 1 + (ro1 + ro2) .* DxDy;
B_new = real(ifft2(Nomi ./ Denomi));
DiffB = [- imfilter(B_new, fx, 'circular'), - imfilter(B_new, fy, 'circular')];
BL = DiffB - L1 ./ ro1;
C_new = sign(BL) .* max(abs(BL) - lambda1 ./ ro1, 0);
BL = DiffS - DiffB - L2 ./ ro2;
E_new = BL;
temp = BL .^ 2;
t = temp < 2 .* lambda2 ./ ro2;
E_new(t) = 0;
L1_new = L1 + ro1 * (C_new - DiffB);
L2_new = L2 + ro2 * (E_new - DiffS + DiffB);
ro1 = ro1 * 4;
ro2 = ro2 * 4;
B = B_new;
C = C_new;
E = E_new;
L1 = L1_new;
L2 = L2_new;
end
D = S - B;
end
3.2.2基本层增强
在基础层次上充分考虑到局部图像块的优势特性,并对该基础层次进行强化处理。其中,“将每个局部块K的平均值视为低频分量”,而剩余的部分信息则被视为高频分量。“高频成分的优化是提升细节的关键所在。”为了简化说明过程,在此我们仅以一个典型的小区域——即局部图像块K为例来进行详细说明。“通过积分映射计算该区域内的均值,并将该均值应用于基础层次的增强过程中。”整个提升过程则定义如下:

其中,

是局部图像块的平均值,δ是高频分量的增强控制参数,

是增强机制的基础架构。基于统计分析的结果表明,在图像块尺寸K设定为20×20像素、参数δ取值为2的情况下(其中图像块尺寸K设定为20×20像素、参数δ取值为2),所实现的增强效果较为理想。为了优化局部区域增强过程中的伪影或局部过暗现象,在本研究中我们认为Gamma校正策略在处理低像素值时展现出更为显著的效果 ,因此决定将公式重新定义为此处公式

在其中θ被视为校正因子参数,在统计结果表明该参数赋值为0.65的情况下

。

I = double(B1);
r=10;
[hei, wid] = size(I);
N = boxfilter(ones(hei, wid), r);
Mean = boxfilter(I, r) ./ N;
p = (Mean + 4.0 * (I - Mean));
v = p;
v = im2double(v);
v = abs((v .^ 0.95));
imwrite(double(v), fullfile(results_dir, [img_name, '_BE.jpg']));
3.2.3细节层增强
在处理细节层次时, 我们增强了图像纹理特征. 随后通过应用非线性增强函数对细节层次进行了进一步增强. 该非线性拉伸函数表示如下其中σ是用于控制拉伸程度的一个参数值,默认设为0.88.


a = 0.88
sigma = max(D1(:));
g = 0
index_low = abs(x - g) <= sigma;
temp = x(index_low);
DE = g + fd(abs(temp - g) ./ sigma, a) .* sigma .* sign(temp - g);
function y = fd(x, a)
y = x .^ a;
end
3.3图像融合
随后,我们使用增强的细节层和增强的基础层来获得增强的V通道 ,其被定义为如下其中

基于HSI色彩空间中的V通道进行增强。经过HSI色彩空间至RGB的空间变换后得到最终结果。



四、summary-总结
我们提出了一种新型的水下图像增强方案。首先分析了水中影像存在的色偏现象。随后,在处理基础层与细节层时采用了V通道分离法,在HSV颜色空间中分别应用了基于空间信息和纹理特征的信息融合技术。通过定性观察与定量评估的方法对比实验结果表明,在提升影像清晰度方面所构建的方法具有显著优势。
