【2024APMCM亚太杯A题】详细解题思路
A题 复杂场景下的水下图像增强研究
- 解题思路
- 问题一
- 图像统计分析技术
- 一、检测 偏色 的技术
- 二、检测 弱光 的技术
- 三、检测 模糊 的技术
- 聚类算法
- 问题二
- 问题三
- 问题四
- 完整论文与代码
解题思路

问题一
问题 1:请使用类似上文提到的图像统计分析技术,对附件 1 提供的水下图像进行多角度分析。将附件 1 提供的图像分为偏色、弱光、模糊三类,并在“Answer.xls”附件中三个位置填写文件名,并说明这样分类的原因。

图像统计分析技术
除了文中提到的直方图和边缘算子,以下是一些常见的图像统计分析技术,这些技术可用于对水下图像或其他图像进行深入分析:
- 灰度共生矩阵(GLCM)
用于分析图像的纹理特征,通过统计像素灰度值之间的空间关系提取特征,例如对比度、能量、熵和相关性。 - 频域分析
通过傅里叶变换将图像从空间域转换到频域,分析图像的频率分布,例如低频区域用于检测整体亮度分布,高频区域用于检测边缘和纹理。 - 颜色空间转换与分析
将图像从RGB空间转换到其他颜色空间(如HSV、Lab),分析亮度、饱和度和色调的分布,用于处理水下光照和色彩失真的问题。 - 梯度计算
利用梯度算子(如Sobel、Prewitt、Scharr)计算图像的梯度强度和方向,以检测边缘清晰度和形状特征。 - 熵计算
图像熵用于量化图像中信息的复杂度。熵越高,表示图像信息越丰富,随机性越高。 - 小波变换
通过小波分解图像,分析其不同尺度的细节和纹理特征,用于检测图像的细节信息和去噪处理。 - 边缘分割和轮廓分析
应用Canny、Laplacian等边缘检测算子,通过统计物体轮廓的长度、面积或形状,获取图像中目标的结构信息。 - 光流分析
用于动态图像或视频中,统计像素的运动信息(如方向和速度),评估水下物体移动的轨迹。 - 直方图均衡化与统计
分析图像亮度值分布,检查亮度均匀性并评估对比度调整的效果。 - 图像特征点统计
通过特征点检测算法(如SIFT、SURF、ORB)统计图像中的关键点密度和分布,用于评估图像质量或检测关键区域。 - 噪声分布分析
分析图像中的噪声类型(高斯噪声、椒盐噪声等)及其强度,确定去噪处理的必要性和方法。 - 形态学分析
使用数学形态学操作(如腐蚀、膨胀、开运算和闭运算)分析图像结构和目标物体的形态特征。 - 亮度对比分析
统计图像中明暗区域的分布比例,分析亮度对比度是否适合人眼感知。
一、检测 偏色 的技术
1.颜色直方图分析
统计不同通道(R、G、B或HSV空间中的H通道)的颜色分布,检查颜色是否集中在某一特定通道上。例如,偏蓝或偏绿色可能是水下图像常见的偏色情况。
2.颜色空间转换与分析
转换到Lab或YUV颜色空间,分析亮度(L通道)和色彩信息(a、b通道)的偏移程度。Lab颜色空间中的a、b分量可以直观反映色彩失衡。
3.白平衡检测
计算图像中灰度均衡性是否异常,例如通过灰度世界假设(Gray World Assumption)检测整体色彩是否失衡。
4.颜色饱和度检测
在HSV颜色空间中分析S通道分布。如果S值异常集中或过低,可能暗示偏色情况。
二、检测 弱光 的技术
1.亮度直方图分析
分析图像灰度分布或亮度分布(Y通道、L通道或HSV的V通道)。当亮度值集中在低范围时,可以判定图像为弱光。
2.对比度测量
使用亮度对比度公式(如对比度=亮度最大值与最小值的差值)检测整体对比度。弱光图像通常对比度较低。
3.熵计算
弱光图像的信息熵较低,因为暗区像素分布单一,图像信息不丰富。
4.伽马分布分析
检测亮度分布曲线是否偏向低值区域,低伽马值可能表明弱光问题。
5.动态范围分析
检查图像的动态范围(即亮度值从最低到最高的跨度)。弱光图像动态范围通常较窄。
三、检测 模糊 的技术
1.梯度分布统计
使用梯度算子(如Sobel、Prewitt)统计图像中梯度值的分布情况。模糊图像通常梯度强度较低,边缘模糊。
2.拉普拉斯方差分析
计算图像的拉普拉斯算子方差。如果方差值过低,说明图像的清晰度较差。
3.频域分析
对图像进行傅里叶变换,分析高频分量的分布。模糊图像高频成分衰减显著。
4.边缘检测结果统计
使用Canny或其他边缘检测算法统计边缘数量和清晰度。如果边缘数量明显减少或边缘较软,则可能是模糊图像。
5.对比度梯度分析(Contrast Gradient Analysis)
模糊图像的局部对比度梯度变化较小,清晰度低。
6.视觉感知清晰度模型(VSI)
通过视觉感知清晰度指数(Visual Saliency Index)分析图像模糊程度,模拟人眼感知。
聚类算法
将所有特征进行值计算出来,进行聚类算法。


问题二
基于问题 1 中提出的退化类型,利用问题中提供的水下成像模型,构建附有图像的水下场景图像退化模型。分析不同场景 [1] 拍摄的水下图像的退化原因(包括但不限于偏色、弱光等)。分析这些退化模型的相同点或不同点(例如,从颜色、光照、清晰度等角度进行分类)。
- 偏色
偏色主要由水对不同波长光的吸收和散射导致。由于水对红光吸收更强、对蓝光吸收较弱,深水区域通常会出现偏蓝或偏绿色现象。
原因分析:
水深:光吸收随着水深增加,红光消失,绿光和蓝光主导。
水体成分:悬浮颗粒和有机物会改变光的散射特性。
环境光变化:水下环境光随光源类型、光照强度和方向变化。 - 弱光
弱光由环境光随深度衰减和光散射引起,导致整体亮度降低。
原因分析:
光照强度不足:在深水或阴影区域,光线衰减较快。
后向散射分量:增加了散射光线,导致环境光的有效亮度降低。
光透射率变化:水体浑浊度降低了光传递到目标的能力。 - 模糊
模糊通常是由前向散射引起的。光线被悬浮颗粒散射后进入成像系统,形成模糊的视觉效果。
原因分析:
悬浮颗粒的浓度:颗粒密度增加会导致更多的前向散射。
物体与相机的距离:距离越远,散射效应越显著,导致图像模糊。

具体退化类型的影响可以通过调整参数进行模拟:
1.偏色:在 J(x)中增加颜色吸收模型(对 R/G/B 三通道的光强分别进行非线性衰减)。

2.弱光:降低环境光 B 的强度,同时调整透射率 t(x) 使整体亮度衰减。
弱光表现为整体亮度降低,常由环境光衰减、后向散射等引起。弱光退化可以通过调整环境光强度 B 和透射率 t(x) 来模拟。

3.模糊:加入基于前向散射的点扩散函数(PSF),模拟悬浮颗粒散射导致的模糊效果。

问题三
问题 3:基于问题 2 中建立的水下场景图像退化模型,提出针对单一场景(如偏色、模糊、弱光)量身定制的水下图像增强方法,并使用附件中提供的图像数据验证所提出的增强方法。将附件 2 中的测试图像的增强结果及其对应的评价指标纳入论文中,计算并呈现输出图像的 PSNR、UCIQE、UIQM 等评价指标,并填入“Answer.xls”中提供的附件 1 结果表格中。
增强方法:基于颜色校正与光照补偿的多阶段方法



偏色校正:
- 使用光吸收补偿模型恢复不同波长的光信息。
- 动态白平衡增强整体颜色均衡性。
亮度补偿: - CLAHE 和伽马校正提高暗区域的亮度和对比度。
视觉优化: - 高斯滤波器和 Retinex 进一步平滑颜色过渡,并增强细节。
问题四
现有的水下图像增强模型在不同场景下的建模适应性存在差异。请结合上述问题和附件中提供的图像,提出一种针对复杂场景的水下图像增强模型(例如非物理模型,可参考文献[2]-[5]),该模型应能够增强多种复杂场景下的水下图像退化问题。将附件2中测试图像的增强结果及其对应的评价指标纳入论文展示,计算并输出输出图像的PSNR、UCIQE、UIQM等评价指标,并填入“Answer.xls”中附件2结果表格中。
提出一种联合优化网络 (Joint Optimization Network, JONet),包括以下模块:
1.多通道特征提取模块(MCFE)
用于捕获不同通道的颜色、纹理和亮度特征。
2.全局与局部增强模块(GLE-LFE)
用于处理光照不均和局部模糊问题。
3.多任务损失函数(MTL)
联合优化图像的颜色校正、对比度增强和清晰度。



- 训练数据:使用公开水下图像数据集(如 UIEB 数据集)和生成的合成退化图像。
- 训练过程:
- 数据增强:包括模拟偏色、弱光和模糊退化。
- 优化器:使用 Adam 优化器,学习率设置为 10^{-4}。
- 推理过程:输入退化图像,直接输出增强图像 I′(x)。

完整论文与代码
完成解题思路,以及完整论文代码请看下方~
相关文章:
【2024APMCM亚太杯A题】详细解题思路
A题 复杂场景下的水下图像增强研究 解题思路问题一图像统计分析技术一、检测 偏色 的技术二、检测 弱光 的技术三、检测 模糊 的技术 聚类算法 问题二问题三问题四完整论文与代码 解题思路 问题一 问题 1:请使用类似上文提到的图像统计分析技术,对附件 …...
用 React18 构建Tic-Tac-Toe(井字棋)游戏
下面是一个完整的 Tic-Tac-Toe(井字棋)游戏的实现,用 React 构建。包括核心逻辑和组件分离,支持两人对战。 1. 初始化 React 项目: npx create-react-app tic-tac-toe cd tic-tac-toe2.文件结构 src/ ├── App.js…...
数据结构及算法--排序篇
在 C 语言中,可以通过嵌套循环和比较运算符来实现常见的排序算法,比如冒泡排序、选择排序或插入排序 目录 基础算法: 1.冒泡排序(Bubble Sort) 2.选择排序(Selection Sort) 3.插入排序&…...
泷羽sec学习打卡-网络七层杀伤链1
声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 关于蓝队基础的那些事儿-Base1 基本的企业网络架构是怎样的呢?高层管理IT管理影子IT中央技术…...
【QT】绘图
个人主页~ 绘图 一、绘图1、基础内容2、绘制形状(1)线段(2)矩形(3)圆形(4)文本(5)画笔(6)画刷 3、绘制图片(1)…...
vue3+elementui-plus el-dialog全局配置点击空白处不关闭弹窗
在与main.ts同级下的plugins文件夹(如果没有,新建一个)下建一个element.js文件(名字随便取) element.js文件内容如下: import ElementPlus from element-plus export default (app) > {console.log(app…...
Markdown语法说明
这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…...
推荐一款专业电脑护眼工具:CareUEyes Pro
CareUEyes Pro是一款非常好用的专业电脑护眼工具,软件小巧,界面简单,它可以自动过滤电脑屏幕的蓝光,让屏幕显示更加的不伤眼,更加舒适,有效保护你的眼睛,可以自定义调节屏幕的色调,从…...
对subprocess启动的子进程使用VSCode python debugger
文章目录 1 情况概要(和文件结构)2 具体设置和启动步骤2.1 具体配置Step 1 针对attach debugger到子进程Step 2 针对子进程的暂停(可选) Step 3 判断哪个进程id是需要的子进程 2.2 启动步骤和过程 3 其他问题解决3.13.2 ptrace: Operation not permitted…...
Django启用国际化支持(2)—实现界面内切换语言:activate()
文章目录 ⭐注意⭐1. 配置项目全局设置:启用国际化2. 编写视图函数3. 配置路由4. 界面演示5、扩展自动识别并切换到当前语言设置语言并保存到Session设置语言并保存到 Cookie ⭐注意⭐ 以下操作依赖于 Django 项目的国际化支持。如果你不清楚如何启用国际化功能&am…...
基于单片机的多功能跑步机控制系统
本设计基于单片机的一种多功能跑步机控制系统。该系统以STM32单片机为主控制器,由七个电路模块组成,分别是:单片机模块、电机控制模块、心率检测模块、音乐播放模块、液晶显示模块、语音控制模块、电源模块。其中,单片机模块是整个…...
VSCode 如何选中包含某个字母的所有行
文章目录 写在前面一、需求描述二、解决方法参考链接 写在前面 自己的测试环境:VSCode 一、需求描述 由于需要处理文件,需求是删除文件中包含某个字母的所有行。 二、解决方法 在 Visual Studio Code (VSCode) 中,如果你想选中所有包含某…...
CSRF保护--laravel进阶篇
laravel对csrf非常重视,专门针对csrf作出了很多的保护。如果您是刚刚接触laravel的路由不久,那么您可能对于web.php路由文件的post请求很疑惑,因为get请求很顺利,而post请求则可能会遭遇失败。其中一个失败的原因是由于laravel的c…...
计算机网络-理论部分(二):应用层
网络应用体系结构 Client-Server客户-服务器体系结构:如Web,FTP,Telnet等Peer-Peer:点对点P2P结构,如BitTorrent 应用层协议定义了: 交换的报文类型,请求or响应报文类型的语法字段的含义如何…...
k8s1.31版本最新版本集群使用容器镜像仓库Harbor
虚拟机 rocky9.4 linux master node01 node02 已部署k8s集群版本 1.31 方法 一 使用容器部署harbor (1) wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo yum -y install docker-ce systemctl enable docker…...
QT中使用json格式存取矩阵数据
在 Qt 中,可以通过 QJsonDocument 和 QJsonArray 方便地存取 JSON 格式的矩阵数据。以下是存储和读取矩阵数据的完整实现示例。 1. 矩阵存储为 JSON 将矩阵(QVector<QVector<double>> 或其他二维数组)存储为 JSON 文件。 实现代码 #include <QJsonArray&g…...
k8s 集群安装
安装rockylinux https://www.jianshu.com/p/a5fe20318b8e https://www.cnblogs.com/haoee/p/18290506 配置VirtualBox双网卡 https://www.cnblogs.com/ShineLeBlog/p/17580311.html https://zhuanlan.zhihu.com/p/341328334 https://blog.csdn.net/qq_36544785/article/deta…...
Elasticsearch面试内容整理-核心概念与数据模型
在 Elasticsearch 中,理解核心概念与数据模型是非常重要的,因为它们定义了数据如何被组织、存储和搜索。以下是 Elasticsearch 的核心概念和数据模型的详细介绍。 核心概念 集群(Cluster) ● 集群是由一个或多个节点组成的,用于共同存储和搜索数据的集合。...
Spring Boot实现License生成和校验
Spring Boot实现License生成和校验 证书准备 # 1. 生成私钥库 # validity:私钥的有效期(天) # alias:私钥别称 # keystore:私钥库文件名称(生成在当前目录) # storepass:私钥库密码…...
es写入磁盘的过程以及相关优化
数据写入到内存buffer同时写入到数据到translog buffer,这是为了防止数据不会丢失每隔1s数据从buffer中refresh到FileSystemCache中,生成segment文件,这是因为写入磁盘的过程相对耗时,借助FileSystemCache,一旦生成segment文件,就能通过索引查询到了refresh完,memory bu…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...
AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
并发编程 - go版
1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...
PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...
ubuntu22.04有线网络无法连接,图标也没了
今天突然无法有线网络无法连接任何设备,并且图标都没了 错误案例 往上一顿搜索,试了很多博客都不行,比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动,重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10pip3.10) 一:前言二:安装编译依赖二:安装Python3.10三:安装PIP3.10四:安装Paddlepaddle基础框架4.1…...
jdbc查询mysql数据库时,出现id顺序错误的情况
我在repository中的查询语句如下所示,即传入一个List<intager>的数据,返回这些id的问题列表。但是由于数据库查询时ID列表的顺序与预期不一致,会导致返回的id是从小到大排列的,但我不希望这样。 Query("SELECT NEW com…...
