『红外图像 数据增强』DDE(Digital Detail Enhancement)算法

DDE处理的细节

  1. 分离背景层和细节层:使用特殊的滤波器,将图像分成背景层和细节层。背景层通常包含低频信息,而细节层包含高频信息。

  2. 对背景层进行灰度增强:通过对背景层应用适当的灰度增强算法,提高背景层的对比度和视觉感知。

  3. 对细节层进行细节增强和噪声抑制:细节层中包含着图像的细节信息,可以利用非线性处理方法,例如增强锐化或边缘增强算法来增强细节,并抑制噪声。

  4. 动态范围调整:根据图像的整体动态范围,对背景层和细节层进行动态范围的调整和压缩,以便将原本动态范围较高的图像信息映射到8位输出图像的范围内。

  5. 合成输出图像:将增强后的背景层和细节层重新合成为一幅8位输出图像,以显示大动态温差和目标局部细节信息。

如上,DDE技术通过滤波器分离、背景层和细节层的处理、动态范围调整等步骤,能够提取和突出图像的细节,并将其限制在8位输出图像中,以保留大动态温差和目标局部的细节信息。

分离背景层和细节层:

对背景层进行灰度增强:

两种方法的效果

自适应直方图均衡化

对比度拉伸

对细节层进行细节增强

结果比对:

DDE算法

直接对输入图像 应用 直方图均衡化

直接对输入图像应用自适应直方图均衡化

自适应直方图均衡化(局部对比度增强)

深度学习学习到图像的哪些特征:

边缘特征:边缘,即灰度或颜色变化的地方

纹理特征:即图像中重复的局部结构

形状特征:包括物体的轮廓,形状的几何特征

颜色特征:不同颜色空间的颜色特征,包括颜色分布、颜色直方图

空间结构特征:不同物体之间的空间结构关系,包括物体的相对位置、大小、方向等特征

层次结构特征:从低层次的局部特征到高层次的语义特征

个人总结:

我是为了做红外目标检测才做的DDE数据增强

个人感觉DDE算法将背景和前景区分度加大,提高图像对比度,同时边缘特征、性状特征很清楚

而直方图均衡化有点曝光太强的感觉,边缘特征、性状特征不太清楚

自适应直方图均衡化后,边缘特征、性状特征也比较清楚

DDE算法处理后的比自适应直方图肉眼上看上去更舒服,但是还是需要结合模型训练才能看出DDE算法是否比自适应直方图要好!

代码:

#include <opencv2/opencv.hpp>using namespace cv;int main()
{// 读取输入图像Mat inputImage = imread("/home/jason/work/01-img/infrared.png",IMREAD_GRAYSCALE);imshow("input", inputImage);// -------------------// 执行DDE细节增强// -----------------// 第一步:滤波器分离低频和高频信息Mat blurImg, detailImg;GaussianBlur(inputImage, blurImg, Size(0, 0), 10);detailImg = inputImage - blurImg;imshow("blur", blurImg);imshow("detai", detailImg);// 第二步,对低频信息应用合适的灰度增强算法Mat enhancedBlurImg, enhancedDetailImg;//    double min_val, max_val;// 拉伸对比度
//    cv::minMaxLoc(blurImg, &min_val, &max_val);
//    cv::convertScaleAbs(blurImg, enhancedBlurImg, 255.0/ (max_val - min_val), -255.0 * min_val/ (max_val - min_val));cv::Ptr<cv::CLAHE> clahe = cv::createCLAHE(2.0, cv::Size(8,8)); // 自适应直方图均衡化,用于灰度增强clahe->apply(blurImg, enhancedBlurImg);imshow("enhancedBlurImg", enhancedBlurImg);Mat enhancedBlurImg_blur;cv::bilateralFilter(enhancedBlurImg, enhancedBlurImg_blur, 9, 75, 75); // 双边滤波,用于去除噪声imshow("enhancedBlurImg-blur", enhancedBlurImg_blur);// 第三步,对高频信息应用合适的细节增强和噪声抑制算法cv::Ptr<cv::CLAHE> clahe_ = cv::createCLAHE(); // 自适应直方图均衡化(局部对比度增强),可增强细节clahe_->setClipLimit(4.0);clahe_->apply(detailImg, enhancedDetailImg);imshow("enhancedDetailImg", enhancedDetailImg);//     Mat enhancedDetailImg_blur;
//     cv::fastNlMeansDenoising(enhancedDetailImg, enhancedDetailImg_blur, 10, 10, 7); // NL-Means非局部均值去噪,可抑制噪音
//     imshow("enhancedDetailImg_blur", enhancedDetailImg_blur);// 第四步// 合成最终的输出图像Mat output;cv::addWeighted(enhancedBlurImg, 0.3, enhancedDetailImg, 0.7, 0,output);imshow("output", output);// -------------// 自适应直方图均衡化、直方图均衡化来对比DDE算法效果// -----------Mat out2;cv::Ptr<cv::CLAHE> clahe2 = cv::createCLAHE(2.0, cv::Size(8,8)); // 自适应直方图均衡化,用于灰度增强clahe2->apply(inputImage, out2);imshow("自适应直方图均衡化", out2);Mat out3;cv::equalizeHist(inputImage, out3);imshow("直方图均衡化", out3);// 等待按键退出waitKey(0);return 0;
}


2023.07.19 更新

感觉

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/5308.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

轻量级应用服务器开放端口

关于使用浏览器连接自己所写的TCP进程时&#xff0c;由于没有开放端口&#xff0c;而且搜索到对应的操作来进行开放端口&#xff0c;所以在完成开放端口后特意做个笔记&#xff0c;防止忘记。 登录自己所使用的服务器的网站找到控制台 找到轻量级应用服务器 找到所需要开放端口…

【机器学习】分类算法 - KNN算法(K-近邻算法)KNeighborsClassifier

「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;零基础快速入门人工智能《机器学习入门到精通》 K-近邻算法 1、什么是K-近邻算法&#xff1f;2、K-近邻算法API3、…

最强自动化框架,Pytest自动化测试-动态切换环境实战(超细整理)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 在开始前&#xf…

LangChain大型语言模型(LLM)应用开发(五):评估

LangChain是一个基于大语言模型&#xff08;如ChatGPT&#xff09;用于构建端到端语言模型应用的 Python 框架。它提供了一套工具、组件和接口&#xff0c;可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互&#x…

ceph应用

资源池 Pool 管理 上面我们已经完成了 Ceph 集群的部署&#xff0c;但是我们如何向 Ceph 中存储数据呢&#xff1f;首先我们需要在 Ceph 中定义一个 Pool 资源池。Pool 是 Ceph 中存储 Object 对象抽象概念。我们可以将其理解为 Ceph 存储上划分的逻辑分区&#xff0c;Pool 由多…

Qt6 Qt Quick UI Prototype学习QML第一篇

Qt6 Qt Quick UI原型学习QML第一篇 开始创建项目Qt Quick UI原型简介.qmlproject文件举例Window平台小例子运行效果QML语法 了解语法 开始创建项目 创建一个具有QML入口点的Qt Quick 2 UI项目。要使用它&#xff0c;您需要设置一个QML运行时环境&#xff0c;例如gmlscene。 仅当…

消息队列——rabbitmq的不同工作模式

目录 Work queues 工作队列模式 Pub/Sub 订阅模式 Routing路由模式 Topics通配符模式 工作模式总结 Work queues 工作队列模式 C1和C2属于竞争关系&#xff0c;一个消息只有一个消费者可以取到。 代码部分只需要用两个消费者进程监听同一个队里即可。 两个消费者呈现竞争关…

安全防御 --- DDOS攻击(01)

DOS攻击&#xff08;deny of service&#xff09;--- 拒绝式服务攻击 例&#xff1a;2016年10月21日&#xff0c;美国提供动态DNS服务的DynDNS遭到DDOS攻击&#xff0c;攻击导致许多使用DynDNS服务的网站遭遇访问问题&#xff0c;此事件中&#xff0c;黑客人就是运用了DNS洪水…

golang waitgroup

案例 WaitGroup 可以解决一个 goroutine 等待多个 goroutine 同时结束的场景&#xff0c;这个比较常见的场景就是例如 后端 worker 启动了多个消费者干活&#xff0c;还有爬虫并发爬取数据&#xff0c;多线程下载等等。 我们这里模拟一个 worker 的例子 package mainimport (…

ChatGPT与Claude对比分析

一 简介 1、ChatGPT: 访问地址&#xff1a;https://chat.openai.com/ 由OpenAI研发,2022年11月发布。基于 transformer 结构的大规模语言模型,包含1750亿参数。训练数据集主要是网页文本,聚焦于流畅的对话交互。对话风格友好,回复通顺灵活,富有创造性。存在一定的安全性问题,可…

【深度学习】基于BRET的高级主题检测

一、说明 使用BERT,UMAP和HDBSCAN捕获文档主题,紧随最先进的BERTopic架构(transformer编码器)。 主题检测是一项 NLP 任务,旨在从文本文档语料库中提取全局“主题”。例如,如果正在查看书籍描述的数据集,主题检测将使我们能够将书籍分类,例如:“浪漫”、“科幻”、“旅…

Springboot+Flask+Neo4j+Vue2+Vuex+Uniapp+Mybatis+Echarts+Swagger综合项目学习笔记

文章目录 Neo4j教程&#xff1a;Neo4j高性能图数据库从入门到实战 医疗问答系统算法教程&#xff1a;医学知识图谱问答系统项目示例&#xff1a;neo4j知识图谱 Vueflask 中药中医方剂大数据可视化系统可视化技术&#xff1a;ECharts、D.jsflask教程&#xff1a;速成教程Flask w…

list模拟实现

一、结点的定义 有三个成员&#xff0c;2个指向前面和后面的指针&#xff0c;一个表示结点存储T类型的值。 对于_prev和_next&#xff0c;类型是 list_node<T>*&#xff0c;不是list_node*&#xff0c;加上类型参数T之后&#xff0c;才是模板类的类型。 构造函数中&am…

【MySQL】MySQL8.1.0版本正式发布带来哪些新特性?

文章目录 前言一、畅谈新版本二、8.1.0版本部署2.1、环境准备2.2、配置yum安装依赖2.3、用户及目录创建2.4、创建用户及组2.5、解压缩包2.6、环境变量配置2.7、创建参数文件2.8、数据库初始化2.9、启动Mysql2.10、登陆MySQL 8.1 三、新特性3.1、密码参数3.2、错误日志加强3.3、…

Spring Security OAuth2.0(6):自定义认证自定义登录页

文章目录 自定义登录界面配置自定义登录页面 自定义登录界面 \qquad 你可能想知道登录页面从哪里来&#xff1f;因为我们并没有提供任何的HTML或JSP文件。Spring Security 的默认配置没有明确设定一个登录页面的URL&#xff0c;因此Spring Security 会根据启用的功能自动生成一…

Godot实用代码-存取存档的程序设计

1. Settings.gd 全局变量 用于保存玩家设置 对应Settings.json 2. Data.gd 全局变量 用于保存玩具数据 对应Data.json 实践逻辑指南 1.在游戏开始的时候&#xff08;游戏场景入口的_ready()处&#xff0c; Settings.gd

Linux内核结构与特性简介

系统调用接口&#xff1a;位于最上层&#xff0c;实现了一些基本的功能&#xff0c;如read和write等系统调用。这是用户空间程序与内核交互的接口&#xff0c;提供了对内核功能的访问。 内核代码&#xff1a;位于系统调用接口之下&#xff0c;可以看作是独立于体系结构的通用内…

qt和vue交互

1、首先在vue项目中引入qwebchannel /******************************************************************************** Copyright (C) 2016 The Qt Company Ltd.** Copyright (C) 2016 Klarlvdalens Datakonsult AB, a KDAB Group company, infokdab.com, author Milian …

13_Linux无设备树Platform设备驱动

目录 Linux驱动的分离与分层 驱动的分隔与分离 驱动的分层 platform平台驱动模型简介 platform总线 platform驱动 platform设备 platform设备程序编写 platform驱动程序编写 测试APP编写 运行测试 Linux驱动的分离与分层 像I2C、SPI、LCD 等这些复杂外设的驱动就不…

Fortinet Accelerate 2023·中国区巡展收官丨让安全成就未来

7月18日&#xff0c;2023 Fortinet Accelerate Summit在上海成功举办&#xff01;这亦象征着“Fortinet Accelerate2023中国区巡展”圆满收官。Fortinet携手来自多个典型行业的百余位代表客户&#xff0c;以及Telstra - PBS 太平洋电信、Tenable等多家生态合作伙伴&#xff0c;…