当前位置: 首页 > news >正文

有关水下图像增强的论文

4.21 TEBCF:Real-World Underwater Image Texture Enhancement Model Based on Blurriness and Color Fusion

基于模糊和颜色融合的现实水下图像纹理增强模型

2022年的一篇文章,基于传统方法,基于不同的色彩方法构建了两个新的融合输入。一个输入致力于通过基于对比度的暗通道先验去雾方法在RGB模型中提高图像的清晰度。另一个输入是基于多重形态学操作和CIELAB模型中对立颜色的色彩补偿设计的。该输入用于增强对比度亮度并调整颜色分布。将这两个输入的主要特征进行融合。因此,融合输出的对比度会自适应增强,以得到最终的增强结果。

第一个输入在DCP模型中,引入了CCI的方法,因为DCP模型中,是单一的patch,在局部操作中容易带来局限性。小尺寸的图像块可能导致局部场景中的辐射过度增强,而大尺寸的图像块容易出现强度不连续的块状伪影,因此自适应图像块尺寸更适合不同大小的图像。所以引入了CCI(Contrast Code Image),是一种基于标准差分配图像块大小的策略。

第二个输入就是通过恢复由吸收导致的丢失的辐射强度来关注局部目标纹理。将原始图像从 RGB 颜色模型转换为 CIELAB 颜色模型。从亮度通道和色度通道两方面增强。

整篇文章没有细读,只是略读。

4.23 Underwater Image Enhancement via Weighted Wavelet Visual Perception Fusion

摘要:1.提出了由衰减图引导的颜色校正策略——校正水下图像的颜色失真

           2.应用最大信息熵优化的全局对比度策略应用在颜色校正后的图片——全局对比度增强

           3.应用快速积分优化的局部对比度策略应用在颜色校正后的图片——局部对比度增强

           4.加权小波视觉感知融合策略——融合不同尺度图像的高低频

一:衰减图引导的颜色校正

        受到灰色世界假设的启发,图像的每个通道在衰减前具有相似的灰度均值和直方图分布。那什么是灰色世界假设呢?

1.灰色世界假设

该假设认为:对于一幅有着大量色彩变化的图像,其红(R)、绿(G)、蓝(B)三个色彩分量的平均值趋于同一灰度值1。从物理意义上讲,它假设自然界景物对于光线的平均反射的均值在总体上是个定值,这个定值近似地为 “灰色”。

基于灰度世界假设的白平衡算法,就是将这一假设强制应用于待处理图像,通过分别计算图像中红、绿、蓝通道的平均值,然后根据每个通道与平均灰度值的差异来计算增益,再将增益应用于图像的每个通道,从而从图像中消除环境光的影响,获得原始场景图像,使白色还原成纯白色,保证在各种光线条件下,成像色彩跟物体真实的色彩保持一致。

假设输入图像 image 的形状为 (100, 100, 3),也就是高度为 100 像素,宽度为 100 像素,有 3 个颜色通道。而 gain_b = 1.2gain_g = 1.0gain_r = 0.8,那么 cv2.multiply 函数会将图像中蓝色通道的每个像素值乘以 1.2,绿色通道的每个像素值乘以 1.0,红色通道的每个像素值乘以 0.8,最终得到校正后的图像。

import cv2
import numpy as npdef gray_world(image):"""基于灰度世界假设实现自动白平衡:param image: 输入的图像:return: 处理后的图像"""# 计算每个通道的平均值avg_b, avg_g, avg_r = np.mean(image, axis=(0, 1))# 计算平均灰度值gray_value = (avg_b + avg_g + avg_r) / 3# 计算每个通道的增益gain_b = gray_value / avg_bgain_g = gray_value / avg_ggain_r = gray_value / avg_r# 应用增益balanced_image = cv2.multiply(image, np.array([gain_b, gain_g, gain_r], dtype=np.float32))# 确保像素值在0-255范围内balanced_image = np.clip(balanced_image, 0, 255).astype(np.uint8)return balanced_image# 读取图像
image = cv2.imread('example.jpg')# 应用灰度世界假设进行白平衡处理
balanced_image = gray_world(image)# 显示原始图像和处理后的图像
cv2.imshow('Original Image', image)
cv2.imshow('Balanced Image', balanced_image)# 等待按键退出
cv2.waitKey(0)
cv2.destroyAllWindows()

左边是原图,中间是灰度世界假设,最后是本文提出的方法,代码是自己根据论文的意思编写的  

  

  

    

   

   

zhttps://blog.csdn.net/leonardohaig/article/details/109697886

水对不同波长光吸收率不同,红光波长较长,在水中最先被吸收 ,蓝光、绿光相对衰减慢。水下图像原本就因红光缺失偏蓝绿。灰度世界假设试图平衡色彩,但场景色彩信息本就失衡,算法会错误增强本就缺失的红色通道,导致发红 。比如浅海图像中,算法会过度补偿红光,使图像偏红。

在蓝光通道下,会过度补偿红光。

回到原文

但灰度世界出现颜色过度校正的问题,作者将最大像素强度的通道重新定义为亮度通道,也称为参考通道,来有效补偿由水介质对光的吸收而导致的红色、绿色、蓝色通道的衰减。

计算每个像素通道的平均像素强度:

 将亮度通道的均值补偿红色、绿色、蓝色通道:

上述补偿策略使水下图像满足每个通道的平均灰度值大致相等的灰度世界假设,但不满足具有相似直方图分布的要求。

  

 为了进一步扩展每个通道的动态范围,使其满足每个通道具有相似直方图分布的灰度世界假设,采用了线性拉伸方法来校正经过颜色补偿的水下图像。

可以看出拉伸之后,波动更加频繁,出现较多尖峰。相比前者,各通道在灰度级上的分布范围似乎有所扩展,不同通道曲线在部分灰度级区间有更多重叠。

但灰度世界假设仅考虑了各个颜色通道的平均灰度值和直方图分布,没有充分考虑水下图像与波长相关的光吸收效应。因此。作者充分利用不同光线的衰减特性,并利用衰减图来引导水下图像和颜色转移图像的融合,来获得颜色校正后的水下图像。为了确保每个颜色通道的光衰减能够得到良好的补偿,使用最大衰减图作为引导融合图像,其定义如下:

之后,使用衰减图逐像素地融合水下图像和颜色转移图像,获得颜色校正后的水下图像:

二:优化全局对比度

使用最大信息熵优化全局对比度策略提高颜色校正后图像的全局对比度。图像熵可以衡量图像直方图的均匀分布。

图像熵: 

图像熵源于信息论,由克劳德・香农提出,用于衡量图像中信息的复杂程度和不确定性 。它表示为图像灰度级集合的比特平均数,单位是比特 / 像素,描述了图像信源的平均信息量。

从直观角度理解,熵越大,说明图像中像素值的分布越分散、越随机,图像包含的信息越丰富,画面越 “繁忙”;熵越小,像素值分布越集中、规律,图像信息越单一 。比如细节丰富的自然风景照熵值较高,纯色背景图熵值较低。

图像熵可以衡量直方图分布,是因为图像直方图展示了图像中各个灰度级出现的频率,而图像熵的计算依赖于灰度级的概率分布(即直方图所反映的信息 )。通过计算熵,可以从统计角度量化直方图所呈现的灰度分布情况,评估图像灰度分布的聚集或分散特性。

  • H(X) 是图像的熵。
  • n 是图像中不同灰度级的数量(如 8 位灰度图像 n=256 )。
  • p(xi​) 是图像中第 i 个灰度值出现的概率,计算方式是该灰度值出现的次数除以图像总像素数。

回到原文:

数学中,信息熵的定义:

 直方图均衡化会导致图像的直方图数据整合,这可能会降低图像的熵,导致图像细节丢失,因此,根据信息熵的量来衡量直方图中灰度级的合并情况,从而确保图像的全局对比度得到增强。利用最大信息熵作为优化双直方图全局对比度的指标。

在优化全局对比度时,首先定义直方图数据分离阈值Iht和动态范围分离阈值Idt。

双直方图全局对比度

通常基于将图像的灰度值分布信息进行拆分或对比来考量。比如把图像的前景和背景分别统计灰度分布,得到两个直方图。通过分析这两个直方图之间的差异、重叠程度等,来确定图像的全局对比度情况。具体而言,可从灰度级的范围、各灰度级出现的频率等维度对比两个直方图 。若两个直方图差异大,意味着图像中不同部分(如前景与背景 )灰度差异明显,全局对比度高;反之,若两个直方图相似、重叠度高,图像全局对比度低。

直方图数据分离阈值 

  • 含义:直方图数据分离阈值是用于对图像直方图进行分割的一个灰度值界限。图像的直方图展示了图像中各个灰度级别的像素数量分布情况。通过设定Iht,可以将直方图划分为两个或多个部分,每个部分对应不同的像素集合。
  • 作用:在对比度优化中,它有助于区分图像中的不同区域,例如前景和背景。比如,当图像中存在明显的亮部和暗部区域时,通过Iht可以将直方图分离,进而对不同区域采用不同的对比度增强策略。对于低于Iht 的灰度区域和高于Iht的灰度区域,可以分别进行直方图均衡化或者其他对比度调整操作,以达到更好的对比度增强效果。

动态范围分离阈值

  • 含义:动态范围指的是图像中最小灰度值到最大灰度值的跨度。动态范围分离阈值Idt 是一个用于将图像动态范围进行分割的界限。它可以将图像的灰度动态范围划分为不同的子范围。
  • 作用:在优化对比度时,图像的动态范围可能会影响对比度增强的效果。如果图像的动态范围过大,可能会导致增强后的图像出现过亮或过暗的区域;如果动态范围过小,图像可能会显得模糊、缺乏对比度。通过Idt分离动态范围,可以针对不同的子范围采用不同的对比度调整方式,例如对低动态范围的子区域进行更强烈的拉伸,对高动态范围的子区域进行适当的压缩,从而使整个图像的对比度更加均衡。

回到原文

目前,大多数双直方图方法是将这个这两个阈值设置为相等,但这限制了双直方图方法的应用。因此提出了一种最大熵优化全局对比度增强策略,该策略在寻找最佳动态分离阈值方面存在困难。具体来说,动态阈值Idt在整个灰度范围内进行遍历。在每次遍历中,该方法对阈值左右两侧的直方图进行拉伸操作。接下来,该方法计算并求和左右直方图的信息熵,直到求解左右信息熵之和的最大值,对应的分离阈值点即为最有动态分离阈值Ibest。当两个直方图均衡化后的图像信息熵最大时,从颜色校正后的水下图像中获得全局对比度增强的水下图像I_{GE}.

三:优化局部对比度

在本节中,作者使用快速积分优化局部对比度增强策略提高颜色校正后图像。考虑到在CIELAB颜色模型中亮度和颜色通道是独立的,因此将颜色校正后的水下图像从RGB颜色模型转换为CIELAB颜色模型。同时,在不同通道采用不同的校正策略。

近年来,充分利用局部特征信息在局部对比度增强方面逐渐显示出有效性。受局部对比度的启发,采用积分图像快速统计图像局部块的均值。同时,我们充分利用这些局部均值来增强颜色校正后的图像的局部对比度。对于亮度通道L,首先统计其局部积分图像。

 然后计算局部块的灰度均值,利用图像块的局部均值增强亮度通道的对比度。图像中的低频分量表示图像中较平坦的区域,而图像中的高频分量表示图像中的边缘和纹理。在局部对比度增强中,将局部图像块的均值近似为低频分量,并从原始局部图像块中减去低频分量来获得高频分量。在实际应用中,适当增强高频分量以获得高质量的图像。因此,本节引入增强控制因子\beta,自适应调整高频分量的增强程度。增强过程定义为:

 

 四:加权小波融合

作者采用加权小波视觉感知融合策略来整合不同尺度的高频和低频分量,以获得高质量的水下图像。小波变换具有多分辨率、多尺度和多时间的特点。

小波变化

图像小波变换是一种多分辨率分析方法,它将图像分解为不同尺度和方向上的子图像。与传统的傅里叶变换不同,小波变换在时域和频域都具有良好的局部化特性,能够同时提供图像的空间信息和频率信息。

二维离散小波变换过程

对于二维图像,通常使用二维离散小波变换(2D DWT)。其基本步骤如下:

  1. 水平滤波:对图像的每一行进行一维小波变换,通过低通滤波器(h)和高通滤波器(g)得到近似系数(低频部分)和细节系数(高频部分)。低通滤波器提取图像的低频信息,代表图像的大致轮廓;高通滤波器提取图像的高频信息,代表图像的边缘和细节。

  2. 垂直滤波:对水平滤波后的结果的每一列进行一维小波变换,同样使用低通滤波器和高通滤波器。这样,经过一次二维小波变换后,图像被分解为四个子带:

    • LL 子带:低频 - 低频子带,包含图像的主要能量和整体轮廓信息。
    • LH 子带:低频 - 高频子带,包含水平方向的边缘和细节信息。
    • HL 子带:高频 - 低频子带,包含垂直方向的边缘和细节信息。
    • HH 子带:高频 - 高频子带,包含对角方向的边缘和细节信息。
  3. 多级分解:可以对 LL 子带继续进行小波变换,得到更精细的多分辨率表示。每一级分解都会将图像的低频部分进一步细分。

逆小波变换

逆小波变换(Inverse Discrete Wavelet Transform,IDWT)是小波变换的逆过程,用于从分解后的子带系数重构原始图像。通过将各级子带系数进行逆滤波和上采样操作,逐步恢复出原始图像。

回到原文

首先通过一阶小波变换获得每个增强版本的近似低频分量以及垂直、水平和对角高频分量,利用小波分解策略通过下采样操作将每个分量分解为四层金字塔。小波分解用于从各种增强图像版本中提取低频和高频分量。低频分量携带图像的主要信息和结构,而高频分量包含更精细的细节。因此,小波逆变换用于对分解后的低频和高频分量进行上采样,以重建增强的水下图像。但没有充分考虑增强高频分量。因此,作者为每个高频分量引入一个加权因子,来改善图像的纹理细节。平均梯度是评估图像细节水平的一个指标,值越高表明图像包含的细节越多。作者使用平均梯度设计加权因子。增强后的图像具有令人满意的视觉效果。

相关文章:

有关水下图像增强的论文

4.21 TEBCF:Real-World Underwater Image Texture Enhancement Model Based on Blurriness and Color Fusion 基于模糊和颜色融合的现实水下图像纹理增强模型 2022年的一篇文章,基于传统方法,基于不同的色彩方法构建了两个新的融合输入。一…...

Raycaster光线投射

Raycaster光线投射 3D虚拟工厂在线体验 描述 光线投射Raycaster,用于进行raycasting(光线投射)。 光线投射用于进行鼠标拾取(在三维空间中计算出鼠标移过了什么物体)。 构造器 Raycaster( origin : Vector3, dire…...

javaEE——单例模式

目录 前言1.概念2. 实现3. 比较和改进总结 前言 本篇文章来介绍单例模式,并讲述在保证线程安全的前提下,单例模式的写法。 1.概念 单例模式是一种设计模式,可以说是写代码的一种模板,如果在一些固定的场景下按照设计模式进行写…...

WSL在D盘安装Ubuntu

目录 前提条件步骤一:查看可用的Linux发行版步骤二:安装Ubuntu 22.04步骤三:导出已安装的Ubuntu到D盘步骤四:注销当前Ubuntu安装步骤五:在D盘导入Ubuntu启动Ubuntu 前提条件 Windows 10或Windows 11系统已启用WSL功能…...

Java并发编程-多线程基础(三)

文章目录 线程间通信线程间通信的核心问题volatile 关键字1. 核心特性2. 使用限制3. 示例 synchronized 关键字1. 核心特性2. 示例 volatile 与 synchronized 的对比Volatile 和 Synchronized 最佳实践 线程间通信 线程间通信的核心问题 多个线程通过共享内存实现信息交换&am…...

React--》掌握react构建拖拽交互的技巧

在这篇文章中将深入探讨如何使用react-dnd,从基础的拖拽操作到更复杂的自定义功能带你一步步走向实现流畅、可控且用户友好的拖拽体验,无论你是刚接触拖拽功能的初学者还是想要精细化拖拽交互的经验开发者,都能从中找到适合自己的灵感和解决方案。 目录 …...

【Qt】常用的类与数据类型

目录 一、Qt常见基本数据类型 二、Qt 字符串类应用 2.1 操作字符串 2.2 查询字符串 三、QMap 类&QHash 类&QVector 类 3.1 QMap 类 3.2 QHash 类 3.3 QVector 类 四、QList 类&QLinkedList 类 4.1 QList 类 4.2 QLinkedList 类 4.3 STL 风格迭代器遍历…...

React实现B站评论Demo

该Demo涉及的技术点 useState函数(数据驱动视图)子组件的封装条件判断回调函数的封装 1、评论数据 {"list": [{"rpid": 3,"user": {"uid": "13258165","avatar": "http://toutiao.…...

从实列中学习linux shell12 通过Shell脚本来优化MySQL数据库性能,特别是慢SQL跟踪和索引优化

在Shell脚本中优化MySQL数据库性能,特别是慢SQL跟踪和索引优化 可以通过以下步骤实现。以下是一个结构化的解决方案,包含示例代码和详细说明: 1. 启用慢查询日志 目标:动态启用慢查询日志并配置参数,收集慢SQL数据。…...

ES6入门---第三单元 模块一:类、继承

补充&#xff1a; prototype 属性使您有能力向对象添加属性和方法。 object.prototype.namevalue <script>function Person(name, age){this.name name;this.age age;}/* Person.prototype.showName function(){return 名字为: ${this.name};};Person.prototype.showA…...

CSS 变量与原生动态主题实现

CSS 变量与原生动态主题实现 CSS 变量基础 CSS 变量&#xff08;自定义属性&#xff09;是 CSS 语言的一项强大功能&#xff0c;允许我们在样式表中定义和重用值。与 SCSS 或 LESS 等预处理器中的变量不同&#xff0c;CSS 变量在运行时计算&#xff0c;这意味着它们可以动态更…...

Ubuntu 安装 Docker

安装 Docker 1. 卸载旧版本&#xff08;如果有&#xff09; sudo apt-get remove docker docker-engine docker.io containerd runc 2. 更新 APT 包的索引 sudo apt-get update 3. 安装依赖包 sudo apt-get install -y \ca-certificates \curl \gnupg \lsb-release4. 添加…...

SpringMVC——第三章:获取请求数据

假设有这样一个请求&#xff1a;http://localhost:8080/springmvc/register?namezhangsan&password123&emailzhangsanpowernode.com 在SpringMVC中应该如何获取请求提交的数据呢&#xff1f; 在SpringMVC中又应该如何获取请求头信息呢&#xff1f; 在SpringMVC中又应…...

动静态库【Linux操作系统】

文章目录 动静态库制作静态库如何把第三方库安装在Linux系统中&#xff0c;如何使用第3方库方案一&#xff1a;为什么我们之前使用gcc/g编译C/C标准库的时候不用加选项-l xxx呢&#xff1f;方案二&#xff1a;方案三&#xff1a; 为什么不同平台的库不一样呢&#xff1f;动态库…...

Day 4:牛客周赛Round 91

好久没写了&#xff0c;问题还蛮多的。听说这次是苯环哥哥出题 F题 小苯的因子查询 思路 考虑求因子个数&#xff0c;用质因数分解&#xff1b;奇数因子只需要去掉质数为2的情况&#xff0c;用除法。 这里有个比较妙的细节是&#xff0c;提前处理出数字x的最小质因数&#xff0…...

drawDB:打造高效数据库设计流程

drawDB&#xff1a;打造高效数据库设计流程 drawDB 简介资源链接 核心功能详解1. 直观的实体关系图设计2. SQL 脚本生成3. SQL 导入功能4. 本地化存储与分享功能5. 自定义主题与外观 安装和使用教程本地开发环境搭建构建生产版本Docker 部署基本使用方法 应用场景和实际价值适用…...

【心海资源】子比主题新增注册与会员用户展示功能模块及实现方法

内容改写&#xff1a; 本次分享的是子比主题顶部展示注册用户与会员信息的功能模块及其实现方式。 你可以通过两种方式启用该功能&#xff1a; 直接在后台进入“外观 → 小工具”启用该展示模块&#xff0c;操作简便&#xff1b;也可将提供的代码覆盖至子比主题目录中&#…...

gitblit安装教程,搭建一个属于自己的Git版本仓库

本章教程,主要记录如何在Windows服务器上利用gitblit搭建GIT私有化仓库。 一、gitblit简介 官网地址:https://www.gitblit.com/ Gitblit 是一个开源的纯 Java 技术栈,用于管理、查看和服务Git仓库。 它主要设计为一款面向希望托管集中式仓库的小型工作组的工具。 二、基础环…...

2023年第十四届蓝桥杯省赛B组Java题解【简洁易懂】

2023年第十四届蓝桥杯省赛B组Java题解 题型概览与整体分析 题目编号题目名称题型难度核心知识点通过率&#xff08;预估&#xff09;A阶乘求和结果填空★☆☆模运算、数学规律95%B幸运数字结果填空★★☆进制转换、数位和计算80%C数组分割编程题★★☆组合数学、奇偶性分析65…...

Javase 基础加强 —— 01 异常

本系列为笔者学习Javase的课堂笔记&#xff0c;视频资源为B站黑马程序员出品的《黑马程序员JavaAI智能辅助编程全套视频教程&#xff0c;java零基础入门到大牛一套通关》&#xff0c;章节分布参考视频教程&#xff0c;为同样学习Javase系列课程的同学们提供参考。 01 课程安排…...

iview 表单验证问题 Select 已经选择 还是弹验证提示

问题&#xff1a;iview 的 Select 下拉框的时候&#xff0c;数据验证必填&#xff0c;明明选择了数据&#xff0c;却一直提示验证不能通过 html代码&#xff1a; <Form ref"FormData" :model"FormData" :rules"ruleValidate" :label-width&qu…...

OrCAD中离图连接器、端口及网络标签的作用范围与选择指南

一、OrCAD主要连接元素概述 在OrCAD Capture原理图设计环境中&#xff0c;有三种主要的网络连接元素&#xff1a;离图连接器(Off-Page Connector)、端口(Port)和网络标签(Net Alias)。理解它们的作用范围和使用场景对设计清晰、可维护的原理图至关重要。 PS&#xff1a; 电源和…...

dpm_sysfs_add

这段代码是 Linux 内核中**设备电源管理&#xff08;PM&#xff09;子系统**与 **sysfs 文件系统**交互的核心实现&#xff0c;主要功能是为设备创建电源管理相关的 sysfs 属性文件。以下从五个关键维度进行深度解析&#xff1a; --- ### 一、功能架构全景 mermaid graph TD …...

【AI论文】Phi-4-reasoning技术报告

摘要&#xff1a;我们引入了Phi-4-reasoning&#xff0c;这是一种拥有140亿参数的推理模型&#xff0c;在复杂的推理任务中表现出了强大的性能。 通过监督式微调Phi-4&#xff0c;在精心策划的“可教”提示集上进行训练&#xff0c;这些提示集是根据复杂性和多样性的适当水平选…...

Android ART运行时无缝替换Dalvik虚拟机的过程分析

目录 一,概述 二,dex文件优化 一,概述 Android 4.4发布了一个ART运行时&#xff0c;准备用来替换掉之前一直使用的Dalvik虚拟机&#xff0c;希望籍此解决饱受诟病的性能问题。老罗不打算分析ART的实现原理&#xff0c;只是很有兴趣知道ART是如何无缝替换掉原来的Dalvik虚拟机…...

node.js为什么产生?

从官网得知介绍如下 https://nodejs.org/zh-cn/learn/getting-started/introduction-to-nodejs Node.js是一个开源和跨平台的JavaScript运行时环境。 Node.js在浏览器之外运行V8 JavaScript引擎&#xff0c;这是Google Chrome的核心。这使得Node.js具有很高的性能。 Node.js应…...

智能工厂边缘计算:从数据采集到实时决策

智能工厂边缘计算:从数据采集到实时决策 引言 在智能制造场景中,传统云计算架构面临三大核心挑战:平均200ms的网络延迟无法满足实时控制需求,90%的工业数据未被有效利用,以及每月高达15TB的数据传输成本。边缘计算技术通过将计算能力下沉到数据源头,正在构建"端-边…...

个人健康中枢的多元化AI网络革新与精准健康路径探析

引言 随着数字化转型的深入推进,个人健康中枢作为集成化健康管理系统,正在从传统的单一功能向多元化的AI驱动方向快速发展。在这一背景下,新兴网络硬件技术,特别是DPU(数据处理单元)和全光网络的出现,为个人健康中枢的革新提供了前所未有的机遇。本研究将深入探讨这些技…...

前端面试宝典---性能优化

一、加载优化 1. 第三方模块放在CDN 例如 leaflet通过cdn引入&#xff0c;这样就不会占用打包体积了 2. prefetch 预加载 例如&#xff0c;之后马上有个场景需要一个图片&#xff0c;我们就可以通过link 的 prefetch 对资源进行预先加载 再例如&#xff0c;我们公司是无网络开…...

【Springboot进阶】springboot+mybatis+jsqlparser实现数据权限控制

文章目录 SpringBoot JSqlParser MyBatis 数据权限实现方案一、环境准备1. 添加依赖 二、用户上下文管理1. 用户上下文持有类 三、数据权限拦截器实现1. MyBatis拦截器核心类 四、Spring Security集成1. 用户信息注入 五、配置项示例application.yml 六、使用示例1. 业务查询…...

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】2.3 窗口函数与高级聚合(ROW_NUMBER()/RANK()/SUM() OVER())

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 PostgreSQL窗口函数与高级聚合:从排序到动态分析的全场景应用1. 窗口函数核心概念解析1.1 窗口函数语法结构1.2 核心组成要素2. 排名窗口函数深度解析2.1 ROW_NUMBER():唯一顺序排名示例演示2.2 `RANK…...

python全自动爬取m3u8网页视频(各类网站都通用)

当前人工智能&#xff0c;大语言模型的火热&#xff0c;使得python这门编程语言的使用越来越广泛。最近也开始学习了python&#xff0c;发现它在自动化方面的确有得天独厚的优势。python的简单易用&#xff0c;丰富的开源库&#xff0c;完善的生态&#xff0c;使得它有可能成为…...

C++负载均衡远程调用学习之上报功能与存储线程池

目录 1. Lars-reportV0.1 report模块介绍 2.Lars-reporterV0.1 reporter项目目录构建 3.Lars-ReporterV0.1 数据表和proto协议环境搭建 4.Lars-ReporterV0.1上报请求业务处理 5.Lars-ReporterV0.1上报请求模块的测试 6.Lars-ReporterV0.2开辟存储线程池-网络存储分离 1. L…...

今天python练习题

目录 一、每日一言 二、练习题 三、效果展示 四、下次题目 五、总结 一、每日一言 不要害怕失败&#xff0c;失败可能成为我们前进的动力&#xff01; 二、练习题 有列表lst [[1,2,3],[4,5,6],[7,8,9]],取出其中的元素1/5/9组成新的列表 # 有列表lst [[1,2,3],[4,5,6],[…...

【leetcode100】最长递增子序列

1、题目描述 给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。例如&#xff0c;[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 …...

R绘图|3分钟复现瑞士“苏黎世大学”Nature全球地图——基于R包ggplot2+sf等

一、引言 本文我们复现苏黎世大学团队Franois Keck等在Nature最新文章“The global human impact on biodiversity”中的全球地图。 之前的图纸是在平面坐标系里面进行绘制&#xff0c;本次我们在罗宾逊投影中进行绘制。整体代码逻辑非常简单&#xff0c;就是采样点坐标系的转换…...

百度系列产品学习

1.react-bmapgl封装逻辑 Map 分析react-bmapgl库中Map组件的封装流程&#xff0c;并以mermaid图展示。首先分析Map组件的核心实现&#xff0c;包括生命周期方法和子组件渲染逻辑。然后研究WrapperHOC和Component基类的封装模式&#xff0c;理解事件绑定和属性处理的通用逻辑。…...

高等数学第三章---微分中值定理与导数的应用(3.4~3.5)

3.4 函数的单调性与曲线的凹凸性 一、函数的单调性 1. 函数单调性定义回顾 设函数 f ( x ) f(x) f(x) 的定义域为 D D D&#xff0c;区间 I ⊆ D I \subseteq D I⊆D。 如果对任意 x 1 , x 2 ∈ I x_1, x_2 \in I x1​,x2​∈I&#xff0c;当 x 1 < x 2 x_1 < x…...

idea结合CopilotChat进行样式调整实践

一、前言&#xff1a; 本文主要分享在前端开发中借助AI能力调整样式&#xff0c;提高开发效率 对应视频【idea结合CopilotChat进行样式调整实践-哔哩哔哩】 二、实践&#xff1a; 2-1、现状确认&#xff1a; 表格上方新增了button、swtich、select组件&#xff0c;需要调整…...

668SJBH报刊发行系统

1 前言 随着我国信息产业的迅猛发展&#xff0c;手工管理方式已不适应社务管理的要求&#xff0c;报社的日常管理正面临着信息化的挑战&#xff0c;采用计算机管理以提高服务质量和管理水平势在必行。发行管理是社务管理的一个重要组成部分&#xff0c;是报社和客户联系的纽带…...

格式化字符串漏洞

原理 在c中&#xff0c;printf函数在打印输出变量时通常不是直接输出&#xff0c;而是用一个占位符如%s printf("the number is %d\n",a);//通常用 printf(a);//而不是直接输出 虽然直接输出也没有太大的问题&#xff0c;但如果用格式化输出&#xff0c;没有给后面…...

如何查看电脑IP地址和归属地:全面指南

在数字化时代&#xff0c;了解自己电脑的IP地址和归属地信息变得越来越重要。无论是进行网络故障排查、远程办公设置&#xff0c;还是出于网络安全考虑&#xff0c;掌握这些基本信息都很有必要。本文将详细介绍如何查看电脑的公网IP、内网IP以及归属地信息&#xff0c;并提供常…...

深入解析 MQTT 协议:物联网通信的基石

在当今物联网蓬勃发展的时代&#xff0c;设备之间高效、可靠的通信变得至关重要。MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;协议&#xff0c;作为一种轻量级的消息传输协议&#xff0c;正逐渐成为物联网通信的基石&#xff0c;广泛应用于各种场景中。 …...

48变现干货:分销裂变方式提高销量

产品运营活动中,我们可以根据对产品属性和特性,进行选择特定的方法,分销便是一种低成本各方获利的行为之一,但并不一定100%适用所有产品。 分销及裂变的概念 “分销”是指通过用户、达人、KOL等非官方渠道,参与产品的推广与销售,并获得相应收益的机制。它是一种以奖励为…...

AI入门:Prompt提示词写法

提示词&#xff08;Prompt&#xff09;是人与AI沟通的桥梁&#xff0c;它不是冰冷的代码指令&#xff0c;而是一场充满智慧与温度的对话。掌握精妙的提示词撰写技巧&#xff0c;能让AI更精准地理解需求&#xff0c;高效输出理想结果。其核心就在于——将AI视作身边真实的朋友、…...

MySQL复合查询全解析:从基础到多表关联与高级技巧

前言&#xff1a; 本文主要讲解了在MySQL中的复合查询&#xff0c;下面是关于本文章所需要数据的建表语句 创建表的语句&#xff1a; DROP database IF EXISTS scott; CREATE database IF NOT EXISTS scott DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;USE scott;D…...

移动 Trae 目录到 E 盘 - 解决 C 盘空间不足问题

移动 Trae 目录到 E 盘 - 解决 C 盘空间不足问题 1️⃣ 准备工作2️⃣ 移动原始文件夹3️⃣ 创建符号链接4️⃣ 清理原始文件夹5️⃣ 验证操作📝 注意事项🔄 常见问题排查1️⃣ 准备工作 关闭 Trae 程序:确保所有 Trae 相关进程已完全退出(包括后台服务)。创建目标文件夹…...

【AI论文】COMPACT:从原子级到复杂级的组合式视觉能力调优

摘要&#xff1a;多模态大语言模型&#xff08;MLLM&#xff09;擅长简单的视觉语言任务&#xff0c;但在面对需要多种能力的复杂任务时却很吃力&#xff0c;例如同时识别物体、计算数量和理解它们的空间关系。 这可能部分是由于视觉指令调整&#xff08;VIT&#xff09;这一ML…...

【leetcode】队列 + 宽搜,树形结构层序遍历的基础与变化

前言 &#x1f31f;&#x1f31f;本期讲解关于力扣的几篇题解的详细介绍~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 &#x1f386;那么废话不…...

Spring AI聊天模型API:轻松构建智能聊天交互

Spring AI聊天模型API&#xff1a;轻松构建智能聊天交互 前言 在当今数字化时代&#xff0c;智能聊天功能已成为众多应用程序提升用户体验、增强交互性的关键要素。Spring AI的聊天模型API为开发者提供了一条便捷通道&#xff0c;能够将强大的AI驱动的聊天完成功能无缝集成到…...