数字图像处理-小波变换小白解释基本原则

2023-11-10

内容完全转载:

小波理论的基本概念及概述(第二版)

欢迎阅读此份关于小波变换的入门教程。小波变换是一个相对较新的概念(其出现大约是在20世纪80年代),但是有关于它的文章和书籍却不少。这其中大部分都是由数学专业人士写给其他同行看的,不过,仍然有大量数学专家不知道其他同行们讨论的是什么(我的一个数学教授就承认过)。换言之,大多数介绍小波变换的文献对那些小波新手们来说用处不大(此为个人观点)。

我刚开始接触小波变换的时候,曾经为了搞清楚小波变换这个这个神奇的世界到底发生了什么而苦苦挣扎,因为在这个领域的入门教材非常少。因而,我决定为新手们写一份教程。我自认为也是一个新手,必须承认,我也有很多理论细节没有弄清楚。不过,就工程应用而言,我认为弄清楚所有的理论细节大可不必。

这份教程将试着介绍一些小波理论的基本原理,并且不会给出这些原理和相关公式的证明,因为这份教程的目标读者暂时还不需要知道这些。不过,感兴趣的读者可以参阅引用的文献以便了解更深入的内容。

此篇文档假定你没有任何相关知识背景。要是有的话,请跳过以下内容,这些对你而言可能都是显然的。

要是你发现教程里有任何前后不协调或不正确的内容,请联系我。我很乐于收到关于教程的任何评论。

变换…啥?

首先,为什么需要变换,或者说到底什么是变换?

为了获取在原始信号中不易获得的信息,往往要对信号进行数学变换。以下篇幅均假定时域内信号为原始信号,经过数学变换后的信号为处理信号。

可用的变换有很多种,其中,傅立叶变换大概是目前最流行的。

实际中,多数信号的原始形式都是时域信号,也即不论如何测得的,信号总是关于时间的函数。换言之,绘制信号的图形时,一个轴代表时间(自变量),另一轴代表信号幅值(因变量)。在时域内作图,便可得到信号的时-幅表示。在多数信号处理有关的应用场景中,这种表示并不是最好的表示。很多时候,最易分辨的信息往往隐藏在信号的频率成分中。信号的频谱是指信号中的频率分量(或谱分量),其表示的是信号中存在哪些频率成分。

直觉上,我们都知道频率是跟事物的变化率有关的量。如果一样东西(专业术语应该为数学量或物理量)变化得很快,则它的频率就高;变换得慢,或者说变化得很平滑,则它的频率就低。如果该量保持不变,则其频率为零,或者说没有频率。例如,日报的频率就比月刊高(因为日报出版快)。

频率用“循环次数/秒”,或者用更常用的“赫兹”来衡量。例如,在美国,日常生活中所用交流电的频率是60Hz(世界上其他一些地区是50Hz)。这意味着,如果我们想要绘制电流变化曲线,得到的将是1秒内往复50次的正弦波。看下面几张图,第一幅图中是频率是3Hz的正弦信号,第二幅是频率10Hz的,第三幅则是频率50Hz,对比下吧。

那么怎样测量频率,或者说怎样得到一个信号中所含的频率成分呢?答案是傅立叶变换(FT)。对时域信号做傅立叶变换,就会得到信号的频谱。也就是说,此时我们绘制信号图形的话,一个轴是频率,另一个轴是频率分量的幅值。所得图像将告诉我们信号中包含的各种频率成分分别有多少。

频率轴从零开始,直至正无穷。每个频率都对应一个幅值。例如,如果我们对房间所用的电流信号做傅立叶变换,频谱图中在50Hz处会出现尖峰,其它频率对应的幅值则为零,因为信号中只包含了50Hz的频率分量。然而,很少有信号的傅立叶变换是如此简单的。实际中的信号大都包含多个频率分量。50Hz信号的傅立叶变换如下图所示:

图 1.4 50 Hz 信号的傅里叶变换

注意,图1.4给出了上下两张图,下图显示的其实是上图的前半部分。这是因为实值信号的频谱图是左右对称的,这点暂时不理解也无妨。上图能够看出这一特性。不过,由于后一半对称部分只不过是前一半图形的镜像,并未提供额外信息,因此,这部分经常不画出来。下文中出现的多数频谱图,我将只绘出前半部分。

为什么需要频率信息?

通常,一些在时域中不易看出的信息很容易在频域中观察到。

看一个生物信号的例子。设想我们正在观察一个心电信号。心脏专家一般都熟知典型的健康人心电图的形状。与这些典型形状存在显著偏差往往是疾病的征兆。

一些病征在时域表示的心电信号中并不明显。过去,心脏专家一般用记录在磁带上的时域心电图来分析心电信号。最近,新型的数字心电记录仪/分析仪可以利用心电图的频域信息来判断病征是否存在。对心电信号的频率成分进行分析能使他们更容易的诊断病情。

上面只是一个说明频率成分作用的简单例子。当前,傅立叶变换已经被用于不同的领域,涵盖了工程领域的各个分支。

尽管傅立叶变换可能是使用最多的(特别在电气工程领域),但它并不是唯一的变换。许多其他的变换也常为工程师和数学家们所用,如希尔伯特变换、短时傅立叶变换(下文会有更多介绍)、魏格纳分布和雷登变换,当然还有教程的主角——小波变换,而这些也仅是工程师和数学家们所用变换中的一小部分。每种变换都有其应用领域,也有其优缺点,小波变换也不例外。

为了更好地理解为什么需要小波变换,我们需要更深刻地认识傅立叶变换。傅立叶变换是一种可逆变换,即它允许原始信号和处理信号之间互相变换。但是,在任意时刻只有一种信号形式是可用的。也就是说,在时域信号中不包含频率信息,而经过傅里叶变换后的信号则不包含任何时间信息。说到这,头脑里很自然地会提出一个问题,为什么需要同时知道时间和频率信息呢?

我们马上就会知道,答案是具体问题具体分析。回想一下,傅立叶变换给出了信号中的频率信息,即它可以告诉我们原始信号包含各个频率成分到底有多少,但是并未告诉我们某个频率信号何时出现。对于所谓的平稳信号,这些信息并不需要。

让我们进一步探讨一下平稳的概念,因为它在信号分析中具有重要意义。如果信号中的频率分量不随时间变化,则称这类信号为平稳信号。平稳信号中的频率分量一直保持不变,那么,自然无需知道频率分量是何时出现的,因为所有的频率分量出现在信号的每一刻!!!

以如下信号为例:

\( x(t)=cos(2picdot10t)+cos(2picdot25t)+cos(2picdot50t)+cos(2picdot100t) \)

这是个平稳信号,因为任何时刻都包含10,25,50和100Hz的频率。信号的图形如下:

图 1.5

下图为它的傅立叶变换:

图 1.6

图1.6中的上图是图1.5中信号的频谱图,下图为上图的放大,给出了我们关注部分的频率范围。注意四个频率10,25,50和100Hz的频谱分量。

与图1.5中的信号不同,下图所示的就是一个非平稳信号。图1.7中,信号的频率随着时间一直在变化,这种信号称为线性调频信号,是一种非平稳信号。

图 1.7

让我们再看一个例子,图1.8绘出的是一个包含四个频率分量的信号,它们分别在不同时刻出现,因此这是一个非平稳信号。0至300ms时是100Hz的正弦波,300-600ms时则是50Hz的正弦波,600-800ms时是25Hz的正弦波,最后的200ms内是10Hz正弦波。

图 1.8

下图是它的傅立叶变换:

图 1.9

不要介怀图中的那些小波纹,这是由信号中频率突变引起的,在这里并不重要。注意,高频分量的幅值比低频分量大,这是因为高频信号(300ms)比低频信号(200ms)持续时间更长。(频率分量幅值的精确值并不重要)。

除了那些波纹,图中的一切看起来都是正确的。频谱图有四个尖峰,对应原始信号中的四个频率分量,幅值也差不多是合理的…没错

错!

当然了,也不全错,但也不全对。对图1.5中的信号,考虑如下问题:各个频率分量都是在什么时刻出现的?

答案是

在所有时刻!还记得平稳信号吗,所有频率分量在信号的整个持续时间内一直存在。10Hz的频率分量一直存在,50Hz的分量也是,100Hz的分量依然是。

现在,让我们来考虑一下图1.7或1.8中的非平稳信号。

各个频率分量都是在什么时刻出现的?

对于图1.8中的信号,我们知道,第一个时间区间内出现的是频率最高的分量,最后一个时间区间内出现的是频率最低的分量。图1.7中,信号的频率成分随时间连续变化,因此,对这些信号来说,各个频率分量并未在所有时刻一直存在。

现在,对比图1.6和1.9,两幅频谱图的相似之处是显而易见的。两幅图中都包含了四个相同的频率分量,即10,25,50和100Hz。除了一些小波纹和两幅图中各频率分量的幅值(这些幅值可以做归一化处理)有所区别,两幅频谱图几乎是相同的,尽管两个信号在时域内差别很大。两个信号都包含了相同的频率分量,但是前者中,各频率分量存在于信号的整个周期内,而后者的频率分量则分别存在于不同的时间区间内出现。那么,为什么两个完全不同的信号,频谱图形这么相像呢?回想一下,傅立叶变换仅仅给出了信号的频谱分量,但却没有给出任何关于这些分量出现时间的信息。因此,傅立叶变换并不适用于分析非平稳信号,但有一个例外:

如果我们仅关心信号中包含哪些频率分量而不关心它们出现的时间,傅立叶变换仍可用于处理非平稳信号。但是,如果我们想知道频率分量出现的确切时间(区间),傅立叶变换就不再适用了。

实际应用中,由于平稳的和非平稳的信号都很多,很那将二者区分开来。例如,几乎所有的生物信号都是非平稳的,包括广为人知的心电图(ECG)、脑电图(EEG)和肌电图(EMG)。

再次注意,傅立叶变换仅能给出信号中包含哪些频率分量,仅此而已。

当需要对频谱分量进行时间定位时,我们就需要一个可以给出信号时-频表示的变换。

终极解决方案:小波变换

小波变换是这种类型的变换,它提供了信号的时频表示(还有一些变换也可给出这些信息,如短时傅立叶变化,魏格纳分布等等)。

特定的频谱分量在特定的时刻出现往往具有特殊的意义。这些情况下,了解这些特定的频谱分量出现的时间区间会非常有用。例如,在脑电图中,事件相关电位的延迟时间需要特别注意(事件相关电位是指大脑对某一特定刺激的反应,类似闪光灯,延迟时间是从接受刺激到作出反应之间耗费的时间)。

小波变换能够同时提供时间和频率信息,因此给出了信号的一种时频表示。

小波变换到底是如何奏效的完全是另外一个故事,需要在理解了短时傅立叶变换(STFT)之后再做解释。小波变换的出现是为了改进短时傅立叶变换(STFT)。STFT将在教程的第II部分详细阐述。现在暂时可以认为小波变换是为了解决STFT中遇到的有关分辨率的问题而发展起来的。

为了长话短说,我们略过时域信号处理中有关于各种高通和低通滤波器的相关内容。这些滤波器用来过滤信号中的低频和高频部分分量。这类方法被重复实施,每次都会从信号中滤除一些频率分量。

这里解释一下滤波是如何奏效的:设想我们有一个信号,其中频率最高的分量为1000Hz。第一步,我们通过高通和低通滤波器把信号分成两个信号(滤波器必须满足某些特定的条件,即容许条件),结果得到了同一信号的两个部分,0-500Hz的部分(低通部分)和500-1000Hz的部分(高通部分)。

然后,我们可以拿其中一部分(通常是低通部分)或者二部分,然后对每一部分继续进行相同的操作。这个过程叫做分解。

假设我们拿低频部分做了处理,现在我们就有了3组数据,分别为信号在0-250Hz,250-500Hz和500-1000Hz的部分。

然后再对低通部分的信号继续做高通和低通滤波处理;现在我们就有了4组数据,分别为0-125Hz,125-250Hz,250-500Hz和500-1000Hz。我们持续进行这个过程,直到将信号分解到一个预先定义的水平。这样我们就有了一系列信号,这些信号实际上都来自相同的信号,但是每一个都对应不同的频带。我们知道每个信号对应的频段,如果我们将这些信号放在一起画出三维图,一个轴表示时间,频率在另外一个轴上,幅度在第三个轴上。这幅图会告诉我们各个频率出现哪些时刻(这里有一个问题,叫做“不确定性原理”,即我们不能精确地知道哪个频率出现在哪些时间点,我们仅能知道某一频段出现在哪一时间区间内,后文中将有更多介绍)。

不过,我仍想简单地解释一下:

不确定性原理最早由海森堡发现并阐述,其表述为:移动粒子的动量和位置不可同时确定。在我们这个课题里则是这样:

时-频平面内的一个确定的点上,信号的频率和时间信息不能同时知道。换句话说:在任一时刻,我们无法确定存在哪个频谱分量。我们最多只能做到,在一个给定的时间区间内存在哪些频谱分量。这是一个分辨率的问题,也是研究者们从快速傅立叶变换(STFT)切换到小波变换(WT)的主要原因。快速傅立叶变换的分辨率随时间是固定不变的,而小波变换则能给出可变的分辨率:

高频信号在时域内很好分辨,低频信号则在频域内容易分辨。这意味着,相对于低频分量,高频分量更容易在时域内定位(有更小的相对误差)。反而言之,低频分量更容易在频域内定位。看下面的网格图:

1
2
3
4
5
6
7
f ^
   | * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *          continuous
   | *    *    *    *    *    *    *    *    *    *    *    *    *    *    *          wavelet transform
   | *      *      *      *      *      *      *           
   | *            *            *            *           
   | *                        *
     -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- > time

对上图的解释是:最上面一行表明,高频信号有更多的采样点和较短的采样间隔。就是说,高频信号更容易在时域内分辨。最下面一行是对低频信号的采样,描述信号的特征点较少,因此,低频信号在时域内并不容易分辨。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
^ frequency
|     
|
|
| * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|       
|     
|         
| *    *    *    *    *    *    *    *    *    *    *    *    *    *    *    *    *    *    *    discrete time
|                                                            wavelet transform
| *      *      *      *      *      *      *      *      *      *     
|
| *            *            *            *            *
| *                        *                        *
| -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- > time

在离散时间的情形中,信号的时间分辨率与先前相同,但是现在,频率信息的分辨率在每一个阶段都不同。注意到,低频信号更容易在频域内分辨,高频则不然。注意,相邻频率分量的间隔是如何随频率增高而增大的。

下面是连续小波变换的例子:

我们构造一个正弦信号,具有两个频率成分,分别处在两个不同的时间区间:

注意低频分量先出现,然后是高频分量。

图 1.10

图 1.11

注意,上图中代表频率的轴被标记为了“尺度”。“尺度”的概念将会在后续章节进行阐述,但这里需要注意的是,尺度是频率的倒数,即尺度越大频率越低,尺度越小频率越高。因此,图中的小的峰值对应的是信号中的高频分量,大的峰值对应的是信号中的低频分量(在时域内,低频分量先于高频分量出现)。

你可能被图中的频率分辨率搞晕了,因为高频信号似乎也有很好的频率分辨率。但请注意,高频(低尺度)信号处分辨率较好的是尺度分辨率,而非频率分辨率。尺度分辨率高意味着频率分辨率低,反之亦然。更多相关内容将在后续部分介绍。

未完,待续…

以上是此份教程的第一部分,我试着给出信号处理的简要概述——傅里叶变换和小波变换


转载自:http://blog.jobbole.com/101976/


其他参考资料:

http://blog.csdn.net/alihouzi/article/category/3132373

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数字图像处理-小波变换小白解释基本原则 的相关文章

  • matlab中 hold on 与 hold off,figure作用

    hold on是当前轴及图像保持而不被刷新 准备接受此后将绘制的图形 多图共存 即启动图形保持功能 当前坐标轴和图形都将保持 从此绘制的图形都将添加在这个图形的基础上 并自动调整坐标轴的范围 hold off使当前轴及图像不再具备被刷新的性
  • 数字图像处理(入门篇)六 图像数据预处理之坐标变化

    目录 1 平移 2 镜像 3 旋转 4 缩放 图像的坐标变换又称为图像的几何计算 常见的基本变换包括 平移 旋转 镜像和缩放等等 1 平移 1 代码 使用OpenCV仿射变换函数 cv2 warpAffine 实现平移操作 import n
  • 使用Python绘制粽子消消乐,素描图(优化版,正常/漫画/写实风格),词云图,字符画图及提取轮廓

    使用Python绘制粽子消消乐 素描图 优化版 正常 漫画 写实风格 词云图 字符画图及提取轮廓 1 效果图 2 源码 2 1 素描图源码 2 2 优化版 制作不同风格的素描图 正常 漫画 写实风格 https blog csdn net
  • 一、MM Segmentation 介绍与安装

    时间 2022年4月1日 内容 学习MM Segmentation MM Segmentation 介绍和理解 MM Segmentation 利用注册器和配置文件 实现了 可拓展性 和 易用性 它是一个封装了许多语义分割深度神经网络的框架
  • MATLAB实现五种边缘检测

    一 原理 常用的边缘检测算法有拉普拉斯边缘检测算法 Robert边缘检测算子 Sobel边缘检测算子 Prewitt边缘检测算子 Canny边缘检测算子 二 代码 filename pathname uigetfile jpg bmp gi
  • 数字图像处理:OpenCV直方图均衡算法研究及模拟实现

    一 引言 在 数字图像处理 直方图均衡 Histogram Equalization 的原理及处理介绍 链接 https blog csdn net LaoYuanPython article details 119857829 中介绍了数
  • 使用python实现简单全连接神经网络

    最近在学习神经网络的相关知识 特在此做一个笔记 python语言的功能很强大 可以使用很少的代码实现很多功能 因此大家如果想研究深度学习的话 一定要懂得python语言 这篇笔记记录我的第一次使用python编写神经网络代码的过程 其中代码
  • 方框滤波,均值滤波,高斯滤波

    邻域算子 局部算子 是利用给定像素周围的像素值的决定此像素的最终输出值的一种算子 对于邻域算子 除了用于局部色调调整以外 还可以用于图像滤波 实现图像的平滑和锐化 图像边缘增强或者图像噪声的去除 而线性邻域滤波是一种常用的邻域算子 像素的输
  • 深度特征融合---高低层(多尺度)特征融合

    目录 概述 基本概念 典型方法概述 相关工作 多尺度模型设计 Deep Feature Fusion for VHR 高分辨率图像 Remote Sensing Scene Classification DCA特征融合方法 基于神经网络的目
  • 图像二值化

    文章目录 1 图像二值化 2 图像二值化方法及Python实现 2 1 简单二值法 2 2 平均值法 2 3 双峰法 2 4 OTSU法 3 opencv python中二值化方法的应用 3 1 简单阈值分割 Simple Threshol
  • 图像的FFT变换

    一 实验设备 计算机 matlab软件 二 实验目的 1 理解并掌握图像的FFT变换的原理 2 学习使用matlab对图像进行FFT变换 三 实验原理 图像fft变换可以将图像空间域变为频率域 进而对频率域图像进行操作 这样会使操作变得简单
  • 扩散模型:Diffusion models as plug-and-play priors作为即插即用先验的扩散模型

    扩散模型 Diffusion models as plug and play priors作为即插即用先验的扩散模型 0 摘要 1 概述 2 方法 2 1 问题设置 2 2 将去噪扩散概率模型作为先验 3 实验 图像生成 3 1 MNIST
  • MEF:COA-NET

    COA NET COLLABORATIVE ATTENTION NETWORK FOR DETAIL REFINEMENT MULTI EXPOSURE IMAGE FUSION COA NET 用于细节细化多曝光图像融合的协作关注网络 近
  • 无监督低照度图像增强网络ZeroDCE和SCI介绍

    目录 简介 Zero DCE 算法介绍 模型代码 无监督loss介绍 小结 Self Calibrated Illumination SCI 模型介绍 无监督loss介绍 小结 总结 简介 当前有较多深度学习的方法来做图像效果增强 但多数都
  • EPI distortion correction形变矫正, eddy, fieldmap等五种不同方法

    EPI distortion correction形变矫正 1 topup eddy 2 fieldmap eddy 2 1 对mag做去脑壳 2 2 基于去过脑壳的mag 1volume bet nii gz数据 对fieldmap进行预
  • pil_openvcv_scikit-image_tensorflow四种读图方式对比

    文章目录 1 四种不同的库读取jpg图显示 2 评估所读图片的差异 3 简单说明有差异原因 4 同样的流程对png图片进行处理 5 png图片转jpg 5 1 使用PIL进行转换 5 2 使用Opencv进行转换 5 3 使用Tensorf
  • 【图像处理】非线性滤波

    非线性滤波 图像处理中滤波分线性滤波和非线性滤波两种 其中常见的线性滤波有 方框滤波 中值滤波 高斯滤波等 其主要原理就是每个像素的输出值是输入像素的加权和 所以像素的输入与输出成线性关系 线性滤波器易于构造 并且易于从频域响应角度进行分析
  • ETC纹理压缩

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 提示 这里可以添加本文要记录的大概内容 例如 随着人工智能的不断发展 机器学习这门
  • 【图像配准】

    非配对配准 Non rigid registration 和配对配准 Rigid registration 是医学图像配准中常用的两种方法 它们有着不同的含义和应用 非配对配准 Non rigid registration 非配对配准是指将
  • Matlab图像处理系列——图像复原之噪声模型仿真

    微信公众号上线 搜索公众号 小灰灰的FPGA 关注可获取相关源码 定期更新有关FPGA的项目以及开源项目源码 包括但不限于各类检测芯片驱动 低速接口驱动 高速接口驱动 数据信号处理 图像处理以及AXI总线等 本节目录 一 图像复原的模型 二

随机推荐

  • 返回类型和return语句

    return语句中之当前正在执行的函数 并将控制权返回到调用该函数的地方 无返回值函数 没有返回值的return语句只能用在返回类型是void的函数中 返回void的函数不要求非得有return语句 因为这类函数最后一句后面会吟诗执行ret
  • 机器学习之人脸识别(Face Recognition)

    机器学习之机器是如何识别人脸 Face Recognition 的 目前 一些机器学习技术已经被广泛应用于人脸识别 人脸支付以及身份认证领域 例如支付宝的FACEID 阿里的Alipay ETC等等 这个领域内的算法多以传统的Eigen F
  • [转]虚拟驾舱Cockpit可选的芯片平台

    如果你认为本系列文章对你有所帮助 请大家有钱的捧个钱场 点击此处赞助 赞助额0 1元起步 多少随意 声明 本文只用于个人学习交流 若不慎造成侵权 请及时联系我 立即予以改正 锋影 email 174176320 qq com 与传统的多芯片
  • redis的多路复用原理

    redis服务端对于命令的处理是单线程的 但是在I O层面却可以同时面对多个客户端并发的提供服务 并发到内部单线程的转化通过多路复用框架实现 一个IO操作的完整流程是数据请求先从用户态到内核态 也就是操作系统层面 然后再调用操作系统提供的a
  • mysql表示数字的数据类型的长度

    在mysql当中表示数字的数据类型 有这么几个 从小到大以此是 tinyint 128 127 smallint 32 768 32767 mediumint 8 388 608 8388607 这三个对应java的数据类型是int类型 i
  • Java-Java绘图坐标体系

    坐标体系介绍 坐标原点位于左上角 以像素为单位 在java坐标系中 第一个是x坐标 表示当前位置为水平方向 距离坐标原点x个像素 第二个是y坐标 表示当前位置为垂直防线 距离坐标原点y个像素 像素介绍 像素是一个密度单位 计算机在屏幕上显示
  • httpservletresponse 获取body_获取请求体数据

    将一些获取请求体数据 请求体数据post请求的时候才有
  • 关于github在vscode上的认证以及密钥缓存机制

    今天在向GitHub仓库提交代码的时候收到了这封邮件 说是使用密码的认证将要被舍弃了 提醒我换成两步验证 2FA 切换成两步验证很顺利 突然很好奇GitHub密码在Mac上是怎么保存的 vscode的设置里有两个选项 如下图 保存密码的地方
  • html如何添加环绕标签,html给定标签选项并添加标签(附代码)

    这篇文章给大家介绍的内容是关于html给定标签选项并添加标签 附代码 有一定的参考价值 有需要的朋友可以参考一下 希望对你有所帮助 HTML haveTags addTags 返回的数组 CSS havetags span addtags
  • ctfshow 萌新web系列--3

  • Linux shell判断含有通配符的文件是否存在

    方法一 使用 ls jpg gt dev null 命令 if ls jpg gt dev null then echo 当前文件夹下 未找到 jpg文件 else echo 当前文件夹下 存在 jpg文件 fi 方法二 使用 ls jpg
  • Descriptors cannot not be created directly

    1 Descriptors cannot not be created directly 在运行诸如深度学习python等程序时 如mmdetection mmdetection3d中的程序 会出现报错 Descriptors cannot
  • 后氧传感器正常数据_氧传感器电压多少正常?氧传感器数据流分析介绍

    氧传感器作用是什么 氧传感器用以检测排气中氧的浓度 并向ECU发出反馈信号 再由ECU控制喷油器喷油量的增减 从而将混合气的空燃比控制在理论值附近 氧传感器是利用陶瓷敏感元件测量汽车排气管道中的氧电势 由化学平衡原理计算出对应的氧浓度 达到
  • Redis启动与关闭

    安装redis之后 在命令行窗口中输入 redis server redis windows conf 启动redis 关闭命令行窗口就是关闭 redis redis作为windows服务启动方式 redis server service
  • Xilinx_RAM_IP核的使用

    Xilinx RAM IP核的使用 说明 单口RAM 伪双口RAM 双口RAM的读写 以及RAM资源占用的分析 环境 Vivado2018 3 IP核 Block Memory Generator 参考手册 UG473 7 Series F
  • 人力资源平台项目总结(2)

    目录 1 路由和页面 1 1 左侧菜单的显示逻辑 设置菜单图标 重点 2 组织架构 2 1 认识组织架构 2 2 将树形的操作内容单独抽提成组件 2 3 获取组织架构数据 并进行树形处理 重点 2 4 删除部门功能实现 2 5 新增部门功能
  • 使用presto+airpal+hive打造即席查询工具

    0X01 前言 即席查询怎么做 怎么选型 这次用的是presto来做尝试 缘起 公司是Impala的深度用户 我主要负责Impala的各方面的工作 最近因为一些特殊原因需要对现有的体系进行一些调整 需要做出来即席查询的组件 在spark s
  • 基于matlab的多元线性回归分析

    二 多元线性回归原理 2 1 数学模型 在社会生活及生产实践中会经常遇到一种问题 即我们非常关注一个量的变化 而这个量受到另一个或是多个因素的影响 我们想要了解这些因素是如何影响我们最为关注的这个量的以及这些因素对我们最为关注的这个量的影响
  • 【C语言进阶】实现atoi函数

    1 函数介绍 atoi的函数功能 将string所指向数字字符串转化为整数 注意 1 会跳过前面的空白字符 例如空格 tab缩进 等 2 如果不能转换成 int 或者为空字符串 那么将返回 0 特别注意 该函数要求被转换的字符串是按十进制数
  • 数字图像处理-小波变换小白解释基本原则

    内容完全转载 小波理论的基本概念及概述 第二版 欢迎阅读此份关于小波变换的入门教程 小波变换是一个相对较新的概念 其出现大约是在20世纪80年代 但是有关于它的文章和书籍却不少 这其中大部分都是由数学专业人士写给其他同行看的 不过 仍然有大