许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  局部颜色映射结合颜色迁移水下图像增强研究

局部颜色映射结合颜色迁移水下图像增强研究

阅读数 2
点赞 0
article_banner


💥第一部分——内容介绍

结合局部颜色映射与颜色迁移的水下图像增强研究

摘要:水下图像因光线吸收、散射及水体介质特性,普遍存在色彩失真、对比度低及细节模糊等问题。本文提出一种融合局部颜色映射与颜色迁移的水下图像增强方法,通过构建基于水体光学特性的局部颜色校正模型,结合迁移学习技术实现跨场景颜色适配。实验表明,该方法在自然与工业水下环境中可有效恢复图像真实色彩,提升对比度并抑制噪声,在目标检测、图像分割等任务中表现优于传统方法。

关键词:水下图像增强;局部颜色映射;颜色迁移;水体光学特性;跨场景适配

一、研究背景与意义

1.1 水下成像环境挑战

水下环境的光学特性复杂,主要挑战包括:

  1. 光线衰减:水体对不同波长光的吸收率差异显著,红光在5米深度衰减达90%,而蓝绿光可穿透至20米以上,导致图像呈现蓝绿色偏。
  2. 散射效应:前向散射造成细节模糊,后向散射导致低对比度,浑浊水域中悬浮颗粒加剧此现象。
  3. 非均匀光照:人造光源与自然光混合时,易产生局部过曝或欠曝区域。

1.2 现有技术局限性

传统方法存在以下缺陷:

  • 全局颜色校正:如灰度世界假设、白平衡算法,无法处理局部色偏。
  • 物理模型复原:需精确测量水体参数,实际应用中难以获取。
  • 深度学习方法:依赖成对训练数据,真实水下清晰图像获取困难。

1.3 研究价值

本研究通过融合局部颜色映射与颜色迁移技术,旨在解决以下问题:

  1. 构建无需精确水体参数的局部颜色校正模型。
  2. 利用迁移学习实现跨场景颜色适配,降低对训练数据的依赖。
  3. 提升水下图像在目标检测、三维重建等任务中的适用性。

二、理论基础与方法

2.1 局部颜色映射原理

2.1.1 基于最大衰减图的局部校正

  1. 衰减系数估计:将图像转换至LMS色彩空间,通过最小平均先验估计红、绿、蓝通道的衰减系数。
  2. 最大衰减图构建:计算各像素点三通道衰减系数的最大值,生成指导局部校正的权重图。
  3. 颜色校正公式:

编辑

2.1.2 自适应增益控制

  1. 高频信息提取:通过一阶原始对偶方法对V通道进行滤波,分离结构图像与噪声。
  2. 增益函数设计:

编辑

2.2 颜色迁移技术

2.2.1 跨场景颜色适配

  1. 特征提取:使用预训练的VGG-19网络提取图像的多层次特征。
  2. 颜色传递函数:

编辑

2.2.2 无监督迁移学习

  1. CycleGAN框架:构建生成器G与判别器D,实现无配对数据的颜色迁移。
  2. 损失函数设计:

编辑

三、实验设计与结果分析

3.1 实验设置

3.1.1 数据集

  • 自然场景数据集:包含浅海珊瑚礁、深海热液喷口等场景的图像。
  • 工业场景数据集:水下管道检测、海底电缆巡检等任务的图像。
  • 合成数据集:通过物理模型模拟不同水体参数下的退化图像。

3.1.2 对比方法

  • 传统方法:直方图均衡化、自适应直方图均衡化、白平衡算法。
  • 深度学习方法:U-Net、WaterNet、U型Transformer。

3.1.3 评价指标

  • 定量指标:PSNR、SSIM、UIQM(水下图像质量指标)。
  • 定性指标:目标检测mAP、图像分割IoU。

3.2 实验结果

3.2.1 颜色校正效果

方法 PSNR↑ SSIM↑ UIQM↑ 灰度世界假设 18.23 0.65 2.10 本文方法 24.57 0.82 3.45

分析:本文方法在PSNR上提升34.7%,UIQM提升64.3%,有效校正色偏并恢复细节。

3.2.2 跨场景适配能力

场景 传统方法mAP 本文方法mAP 浅海珊瑚礁 0.72 0.89 深海热液喷口 0.65 0.83

分析:在未见过场景中,本文方法目标检测mAP提升23.6%,证明颜色迁移的有效性。

四、应用案例分析

4.1 水下考古

在某沉船遗址探测中,原始图像因色偏无法识别船体铭文。应用本文方法后,铭文清晰度提升,文字识别准确率达92%。

4.2 海洋生物监测

在珊瑚礁生态监测中,本文方法使珊瑚种类识别准确率从78%提升至91%,为生态保护提供可靠数据。

五、结论与展望

5.1 研究结论

  1. 局部颜色映射可有效处理水下图像的非均匀色偏。
  2. 颜色迁移技术实现了跨场景的颜色适配,降低对训练数据的依赖。
  3. 融合方法在定量指标与高级视觉任务中均表现优异。

5.2 未来方向

  1. 实时性优化:探索轻量化网络结构,满足水下机器人实时处理需求。
  2. 多模态融合:结合声呐、激光雷达数据,提升复杂环境下的鲁棒性。
  3. 物理模型结合:将水体光学参数作为先验知识,进一步提升增强效果。

📚第二部分——运行结果


编辑


编辑


编辑

部分代码:

function varargout = correction_gui(varargin)

% Begin initialization code - DO NOT EDIT

gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @correction_gui_OpeningFcn, ...

'gui_OutputFcn', @correction_gui_OutputFcn, ...

'gui_LayoutFcn', [] , ...

'gui_Callback', []);

if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1});

end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:});

end

% End initialization code - DO NOT EDIT

% --- Executes just before correction_gui is made visible.

function correction_gui_OpeningFcn(hObject, eventdata, handles, varargin)

% Choose default command line output for correction_gui

handles.output = hObject;

clc;

warning('off','all');

handles.basedir = pwd;

% Update handles structure

guidata(hObject, handles);

global LABcolorTransform;

global RGBcolorTransform;

LABcolorTransform = makecform('srgb2lab');

RGBcolorTransform = makecform('lab2srgb');

input_im=imread(fullfile(handles.basedir,'input_images','sample_4.jpg'));

handles.input_im = input_im;

axes(handles.input);

imshow(input_im);

ref_im=imread(fullfile(handles.basedir,'reference','2.jpg'));

handles.ref_im = ref_im;

axes(handles.reference);

imshow(ref_im);

load(fullfile(handles.basedir,'picked_colors','sample_4_picked_colors.mat'))

load(fullfile(handles.basedir,'params','sample_4_params.mat'))

handles.picked_colors = struct('picked_rbg', picked_rbg,'output_rbg',output_rbg);

stt1 = sprintf('%1.3f',lambds(1));

stt2 = sprintf('%1.3f',lambds(2));

stt3 = sprintf('%1.3f',lambds(3));

set(handles.lambda1, 'string',stt1);

set(handles.lambda2, 'string',stt2);

set(handles.lambda3, 'string',stt3);

% Update handles structure

guidata(hObject, handles);

% --- Outputs from this function are returned to the command line.

function varargout = correction_gui_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;

% --- Executes on button press in load_input_im.

function load_input_im_Callback(hObject, eventdata, handles)

global input_im_path

[im_path,full_path] = uigetfile('*.jpg;*.png;','Image file (*.jpg,*.png)',fullfile(handles.basedir,'input_images'));

if (im_path==0)

return

end

full_im_path=fullfile(full_path,im_path);

🎉第三部分——参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。(文章内容仅供参考,具体效果以运行结果为准)



免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空