[4G/5G/6G专题基础-161]:常见的滤波技术

1. 滤波概述

1.1 什么是滤波

滤波(Filtering)是信号处理中的一种基本操作,用于改变信号的特性或者去除信号中的干扰成分。滤波器可以看作是一种系统,将输入信号作为输入,经过处理后产生输出信号。

滤波在信号处理中广泛应用,用于去除噪声平滑信号频率选择等。

1.2 为什么需要滤波

不同的滤波器类型和参数设置将影响滤波器的频率响应和性能,因此在选择和设计滤波器时需要根据信号特性和应用需求进行权衡。

滤波在信号处理中是非常重要的,主要有以下几个原因:

  1. 去除噪声:噪声是信号中不希望存在的无用成分,它可以由多种原因引起,如传感器干扰电磁干扰等。滤波算法可以有效地去除信号中的噪声,从而提高信号的质量和可靠性

  2. 提取有效信息:信号可能包含大量的噪声和干扰成分,这些成分会掩盖或模糊信号中的有效信息。通过滤波算法,可以滤除噪声和干扰,突出信号中的有效信息,使其更容易被观测和分析。

  3. 平滑信号:信号中可能存在瞬时波动或突变的现象,这些波动可能是由于测量误差或系统变动引起的。通过滤波算法,可以平滑信号,去除这些短时波动,得到更加稳定和可靠的信号。

  4. 频率分析:滤波算法可以将信号分解成不同频率的成分,从而进行频率分析和频域处理。这对于信号处理、频谱分析和频率特征提取等应用非常重要。例如,使用滤波算法可以提取信号中的特定频率成分,或者滤除某些频率范围内的干扰信号。

综上所述,滤波在信号处理中的作用是非常重要的,它可以去除噪声、提取有效信息、平滑信号以及进行频率分析,从而改善信号质量、提高可靠性和实现更精确的信号处理任务。

1.3 滤除噪声

滤除噪声信号的方法之一是在时域上对波形进行滤波。以下是一些常见的时域滤波方法:

  1. 移动平均滤波(Moving Average Filtering):将信号中相邻数据点的平均值作为滤波后的结果。这种滤波方法可以平滑信号,减少高频噪声的影响。移动平均滤波窗口的大小可以根据需要进行调整,较大的窗口适合滤除低频噪声。

  2. 中值滤波(Median Filtering):将滤波窗口内的数据点排序,然后选择中间值作为滤波结果。中值滤波对于椒盐噪声等脉冲型噪声具有很好的去除效果,可以有效平滑波形。

  3. 加权移动平均滤波(Weighted Moving Average Filtering):与简单移动平均滤波类似,但是在计算平均值时,对不同位置的数据点赋予不同的权重。这样可以更好地适应信号的变化情况,同时抑制噪声的影响。

  4. 自适应滤波(Adaptive Filtering):基于信号的统计特性和模型,自适应滤波器可以根据信号的变化动态调整滤波参数,实现对噪声的抑制。自适应滤波方法可以根据实际情况自适应地调整窗口大小或滤波器的系数。

请注意,选择合适的滤波方法要考虑噪声类型、信号特性以及滤波后对信号的影响。

有时候,组合多种滤波方法也可以获得更好的滤波效果。

根据具体的应用需求和实际情况,选择适合的滤波方法进行处理。

2.  常见的滤波算法

2.1 常见的滤波算法

数字滤波是一种信号处理技术,用于去除信号中的噪声或者改变信号的特性

下面是几种常见的数字滤波算法:

  1. 均值滤波器(Mean Filter):将信号中的每个样本值替换为该样本值及其邻近样本的均值。这种滤波器适用于平稳噪声。

  2. 中值滤波器(Median Filter):将信号中的每个样本值替换为该样本值及其邻近样本的中值。中值滤波器对于存在脉冲噪声的信号非常有效。

  3. 低通滤波器(Low-pass Filter):此类滤波器用于去除高频信号成分,保留低频信号成分。常见的低通滤波器有巴特沃斯滤波器、滑动平均滤波器等。

  4. 高通滤波器(High-pass Filter):该类滤波器用于去除低频信号成分,保留高频信号成分。常见的高通滤波器有巴特沃斯滤波器、巴特沃斯归一化滤波器等。

  5. 带通滤波器(Band-pass Filter):带通滤波器用于保留某个频率范围内的信号成分,抑制其他频率范围内的信号成分。常见的带通滤波器有巴特沃斯带通滤波器、Butterworth滤波器等。

这些仅是一些常见的数字滤波算法,实际应用中可能会使用更复杂的算法或者组合不同的滤波器以达到所需的滤波效果。具体选择哪种滤波算法取决于信号的特性以及滤波的要求。

2.2 常见的语音滤波技术

在语音信号处理中,有几种常见的滤波技术,用于去除噪声和增强语音质量。以下是一些常见的语音信号滤波技术:

  1. 降噪滤波器(Noise Reduction Filtering):降噪滤波器用于去除语音信号中的噪声成分。常见的降噪滤波器包括维纳滤波器和基于频域分析的降噪算法,可以通过估计噪声幅度谱或语音-噪声功率谱信息来减小噪声的影响。

  2. 预弯滤波器(Pre-emphasis Filtering):预弯滤波器是一种高通滤波器,通过增强语音信号中高频成分的能量来平衡频谱的能量分布。预弯滤波器可以提高语音信号的清晰度,并帮助改善语音的感知质量。

  3. 增强滤波器(Enhancement Filtering):增强滤波器用于强调或突出语音信号中的特定成分,从而提高信号的清晰度和可听性。常见的增强滤波器包括谱减法、短时能量法、频域平滑法等。

  4. 自适应滤波器(Adaptive Filtering):自适应滤波器可以根据输入信号的特性自动调整滤波参数,以实现对噪声的抑制信号的增强。自适应滤波器通常使用递归滤波算法,如最小均方差(LMS)或最小均方误差(MMSE)算法。

这些滤波技术可单独应用或组合使用,根据具体的噪声环境和应用需求选择适合的方法。同时,滤波器的性能还受到滤波器参数的选择和调整的影响,需要根据实际情况进行优化和调试。

2.3 滤波的基本原理

信号滤波和去噪的原理可以根据不同的滤波技术和方法而变化。

以下是一些常见的信号滤波和去噪原理:

  1. 均值滤波原理:均值滤波是一种简单的滤波方法,它通过计算信号中每个数据点周围邻域数据点的平均值来平滑信号。这种滤波方法的原理是假设信号中的噪声是随机的,并且噪声成分相对较小,通过计算平均值来减小噪声的影响。

  2. 中值滤波原理:中值滤波是一种非线性滤波方法,它通过计算信号中每个数据点周围邻域数据点的中位数来平滑信号。中值滤波的原理是假设信号中的噪声是脉冲型或椒盐噪声,通过选择中位数来去除异常噪声值。

  3. 频率域滤波原理:频率域滤波方法通过将信号转换到频率域进行滤波操作。它的原理是基于傅里叶变换的频谱分析,可以选择性地去除特定频率范围内的噪声。滤波器设计可以基于滤波器响应、滤波器系数或频域掩模等方法。

  4. 自适应滤波原理:自适应滤波器根据信号和噪声的统计特性和模型,自动调整滤波器参数以适应信号和噪声的变化。常见的自适应滤波原理包括最小均方误差(LMS)滤波和最小均方差(MMSE)估计。

  5. 基于小波变换的去噪原理:小波变换是一种多尺度的分析方法,在信号分解后,可以选择性地去除噪声成分。通过阈值化或软硬阈值方法,可以将小波系数中的小幅噪声抑制或清除,并重构出干净的信号。

这些原理和方法都有其特定的假设和适用条件,具体的选择和实现需要根据信号和噪声的特点、应用需求和性能要求进行评估和调整。

2.3 常见的滤波参数

常见的滤波参数包括以下几个:

  1. 滤波器类型:滤波器可以分为低通滤波器、高通滤波器、带通滤波器和带阻滤波器等不同类型。选择适当的滤波器类型取决于要去除或保留的频率范围。

  2. 截止频率:截止频率是滤波器的一个重要参数,它决定了滤波器在频率域上的截断或衰减特性。低通滤波器的截止频率是指在该频率以下的信号成分将被保留,而高通滤波器的截止频率是指在该频率以上的信号成分将被保留。

  3. 阶数:滤波器的阶数指的是滤波器的复杂度或级联数。较高的阶数通常意味着更陡峭的滤波特性更好的频率选择性能,但也可能导致更多的计算和延迟

  4. 带宽:带宽是滤波器在频率域上的有效传输范围。对于带通滤波器和带阻滤波器,带宽指的是滤波器的截止频率之间的频率范围。

  5. 抖动和失真:滤波器的设计通常要考虑到抖动和失真的问题。抖动是指滤波器对输入信号的时滞响应,而失真则是指滤波器对信号的形状、振幅或相位的改变。这些参数的控制需要根据具体的应用需求进行调整。

需要注意的是,不同类型的滤波器有不同的参数选取方法,如巴特沃斯滤波器需要指定阶数和截止频率,而高斯滤波器需要指定标准差。因此,在选择和调整滤波器参数时,需要考虑信号的特点、滤波要求以及实际应用场景的需要。

第3章 算法库

3.1 C++开源库

在C++中,有一些开源库常用于数字信号处理任务。以下是几个常见的C++数字信号处理的开源库:

  1. FFTW:FFTW(Fastest Fourier Transform in the West)是一个高效的快速傅立叶变换(FFT)库。它提供了一系列优化的算法和函数,用于进行频谱分析和滤波等信号处理任务。

  2. Intel IPP:Intel Integrated Performance Primitives(IPP)是由英特尔开发的一组高性能信号和图像处理函数库。IPP提供了许多优化的函数,涵盖了常见的信号处理操作,包括滤波、变换、谱估计等。

  3. SIGLIB:SIGLIB是一个功能丰富的开源信号处理库,提供了多种滤波、变换、特征提取等信号处理算法的实现。SIGLIB的优点是它是一个独立的库,可以在多个平台上运行。

  4. Armadillo:Armadillo是一个快速、模板化的线性代数库,用于进行矩阵操作和向量计算。它可以用于数字信号处理相关的矩阵运算,如卷积、滤波和变换等操作。

以上这些库都是开源的,在许多项目中被广泛使用。它们提供了丰富的功能和优化的实现,可以帮助您更轻松地进行数字信号处理任务。您可以根据具体需求和个人偏好选择适合的库进行使用。

3.2 C++ DSP库

以下是一些常用的开源C++ DSP(数字信号处理)算法库:

  1. JUCE: JUCE是一个跨平台的C++应用程序框架,它提供了丰富的音频处理和DSP算法库。它支持音频流处理、滤波、信号生成和分析等功能,并且具有良好的可扩展性和易用性。

  2. FFTW: FFTW(Fastest Fourier Transform in the West)是一个高性能的快速傅里叶变换库,它提供了一系列的C++函数用于高效地进行傅里叶变换和逆变换。它支持多维和实数/复数的变换,适用于频域分析和信号频谱处理等应用。

  3. PFFFT: PFFFT是另一个快速傅里叶变换库,它专注于实数信号的快速傅里叶变换。它具有高性能、低内存占用和易于集成等特点,适用于实时音频处理和嵌入式系统等领域。

  4. PortAudio: PortAudio是一个跨平台的音频I/O库,它提供了C++接口用于实时音频输入和输出。它支持多个音频设备和音频流,并且可以与其他音频处理库结合使用,实现音频信号的实时处理和分析。

  5. CSL: CSL(C++ Scientific Library)是一个开源的科学计算库,其中包括用于数字信号处理的算法和函数。它提供了一系列常用的滤波器、变换、谱估计和信号生成等功能,方便进行数字信号处理和音频处理的开发。

这些开源库提供了丰富的数字信号处理算法和函数,可以用于音频处理、音频特征提取、频谱分析、滤波器设计等应用。根据具体的需求和项目要求,可以选择合适的库进行集成和使用。

在C++领域中,有一些常用的科学计算库可以提供数字信号处理(DSP)的功能,例如:

  1. Eigen:Eigen是一个高性能的C++模板库,专注于线性代数运算。它提供了矩阵、向量、线性方程求解、特征值分解、傅里叶变换等常用的线性代数运算功能,可在数字信号处理中使用。

  2. GSL(GNU Scientific Library):GSL是GNU项目的一部分,它提供了一系列用于科学计算的C函数库。GSL包含了各种数学函数、特殊函数、数值积分、数值优化以及快速傅里叶变换等功能,可用于数字信号处理及其他科学计算任务。

  3. Boost.Math:Boost是一个流行的C++库集合,其中的Boost.Math模块提供了一组数学函数和算法。它包括了各种数值计算函数、特殊函数、线性代数运算等,可辅助进行数字信号处理、统计分析等任务。

这些库都是开源的,提供了丰富的数学和科学计算功能,可以辅助实现数字信号处理算法。在选择合适的库时,可以根据具体的需求、性能要求和易用性等因素进行评估和选择。

3.3 C++科学计算库 GSL

最流行且常用的C++科学计算库是GNU Scientific Library (GSL)。

GSL是一个开源的C和C++库,提供了许多用于科学计算的函数和算法,涵盖了各种数学和统计学的任务。

GSL的功能包括但不限于:线性代数操作(如矩阵运算、向量操作、特征值分解)、数值积分和微分、优化算法、随机数生成、多项式拟合、信号处理、插值、快速傅里叶变换等等。它还提供了许多特殊函数的实现,例如椭圆函数、贝塞尔函数、伽玛函数等。

GSL是一个功能强大且广泛使用的库,适用于各种科学计算和数值分析的领域。它易于集成到C++项目中,并且具有高性能和可靠性。

GNU Scientific Library(GSL)是一个强大的、可靠的开源科学计算库,用于C和C++编程语言。它提供了许多数值计算和统计分析的功能,可以用于各种科学和工程领域的计算任务。

GSL库的功能包括但不限于:

GNU Scientific Library(GSL)是一个功能强大的开源科学计算库,提供了丰富的数学和统计学功能。

下面是GSL的主要功能和特点:

  1. 基本数学函数:包括数值计算、三角函数、指数函数、对数函数等。

  2. 特殊函数:实现了各种特殊函数,如贝塞尔函数、伽马函数、椭圆函数等。

  3. 矩阵运算:提供了矩阵和向量操作,包括矩阵乘法、向量加法、转置、逆矩阵等。

  4. 数值积分和微分方程:支持多种数值积分方法,包括高斯积分、自适应积分等,以及常微分方程的数值求解方法。

  5. 优化算法:包括梯度计算、拟牛顿法和共轭梯度等方法进行非线性优化。

  6. 随机数生成:提供了伪随机数生成器和各种常用分布的随机数生成方法。

  7. 数值线性代数:提供了线性方程组求解、特征值分解、奇异值分解等功能。

  8. 统计分析:包括概率分布函数、假设检验、方差分析、回归分析等统计学函数和方法。

  9. 插值和拟合:支持数据插值、多项式插值、样条插值等,以及数据拟合和曲线拟合。

  10. 数字信号处理:包括快速傅里叶变换(FFT)、滤波器设计、滤波等信号处理功能。

GSL在科学和工程计算中得到广泛应用,它具有可靠的数值算法、丰富的函数库和简单易用的API接口。你可以通过访问GNU GSL的官方网站(https://www.gnu.org/software/gsl/)了解更多关于GSL的详细信息,并获取相关的文档和示例代码。

3.4 GSL数字信号处理

GSL库在数字信号处理方面提供了多种功能和工具,下面列举了一些主要的数字信号处理功能:

  1. 快速傅里叶变换(FFT):GSL实现了快速傅里叶变换算法,可用于高效地进行信号频谱分析、滤波、相关性计算等。

  2. 滤波器设计:GSL提供了多种滤波器设计方法和函数,包括低通滤波器、高通滤波器、带通滤波器、带阻滤波器等。可以设计和实现各种常见的滤波器,如巴特沃斯滤波器、切比雪夫滤波器等。

  3. 滤波:GSL中的滤波函数可以应用已设计的滤波器来过滤信号,去除噪音或者进行信号增强。

  4. 频谱估计:GSL提供了用于频谱估计的函数,如周期图法、自相关函数法、谱密度估计等。可以计算信号的频谱特性,包括频率分量的强度和相位信息。

  5. 自相关和互相关:GSL提供了自相关和互相关函数,用于信号的相似性分析、信号同步、相关性计算等。

  6. 数字滤波器:GSL支持数字滤波器的设计和应用,包括FIR滤波器和IIR滤波器。可以实现滤波器的激励响应计算、滤波操作和频率响应分析等。

  7. 信号重采样:GSL提供了信号重采样函数,可以根据给定的采样率对信号进行重采样,用于改变信号的采样频率和处理不同采样速率的信号。

  8. 非线性信号处理:GSL还提供了一些非线性信号处理功能,如非线性滤波、非线性系统建模等。

GSL中的数字信号处理功能可以帮助你进行信号处理、频谱分析、滤波等操作。它提供了一组强大的函数和工具,方便你进行数字信号处理任务。详细的函数和使用方法可以在GSL的文档中找到。

3.5 SP++图像库

SP++是一个针对图像和信号处理的开源C++库,它提供了一系列常用的图像处理和信号处理功能。

SP++库的主要功能包括:

  1. 图像处理:包括图像读取和保存、图像缩放、图像旋转、图像滤波、边缘检测、图像分割和图像增强等功能。

  2. 信号处理:提供了一系列信号处理函数,如傅里叶变换、滤波器设计、频谱分析、信号压缩等。

  3. 特征提取:支持常用的图像特征提取方法,如HOG(方向梯度直方图)、LBP(局部二值模式)等。

  4. 目标检测和目标跟踪:包括目标检测算法(如Haar级联、HOG+SVM)和目标跟踪算法(如卡尔曼滤波器、粒子滤波器)。

  5. 机器学习:提供了一些机器学习算法的实现,如K近邻算法、支持向量机等。

  6. 计算几何:支持计算几何算法,如点线面的几何计算、包围盒计算等。

  7. 数值优化:提供了一些数值优化算法,如梯度下降法、共轭梯度法等。

SP++库是一个开源项目,你可以在其GitHub仓库上找到更多关于该库的详细信息、示例代码和文档。请注意,由于SP++库可能是一个相对较新的库,因此可能还不太成熟或缺乏广泛运用。在使用之前,请确保熟悉其文档和功能,并在实际项目中进行充分测试。

3.6 C++数字信号处理算法库SP++

SP++ (Signal Processing in C++) 是一个关于信号处理与数值计算的开源C++程序库,该库提供了信号处理与数值计算中常用算法的C++实现。

SP++中所有算法都以C++类模板方法实现,以头文件形式组织而成,所以不需要用户进行本地编译,只要将相关的头文件包含在项目中即可使用。”XXX.h”表示声明文件,”XXX-impl.h”表示对应的实现文件。所有的函数和类均位于名字空间”splab”中,因此使用SP++时要进行命名空间声明:”using namespace splab”。
SP++项目地址:https://code.google.com/archive/p/tspl/,所有算法以代码的形式发表在了“开源中国社区”,博客地址为:http://my.oschina.net/zmjerry/blog, https://www.oschina.net/p/tspl 若有找不到的文件,可以通过博客主页提供的“搜索博客”功能进行查找。

SP++中实现的相关算法目录如下:

1 向量类模板
1.1 基本向量类
1.2 常用数学函数的向量版本
1.3 常用的辅助函数
1.4 简单计时器

2 矩阵类模板
2.1 基本矩阵类
2.2 常用数学函数的矩阵版本
2.3 实矩阵与复矩阵的Cholesky分解
2.4 实矩阵与复矩阵的LU分解
2.5 实矩阵与复矩阵的QR分解
2.6 实矩阵与复矩阵的SVD分解
2.7 实矩阵与复矩阵的EVD分解
2.8 矩阵的逆与广义逆

3 线性方程组
3.1 常规线性方程组
3.2 超定与欠定线性方程组
3.3 病态线性方程组

4 非线性方程与方程组
4.1 非线性方程求根
4.2 非线性方程组求根
4.3 Romberg数值积分

5 插值与拟合
5.1 Newton插值
5.2 三次样条插值
5.3 最小二乘拟合

6 优化算法
6.1 一维线搜索
6.2 最速下降法
6.3 共轭梯度法
6.4 拟Newton法

7 Fourier分析
7.1 2的整次幂FFT算法
7.2 任意长度FFT算法
7.3 普通信号FFT使用方法
7.4 FFTW的C++接口
7.5 卷积与快速实现算法

8 数字滤波器设计
8.1 常用窗函数
8.2 滤波器基类设计
8.3 FIR数字滤波器设计
8.4 IIR数字滤波器设计

9 随机信号处理
9.1 随机数生成器
9.2 概论统计中的常用函数
9.3 相关与快速实现算法

10 功率谱估计
10.1 经典谱估计方法
10.2 参数化谱估计方法
10.3 特征分析谱估计方法

11 自适应滤波器
11.1 Wiener滤波器
11.2 Kalman滤波器
11.3 LMS自适应滤波器
11.4 RLS自适应滤波器

12 时频分析
12.1 加窗Fourier变换
12.2 离散Gabor变换
12.3 Wigner-Wille分布

13 小波变换
13.1 连续小波变换
13.2 二进小波变换
13.3 离散小波变换

14 查找与排序
14.1 二叉查找树
14.2 平衡二叉树
14.3 基本排序算法
14.4 Huffman编码

3.7 SP++库与GSL的区别

    • SP++:由于其专注于信号处理,SP++更适合用于音频处理、图像处理、通信系统等需要对信号进行处理的应用领域。
    • GSL:GSL则更广泛应用于科学计算和数值分析领域,例如物理建模、统计分析、优化问题等。
  1. 接口和文档:

    • SP++:SP++提供了易于使用的C++接口和详细的文档,使开发人员能够快速上手并了解其功能和用法。
    • GSL:GSL同样提供了C++接口并有详细的文档,但由于其功能广泛,可能需要更多时间来熟悉和掌握。
  2. 社区支持和更新:

    • SP++:SP++是一个相对较新的库,尽管其功能较为专注,但其社区支持可能相对较少,更新频率可能较低。
    • GSL:GSL是一个成熟的库,已经存在了相当长的时间,有一个庞大的用户群体和活跃的社区支持,经常会有维护和更新。

综上所述,如果你的需求主要是信号处理方面的任务,SP++可能是一个更合适的选择,它提供了专门针对信号处理的功能和易于使用的接口。而如果你的需求更广泛,且需要进行科学计算和数值分析,那么GSL可能更适合你,它提供了更多领域的功能模块。你可以根据自己的具体需求和优先权进行选择。

3.8 C++如何实现滤波

在C++中实现滤波可以使用不同的方法,其中最常用的是数字滤波器设计

下面是一种使用数字滤波器的常见实现方法:

  1. 确定滤波器类型:首先确定你需要的滤波器类型,比如低通滤波器、高通滤波器、带通滤波器或带阻滤波器。确定了滤波器类型后,就可以开始设计滤波器。

  2. 设计滤波器:有很多方法可以设计数字滤波器,其中常用的有频域设计和时域设计等。常见的频域设计方法有FIR(有限脉冲响应)滤波器和IIR(无限脉冲响应)滤波器。常见的时域设计方法包括窗函数法和最小二乘法等。

  3. 实现滤波器:根据设计得到的滤波器参数,可以使用C++代码实现滤波器。具体实现方式取决于滤波器的类型和设计方法。对于FIR滤波器,可以使用差分方程、卷积等方式实现。对于IIR滤波器,可以使用差分方程、递归等方式实现。

  4. 应用滤波器:将滤波器应用于需要滤波的信号上。将输入信号逐样本输入滤波器,根据滤波器的差分方程或递归方程计算输出信号。

需要注意的是,在实际应用中,滤波器的设计和实现可能会涉及到很多细节和性能优化。有时候,为了方便和效率,可以使用成熟的开源库来实现滤波器,如之前提到的GNU Scientific Library (GSL)、JUCE等,它们提供了丰富的滤波器函数和工具。这样可以减少手动实现的复杂性和风险。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue中全局状态存储 pinia和vuex对比 pinia比vuex更香 Pinia数据持久化及数据加密

前言 毕竟尤大佬都推荐使用pinia,支持vue2和vue3! 如果熟悉vuex,花个把小时把pinia看一下,就不想用vuex了 支持选项式api和组合式api写法pinia没有mutations,只有:state、getters、actionspinia分模块不…

TartanVO: A Generalizable Learning-based VO 论文阅读

论文信息 题目:TartanVO: A Generalizable Learning-based VO 作者:Wenshan Wang, Yaoyu Hu 来源:ICRL 时间:2021 代码地址:https://github.com/castacks/tartanvo Abstract 我们提出了第一个基于学习的视觉里程计&…

妙盈面试(部分)

算法题1,二分查找即可: git rebase算法题2,求二叉树两结点的最小公共祖先 搞笑的是,第2道算法题我刚开始做,黑屏了两秒钟,当时其实腾讯会议软件已经崩溃了,但是我没注意到而是继续做题。等到做…

Stable Diffusion - 常用的负向提示 Embeddings 解析与 坐姿 (Sitting) 提示词

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/132145248 负向 Embeddings 是用于提高 StableDiffusion 生成图像质量的技术,可以避免生成一些不符合预期的图像特征,比如…

推出稳定代码:人工智能辅助编码的新视野

推荐:使用 NSDT场景编辑器 快速助你搭建可二次编辑的3D应用场景 在不断发展的软件开发环境中,对效率和可访问性的追求导致了各种工具和平台的创建。最新的创新之一是StableCode,这是Stability AI的大型语言模型(LLM)生…

整理mongodb文档:改

个人博客 整理mongodb文档:改 求关注,求批评,求进步 文章概叙 本文主要讲的是mongodb的updateOne以及updateMany,主要还是在shell下进行操作,也讲解下主要的参数upsert以及更新的参数。 数据准备 本次需要准备的数据不是很多…

怎样做接口测试:从入门到精通的指南

怎样做接口测试:从入门到精通的指南 为什么接口测试如此重要? 接口测试在软件开发过程中扮演着关键的角色。它确保不同系统、组件或服务之间的无缝集成和通信。 接口测试的基本概念 接口测试是一种验证软件系统组件之间相互连接的过程。它主要关注数据…

SpringBoot 整合Druid

集成Druid Druid简介 Java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池。 Druid 是阿里巴巴开源平台上一个数据库连接池实现,结合了 C3P0、DBCP 等 DB 池的优点,同时加入了日志监控。 D…

【CSS】背景图定位问题适配不同机型

需求 如图, 实现一个带有飘带的渐变背景 其中头像必须显示飘带凹下去那里 , 需要适配不同的机型, 一不下心容易错位 实现 因为飘带背景是版本迭代中更新的, 所以飘带和渐变背景实则两个div 飘带切图如下 , 圆形部分需要契合头像 <view class"box-bg"><…

C++内存管理(new与delete)

这篇文章的主要内容是new与delete的由来&#xff0c;使用new与delete对C堆内存进行管理&#xff0c;(malloc、free)与(new、delete)的区别。希望对C爱好者有所帮助&#xff0c;内容充实且干货&#xff0c;点赞收藏防止找不到&#xff01; 更多C优质内容跳转&#xff1a; 重生之…

百度秋招攻略,百度网申笔试面试详解

百度秋招简介 作为行业巨头&#xff0c;百度向社会提供的岗位一直都是非常吃香的&#xff0c;每年也都有很多考生密切关注&#xff0c;百度发布的招聘广告&#xff0c;以尽可能的让自己进入这家企业工作&#xff0c;实现自己的人生价值。那么百度每年的秋招时间是多久&#xf…

An unexpected error has occurred. Conda has prepared the above report

今日在服务器上创建anaconda虚拟环境的时候&#xff0c;出现了如下报错 An unexpected error has occurred. Conda has prepared the above report 直接上解决方案 在终端中输入如下指令 conda config --show-sources 如果出现以下提示&#xff0c;说明多了一个文件 输入以下…

JVM 性能优化思路

点击下方关注我&#xff0c;然后右上角点击...“设为星标”&#xff0c;就能第一时间收到更新推送啦~~~ 一般在系统出现问题的时候&#xff0c;我们会考虑对 JVM 进行性能优化。优化思路就是根据问题的情况&#xff0c;结合工具进行问题排查&#xff0c;针对排查出来的可能问题…

[Docker精进篇] 详细配置和部署镜像(一) 文末送书

前言&#xff1a; 容器提供了将应用程序的代码、运行时、系统工具、系统库和配置打包到一个实例中的标准方法。 文章目录 一. 认识Docker1️⃣docker服务端2️⃣docker客户端3️⃣docker仓库 二. 使用Docker1️⃣卸载旧的2️⃣安装 yum-utils3️⃣添加阿里云镜像&#xff1a;4️…

使用Java 8 中的 Stream 遍历树形结构

1 前言 可能平常会遇到一些需求&#xff0c;比如构建菜单&#xff0c;构建树形结构&#xff0c;数据库一般就使用父id来表示&#xff0c;为了降低数据库的查询压力&#xff0c;我们可以使用Java8中的Stream流一次性把数据查出来&#xff0c;然后通过流式处理&#xff0c;我们一…

安卓应用面试

Cordova 说明&#xff1a;一个移动框架&#xff0c;将HTML&#xff0c;CSS&#xff0c;JS封装为原生APP(hybird) 优点&#xff1a;跨平台&#xff0c;利于移植&#xff0c;能利用HTML5的各种特性&#xff0c;快速开发&#xff0c;成本低 缺点&#xff1a;不能使用设备的所以…

0基础学习VR全景平台篇 第83篇:智慧眼-怎么理解分类?

一、功能说明 分类可以理解为&#xff0c;为了方便城市运营工作的管理所实行的行政区划&#xff0c;如XXX乡镇、XXX街道等等。 二、后台编辑界面 1、点击【新增】&#xff0c;填写分类的名称&#xff0c;若有上一级分类&#xff0c;那么还需选择父级分类&#xff0c;建议从最…

容灾备份服务器怎么样?

容灾备份服务器是一种用于保护信息系统的设备&#xff0c;它可以在系统出现故障时提供备用服务。容灾备份服务器通常包括两个部分&#xff1a;容灾和备份。容灾是指在遭遇灾害时能保证信息系统能正常运行&#xff0c;帮助企业实现业务连续性的目标。备份是为了应对灾难来临时造…

Mysql数据库之单表查询

目录 一、练习时先导入数据如下&#xff1a; 二、查询验证导入是否成功 三、单表查询 四、where和having的区别 一、练习时先导入数据如下&#xff1a; 素材&#xff1a; 表名&#xff1a;worker-- 表中字段均为中文&#xff0c;比如 部门号 工资 职工号 参加工作 等 CRE…

【python 深度学习】解决遇到的问题

目录 一、RuntimeError: module compiled against API version 0xc but this version of numpy is 0xb 二、AttributeError: module ‘tensorflow’ has no attribute ‘flags’ 三、conda 更新 Please update conda by running 四、to search for alternate channels that…
最新文章