💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码及文献


💥1 概述

一种基于引力和侧向抑制网络的图像增强新算法.

红外热像仪产生的彩色红外图像中经常会遇到低对比度、噪点和边缘模糊等问题。针对这些问题,我们提出了一种基于引力和横向抑制网络的图像增强算法。

文献:

摘要:

红外热像仪产生的彩色红外图像中经常会遇到低对比度、噪点和边缘模糊等问题。针对这些问题,我们提出了一种基于引力和横向抑制网络的图像增强算法。首先,获得彩色红外图像各维的总引力信息。这些使用三维颜色属性获得的二维三灰度图像有助于定义每个维度内的噪声、边缘和区域。其次,对这3张灰度图像进行双重阈值的约束。使用均值滤波器降低噪声,使用横向抑制网络进行分辨率和边缘检测,使用区域重力因子进行对比度控制。最后,再次组合每个维度并生成颜色增强图像。本研究旨在开发一种用于冷却系统中红外图像分析的增强图像的方法。研究中使用的图像由压缩机、冷凝器和属于冷却系统的蒸发器组成。我们的方法的实现简单易懂,并产生更准确的结果。实验结果表明,所提方法能够消除噪声、模糊和低对比度,并且比其他方法更能改善红外图像的细节。

关键词:

图像增强 引力 侧向抑制网络 制冷系统

📚2 运行结果

部分代码:

function varargout = rgbhist(I,Iout)
%RGBHIST   Histogram of RGB values.

if (size(I, 3) ~= 3)
    error('rgbhist:numberOfSamples', 'Input image must be RGB.')
end
if (size(Iout, 3) ~= 3)
    error('rgbhist:numberOfSamples', 'Input image must be RGB.')
end
nBins = 256;

rHist = imhist(I(:,:,1), nBins);
gHist = imhist(I(:,:,2), nBins);
bHist = imhist(I(:,:,3), nBins);

rHist_out = imhist(Iout(:,:,1), nBins);
gHist_out = imhist(Iout(:,:,2), nBins);
bHist_out = imhist(Iout(:,:,3), nBins);

%Input image curves
subplot(3,2,1);
h(1) = stem(1:256, rHist);
axis ([0 256 0 10000])
ylabel('\fontsize{12} RED');
title(['\fontsize{10} Original Image Histograms']);
subplot(3,2,3)
h(2) = stem(1:256, gHist);
axis ([0 256 0 10000])
ylabel('\fontsize{12} GREEN');
subplot(3,2,5)
h(3) = stem(1:256, bHist);
axis ([0 256 0 10000])
ylabel('\fontsize{12} BLUE');

set(h(1),'Color','r','LineWidth',1)

set(h(2),'Color','g','LineWidth',1)

set(h(3),'Color','b','LineWidth',1)

%Output image curves
subplot(3,2,2);
h(4) = stem(1:256, rHist_out);
axis ([0 256 0 10000])
title(['\fontsize{10} GF&LIN Image Histograms']);
subplot(3,2,4)
h(5) = stem(1:256, gHist_out);
axis ([0 256 0 10000])

subplot(3,2,6)
h(6) = stem(1:256, bHist_out);
axis ([0 256 0 10000])

set(h(4),'Color','r','LineWidth',1)

set(h(5),'Color','g','LineWidth',1)

set(h(6),'Color','b','LineWidth',1)

function varargout = rgbhist(I,Iout)
%RGBHIST   Histogram of RGB values.

if (size(I, 3) ~= 3)
    error('rgbhist:numberOfSamples', 'Input image must be RGB.')
end
if (size(Iout, 3) ~= 3)
    error('rgbhist:numberOfSamples', 'Input image must be RGB.')
end
nBins = 256;

rHist = imhist(I(:,:,1), nBins);
gHist = imhist(I(:,:,2), nBins);
bHist = imhist(I(:,:,3), nBins);

rHist_out = imhist(Iout(:,:,1), nBins);
gHist_out = imhist(Iout(:,:,2), nBins);
bHist_out = imhist(Iout(:,:,3), nBins);

%Input image curves
subplot(3,2,1);
h(1) = stem(1:256, rHist);
axis ([0 256 0 10000])
ylabel('\fontsize{12} RED');
title(['\fontsize{10} Original Image Histograms']);
subplot(3,2,3)
h(2) = stem(1:256, gHist);
axis ([0 256 0 10000])
ylabel('\fontsize{12} GREEN');
subplot(3,2,5)
h(3) = stem(1:256, bHist);
axis ([0 256 0 10000])
ylabel('\fontsize{12} BLUE');

set(h(1),'Color','r','LineWidth',1)

set(h(2),'Color','g','LineWidth',1)

set(h(3),'Color','b','LineWidth',1)

%Output image curves
subplot(3,2,2);
h(4) = stem(1:256, rHist_out);
axis ([0 256 0 10000])
title(['\fontsize{10} GF&LIN Image Histograms']);
subplot(3,2,4)
h(5) = stem(1:256, gHist_out);
axis ([0 256 0 10000])

subplot(3,2,6)
h(6) = stem(1:256, bHist_out);
axis ([0 256 0 10000])

set(h(4),'Color','r','LineWidth',1)

set(h(5),'Color','g','LineWidth',1)

set(h(6),'Color','b','LineWidth',1)

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

🌈4 Matlab代码及文献

相关文章

使用Go Validator在Go应用中有效验证数据

Go Validator是一个开源的包,为Go结构体提供强大且易于使用的数据验证功能。该库允许开发者为其数据结构定义自定义验证规则,并确保传入的数据满足指定的条件。Go Validator支持内置验证器、自定义验证器,甚至允许您链式多个验证规则以满足更复杂的数据验证需求。如果内置验证器无法满足您的需求,您可以通过定义自己的验证函数来创建自定义验证器。这个功能允许您实现特定于应用程序需求的验证逻辑。

C# this关键字的作用

关键字在C#中主要用于引用当前对象,区分字段与局部变量,调用其他构造函数以及传递当前对象给其他方法或构造函数。

C语言中关于#include的一些小知识

如果是你自己编写的头文件,那么如果没加唯一包含标识的话,那么编译器会编译报错的。如果是系统自带的头文件,由于其每个头文件都加了特殊标识,所以即使你包含两遍,也不会有问题。上面的代码片段会首先判断HEADER_FILE_NAME_H是否被定义,若未定义则进行后续操作;#ifndef HEADER_FILE_NAME_H // 定义了一个名为HEADER_FILE_NAME_H的标记符号。#define HEADER_FILE_NAME_H // 当第一次包含该头文件时,将此标记设置为已定义状态。

C语言中的作用域与生命周期

但是全局变量被 static 修饰之后,外部链接属性就变成了内部链接属性,只能在自己所在的源文件内部使用了,其他源文件,即使声明了,也是无法正常使用的。结论:static修饰局部变量改变了变量的生命周期,生命周期改变的本质是改变了变量的存储类型,本来一个局部变量是存储在内存的栈区的,但是被 static 修饰后存储到了静态区。extern 是用来声明外部符号的,如果一个全局的符号在A文件中定义的,在B文件中想使用,就可以使用extern进行声明,然后使用。全局变量的生命周期是:整个程序的生命周期。

Python和Java的区别(不断更新)

运行效率:一般来说,Java的运行效率要高于Python,这主要是因为Java是编译型语言,其代码在执行前会进行预编译,而Python是解释型语言,边解释边执行。而Python没有类似的强大虚拟机,但它的核心是可以很方便地使用C语言函数或C++库,这使得Python可以轻松地与底层硬件进行交互。**类型系统:**Java是一种静态类型语言,所有变量需要先声明(类型)才能使用,且类型在编译时就已经确定。总的来说,Python和Java各有其优势和特点,选择哪种语言取决于具体的项目需求、开发环境以及个人偏好。

C#中的浅度和深度复制(C#如何复制一个对象)

接着,我们修改了复制得到的对象及其引用类型字段的属性值,最后输出原始对象和复制对象的属性值。这意味着如果一个类包含引用类型成员,在执行深度复制时,不仅复制这些引用,还会递归地复制引用所指向的对象,直到所有的引用都指向全新的对象实例。当进行浅复制时,系统会创建一个新的对象实例,但这个新对象的字段将与原始对象中的值类型字段具有相同的值,而对于引用类型字段,则仅仅是复制了。也就是说,如果一个类中有引用类型的成员变量(比如数组、其他自定义类的对象等),那么浅复制后,新对象和原对象的这些引用类型成员仍然指向。

C++ STL精通之旅:向量、集合与映射等容器详解

STL 作为一个封装良好,性能合格的 C++ 标准库,在算法竞赛中运用极其常见。灵活且正确使用 STL 可以节省非常多解题时间,这一点不仅是由于可以直接调用,还是因为它封装良好,可以让代码的可读性变高,解题思路更清晰,调试过程往往更顺利。

二维平面阵列波束赋形原理和Matlab仿真

阵面左下角天线位于坐标原点,将坐标原点阵元设为参考阵元,计算每个阵元相对于该参考阵元的入射波程差,从而来计算每个阵元接收的回波信号。实现波束赋形的最基本的方法是对各个天线阵元的信号进行适当延迟后相加,使目标方向的信号同相叠加得到增强,而其他方向均有不同程度的削弱,该方法通常用于模拟信号.根据上述理论推导可以仿真任意平面阵列的方向图,这里对两种典型的阵列(矩形平面阵列和圆形阵列)进行Matlab仿真,其余类型的阵列在此基础上修改即可。根据上述圆形阵列公式做仿真,得到下述的三维空间方向图。

解决Linux环境下gdal报错:ERROR 4: `/xxx.hdf‘ not recognized as a supported file format.

题外话:我发现linux系统和Windows系统下面,库的版本是有差异的。比如我的本机Windows上装的是gdal3.2.3和numpy1.19.1,linux服务器上装的却是gdal3.0.2和numpy1.21.5。这个是很常见的回复,网上许多回答都说低版本的 gdal 不支持 hdf5,让你重装高版本的gdal。我之前用pip安装了whl,暴力装上了,但用的时候就会有问题。安装了不冲突的gdal之后,就成功打开文件啦~一开始我是抱着试试的心态,用conda,不用pip,重新安装了一下我的gdal。

C语言常见面试题:什么是枚举,枚举的作用是什么?

首先,枚举是一种特殊的类,它的主要作用是封装一组常量,例如,一周的七天、月份、季节等。枚举在JDK1.5后被引入,相较于之前的常量定义方式,枚举具有更好的安全性和更好的性能。每个枚举常量都是该枚举类的一个实例,因此可以使用构造函数来初始化每个枚举常量的值。综上所述,枚举的常用用法包括常量定义、switch语句、添加新方法、覆盖枚举的方法、实现接口以及使用接口组织枚举等。枚举是一种特殊的数据类型,它是一组具命名的整型常量的集合。枚举是一种特殊的数据类型,它是一组具命名的整型常量的集合。

为什么Java中的String类被设计为final类?

String类作为Java中不可或缺的类之一,被设计成final类带来了不可变性、安全性、可靠性和性能优势。不可变的特性使得String对象在多线程环境下安全共享,提高了应用程序的并发性和性能。此外,String类的设计还符合Java类库的一致性和规范,确保了整个语言的稳定性和可靠性。因此,String类被设计成final类是出于多方面的考虑,以提供最佳的使用体验和编程效率。

Promise和箭头函数和普通函数的区别

箭头函数与普通函数的区别在于: 1、箭头函数没有this,所以需要通过查找作用域链来确定this的值,这就意味着如果箭头函数被非箭头函数包含,this绑定的就是最近一层非箭头函数的this, 2、箭头函数没有自己的arguments对象,但是可以访问外围函数的arguments对象 3、不能通过new关键字调用,同样也没有new.target值和原型。6、箭头函数没有自己的arguments,可以在箭头函数中使用rest参数代替arguments对象,来访问箭头函数的参数列表。

ElasticSearch 集群搭建与状态监控cerebro

在单机上利用docker容器运行多个es实例来模拟es集群。部署es集群可以直接使用docker-compose来完成,但要求Linux虚拟机至少有4GI的内存空间。"number_of_replicas": 1 // 副本数。"number_of_shards": 3,// 分片款量。kibana可以监控es集群,不过新版本需要依赖es的x-pack 功能,配置比较复杂。第一种方式:利用kibana的DevTools创建索引库 ,在DevTools中输入指令。第二种方式:利用cerebro创建索引库。

【HarmonyOS】ArkTS语言介绍与组件方式运用

自定义组件自定义函数:自定义函数可以将烦长的代码单独抽离出一个函数当中,然后在原位置调用我们设置的函数即可,自定义函数可以定义在全局或组件内,如下:@Styles装饰器@Extend装饰器// 继承模式,只能写在全局。

SpringMVC之获取请求参数和域对象共享数据

一、SpringMVC获取请求参数1、通过ServletAPI获取2、通过控制器方法的形参获取请求参数6、通过POJO获取请求参数7、解决获取请求参数的乱码问题二、域对象共享数据1、使用ServletAPI向request域对象共享数据2、使用ModelAndView向request域对象共享数据3、使用Model向request域对象共享数据4、使用map向request域对象共享数据5、使用ModelMap向request域对象共享数据。

Python使用多线程解析超大日志文件

使用Python的多线程技术可以有效地提高处理超大日志文件的效率。但在实际应用中需要注意多线程编程中的各种问题,如线程管理、资源管理、错误处理等。通过合理的优化和调整可以提高程序的性能和稳定性。

基于Python Django的内容管理系统Wagtail CMS部署与公网访问

Wagtail是一个用Python编写的开源CMS,建立在Django Web框架上。Wagtail是一个基于Django的开源内容管理系统,拥有强大的社区和商业支持。它专注于用户体验,并为设计人员和开发人员提供精确控制。它能快速实现页面的表达,对于我这种对新实现的功能想要找到地方进行展示,但前端能力又不太行的同学基于django 一直会对django的稳定版本进行支持Wagtail由开发人员为开发人员构建。

C#动态生成带参数的小程序二维码

在微信小程序管理后台,我们可以生成下载标准的小程序二维码,提供主程序入口功能。在实际应用开发中,小程序二维码是可以携带参数的,可以动态进行生成

RPC简介和grpc的使用

调用客户端句柄,执行传递参数。调用本地系统内核发送网络消息。消息传递到远程主机,就是被调用的服务端。服务端句柄得到消息并解析消息。服务端执行被调用方法,并将执行完毕的结果返回给服务器句柄。服务器句柄返回结果,并调用远程系统内核。消息经过网络传递给客户端。客户端接受数据。

【Java 基础篇】Java TCP通信详解

本文介绍了Java中如何使用TCP协议进行网络通信,包括TCP的基础知识、TCP编程的基本步骤、创建TCP服务器和客户端、数据传输等内容。通过学习本文,您可以开始使用TCP协议来构建自己的网络应用程序,实现可靠的数据传输。希望本文能够帮助您更好地理解和应用Java中的TCP通信。

【Java 基础篇】Java多线程实现文件上传详解

本文介绍了如何使用Java多线程实现文件上传功能。通过将文件切割为多个块并使用多线程同时上传,可以提高文件上传的效率。同时,服务器端需要接收和重组这些块数据以还原原始文件。希望本文对您理解文件上传的原理以及如何实现多线程文件上传有所帮助。如果您有任何问题或疑问,请随时提出。
返回
顶部