图像增强的100种方法

news2024/11/23 9:58:33

文章目录

  • 什么是图像增强 ?
  • 一、亮度和对比度调整
    • 1.1、线性方法
      • 1.1.1、灰度反转(Gray Inversion)
      • 1.1.2、对比度拉伸(Contrast Stretching)
      • 1.1.3、对比度和亮度增强(Contrast and Brightness)
    • 1.2、非线性方法
      • 1.2.1、指数变换(Exponential Transformation)
      • 1.2.2、伽马变换(Gamma Transformation)
      • 1.2.3、对数变换(Logarithmic Transformation)
  • 二、直方图均衡化
    • 2.1、直方图均衡化(Histogram Equalization,HE)
    • 2.2、限制对比度自适应直方图均衡化(Contrast Limited Adaptive Histogram Equalization,CLAHE)
  • 三、空间域(增强)
    • 3.1、线性滤波(Linear Filtering)
    • 3.2、非线性滤波(Non-linear Filtering)
    • 3.3、边缘检测(Edge Enhancement)
  • 四、频率域(增强)
    • 4.1、傅里叶变换(Fourier Transform)
    • 4.2、小波变换(Wavelet Transform)
  • 五、深度学习
    • 5.1、卷积神经网络 (Convolutional Neural Networks, CNNs)
    • 5.2、生成对抗网络 (Generative Adversarial Networks, GANs)
    • 5.3、变分自编码器 (Variational Autoencoders, VAEs)
    • 5.4、注意力机制 (Attention Mechanism)
    • 5.5、变换网络 (Transformers)
    • 5.6、自监督学习 (Self-Supervised Learning)

什么是图像增强 ?

图像增强:通过一系列技术和方法对图像进行处理,以改善其视觉效果和特征表现。

主要指标包括:

  • 亮度(Brightness):影响图像的整体光照程度,确保图像在视觉上既不过暗也不过亮。
  • 对比度(Contrast):增强图像中亮部和暗部之间的差异,使得细节更加明显,高对比度有助于更清晰地展示图像的纹理和特征。
  • 清晰度(Sharpness):提高图像边缘的清晰度,使物体轮廓更加鲜明,便于细节识别。
  • 色彩饱和度(Color Saturation):增强颜色的丰富性,使图像色彩更加鲜艳,提升视觉吸引力。
  • 纹理(Texture):突出图像中的纹理细节,增强表面特征,对于医学影像和材料检测等领域尤为重要。
  • 去噪(Denoising):降低图像中的噪声,提高信号质量,减少噪声对重要细节的干扰。
  • 增强特征(Feature Enhancement):提高重要特征的可见性,方便观察和分析。
  • 视觉一致性(Visual Consistency):确保图像不同区域在亮度、对比度和色彩表现上的一致性,便于用户进行全面分析。

图像增强技术广泛应用于多个领域,包括:

  • 医学影像:改善X光、CT和MRI图像,以辅助医生诊断。
  • 卫星和遥感图像:增强地理数据,支持土地利用分类和环境监测。
  • 安防监控:提升监控视频质量,促进人脸识别和行为分析。
  • 工业检测:提高质量控制中的产品检测精度。
  • 图像搜索和检索:改善图像搜索结果的准确性和相关性。

一、亮度和对比度调整

1.1、线性方法

1.1.1、灰度反转(Gray Inversion)

在这里插入图片描述

import cv2


if __name__ == '__main__':
    import tifffile
    image = tifffile.imread(r"F:\py\YH220_235.tif")
    # image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
    inversion_image = 255 - image  # 灰度取反

    import matplotlib.pyplot as plt
    plt.subplot(1, 2, 1), plt.imshow(image, cmap='gray'), plt.title('image'), plt.axis('off')
    plt.subplot(1, 2, 2), plt.imshow(inversion_image, cmap='gray'), plt.title('inversion_image'), plt.axis('off')
    plt.show()

1.1.2、对比度拉伸(Contrast Stretching)

效果:适合亮度范围狭窄的图像,通过简单拉伸提升整体对比度。

在这里插入图片描述

import cv2
import numpy as np


def contrast_stretching(image):
    # 对比度拉伸
    I_min = np.min(image)  # 输入图像的最小像素值
    I_max = np.max(image)  # 输入图像的最大像素值
    O_min = 0  # 输出图像的最小像素值设定为 0
    O_max = 255  # 输出图像的最大像素值设定为 255
    # 公式:y=a*x+b.(1)x归一化到[0, 1]; (2)a:拉伸到 [0, 255]; (3)b:亮度调整
    stretched = (image - I_min) / (I_max - I_min) * (O_max - O_min) + O_min
    stretched = np.clip(stretched, 0, 255).astype(np.uint8)
    return stretched


if __name__ == '__main__':
    import tifffile
    image = tifffile.imread(r"F:\py\YH220_235.tif")
    # image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
    stretched_image = contrast_stretching(image)

    import matplotlib.pyplot as plt
    plt.subplot(1, 2, 1), plt.imshow(image, cmap='gray'), plt.title('image'), plt.axis('off')
    plt.subplot(1, 2, 2), plt.imshow(stretched_image, cmap='gray'), plt.title('stretched_image'), plt.axis('off')
    plt.show()

1.1.3、对比度和亮度增强(Contrast and Brightness)

对比度增强:通过乘以一个对比度因子 α 来线性放大或压缩图像的灰度值。

在这里插入图片描述

# O(x,y)=α*I(x,y)+β。其中:O(x,y) 是增强后的像素值,I(x,y) 是输入图像的像素值。
# 		α 是对比度增益因子。α > 1:增强对比度,0 < α < 1:降低对比度
# 		β 是亮度调整参数。正值增加亮度,负值降低亮度
import cv2


if __name__ == '__main__':
	import tifffile
    image = tifffile.imread(r"F:\py\YH220_235.tif")
    # image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
    C_and_B = cv2.convertScaleAbs(image, alpha=2.0, beta=30)

    import matplotlib.pyplot as plt
    plt.subplot(1, 2, 1), plt.imshow(image, cmap='gray'), plt.title('image'), plt.axis('off')
    plt.subplot(1, 2, 2), plt.imshow(C_and_B, cmap='gray'), plt.title('contrast_and_brightness'), plt.axis('off')
    plt.show()
    

1.2、非线性方法

1.2.1、指数变换(Exponential Transformation)

原理:使用指数函数进行非线性变换,增强图像中较暗或较亮的部分。

在这里插入图片描述

# 公式如下:O(x,y)=c*(e^I(x,y)−1)
# 其中: 	O(x,y) 是增强后的像素值
#			I(x,y) 是输入图像的像素值
# 			e 是自然对数的底数,约等于 2.71828。
# 			c 是常数,控制图像的亮度增强的强度。
# 					(1)较大的 c 值会使输出图像的亮度显著增加,尤其是对暗部细节的增强。
#					(2)较小的 c 值则会减小增强效果,适用于细微调整。
# 常用的经验值:如果输入图像的像素值范围是 [0,255],将 c 设置为 255 有助于将输出值调整到合适的范围,避免图像过暗。

import cv2
import numpy as np


def exponential_transformation(image, c=255):
    # 指数变换
    normalized_image = image / 255.0
    exp_image = c * (np.exp(normalized_image) - 1)
    exp_image = np.clip(exp_image, 0, 255).astype(np.uint8)
    return exp_image


if __name__ == '__main__':
    import tifffile
    image = tifffile.imread(r"F:\py\YH220_235.tif")
    # image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
    exp_image = exponential_transformation(image, c=255)

    import matplotlib.pyplot as plt
    plt.subplot(1, 2, 1), plt.imshow(image, cmap='gray'), plt.title('image'), plt.axis('off')
    plt.subplot(1, 2, 2), plt.imshow(exp_image, cmap='gray'), plt.title('exp_image'), plt.axis('off')
    plt.show()

1.2.2、伽马变换(Gamma Transformation)

原理:非线性调整图像灰度值,通过控制伽马值 γ 调节图像亮度。

在这里插入图片描述

# 公式如下:O(x,y)=c*I(x,y)^γ
# 其中:		O(x,y) 是输出图像的像素值
#			I(x,y) 是输入图像的像素值(通常归一化到 [0, 1] 区间)
# 			c 是常数,用于保持输出范围适合显示(例如 [0, 255])。
# 			γ 是伽马值,控制图像的亮度和对比度调整。
#					(1)0 < γ < 1 使图像的暗部变亮,适合处理偏暗的图像。
#					(2)γ > 1 使图像的亮部变,适合处理过曝光的图像。
# 常见伽马值推荐:
# 			γ≈0.4−0.7:适合亮度偏低的图像,使暗部变亮。
# 			γ≈1.5−2.5:适合亮度过高的图像,压缩高亮度区域。

import cv2
import numpy as np


def gamma_transformation(image, gamma=1.0):
    # 伽马变换
    inv_gamma = 1.0 / gamma
    gamma_table = np.array([((i / 255.0) ** inv_gamma) * 255 for i in np.arange(0, 256)]).astype("uint8")
    return cv2.LUT(image, gamma_table)


if __name__ == '__main__':
    import tifffile
    image = tifffile.imread(r"F:\py\YH220_235.tif")
    # image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
    gamma_image = gamma_transformation(image, gamma=2.0)

    import matplotlib.pyplot as plt
    plt.subplot(1, 2, 1), plt.imshow(image, cmap='gray'), plt.title('image'), plt.axis('off')
    plt.subplot(1, 2, 2), plt.imshow(gamma_image, cmap='gray'), plt.title('gamma_image'), plt.axis('off')
    plt.show()
    

1.2.3、对数变换(Logarithmic Transformation)

原理:对灰度值取对数,压缩高亮度区域,提升暗部细节。

在这里插入图片描述

# 公式如下:O(x,y)=c*log(1+I(x,y))
# 其中: 	O(x,y) 是输出图像的像素值
#			I(x,y) 是输入图像的像素值
#			log 是自然对数函数
#			c 是比例常数。(1)c 的值越大,图像的整体亮度越高;(2)较小的 c 值会使图像变得更暗。
# 常用的经验值:若输入图像的灰度值范围是 [0, 255],则通常 c=255/log(256)≈45.98,以确保变换后像素值仍保持在[0, 255]。

import cv2
import numpy as np


def logarithmic_transformation(image, c=1):
    # 对数变换
    log_image = c * (np.log1p(image.astype(np.float32)))  # log1p 是 log(1 + x)
    log_image = np.clip(log_image, 0, 255).astype(np.uint8)
    return log_image


if __name__ == '__main__':
    import tifffile
    image = tifffile.imread(r"F:\py\YH220_235.tif")
    # image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
    log_image = logarithmic_transformation(image, c=40)
    
    import matplotlib.pyplot as plt
    plt.subplot(1, 2, 1), plt.imshow(image, cmap='gray'), plt.title('image'), plt.axis('off')
    plt.subplot(1, 2, 2), plt.imshow(log_image, cmap='gray'), plt.title('log_image'), plt.axis('off')
    plt.show()
    

二、直方图均衡化

2.1、直方图均衡化(Histogram Equalization,HE)

效果:自动调整图像的对比度,适合亮度分布不均匀的图像。

在这里插入图片描述

import cv2
import numpy as np

if __name__ == '__main__':
    import tifffile
    image = tifffile.imread(r"F:\py\YH220_235.tif")
    # image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
    equalized_image = cv2.equalizeHist(image)

    import matplotlib.pyplot as plt
    plt.subplot(1, 2, 1), plt.imshow(image, cmap='gray'), plt.title('image'), plt.axis('off')
    plt.subplot(1, 2, 2), plt.imshow(equalized_image, cmap='gray'), plt.title('equalized_image'), plt.axis('off')
    plt.show()
    

2.2、限制对比度自适应直方图均衡化(Contrast Limited Adaptive Histogram Equalization,CLAHE)

  • 局部均衡化:CLAHE 将图像分成小块(称为“tiles”),对每个小块进行直方图均衡化。
  • 插值平滑:CLAHE 在局部均衡化后,通过插值技术将不同块的结果合并,避免明显的边界和不连续性。
    • clipLimit:用于限制对比度的阈值,值越小,对比度增强越少,值越大则对比度增强越多。
    • tileGridSize:指定划分的小块大小(例如,(8, 8)表示将图像划分为8x8的块),影响局部均衡化的效果。

在这里插入图片描述

import cv2
import numpy as np

if __name__ == '__main__':
    import tifffile
    image = tifffile.imread(r"F:\py\YH220_235.tif")
    # image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
    clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8))
    clahe_image = clahe.apply(image)

    import matplotlib.pyplot as plt
    plt.subplot(1, 2, 1), plt.imshow(image, cmap='gray'), plt.title('image'), plt.axis('off')
    plt.subplot(1, 2, 2), plt.imshow(clahe_image, cmap='gray'), plt.title('clahe_image'), plt.axis('off')
    plt.show()
    

三、空间域(增强)

在图像处理中,空间域增强方法直接操作图像的像素值,常用于提高图像的可视性和特征表现。

3.1、线性滤波(Linear Filtering)

  • 方框滤波(Box Filtering)
  • 均值滤波器(Mean Filter)
  • 高斯滤波器(Gaussian Filter)
  • 锐化滤波器(Sharpening Filter)

3.2、非线性滤波(Non-linear Filtering)

  • 中值滤波器(Median Filter)
  • 双边滤波器(Bilateral Filter)
  • 最小/最大滤波器(Min/Max Filter)
  • 自适应中值滤波(Adaptive Median Filtering)
  • 形态学滤波(Morphological Filtering)

3.3、边缘检测(Edge Enhancement)

  • Prewitt算子:通过 cv2.filter2D 函数来应用 Prewitt 算子
  • Roberts算子:通过 cv2.filter2D 函数来应用 Prewitt 算子
  • Sobel算子:cv2.sobel()
  • Scharr算子:cv2.Scharr()
  • 拉普拉斯算子:cv2.Laplacian()
  • Canny边缘检测:cv2.Canny()

四、频率域(增强)

在图像处理中的频率域增强方法,通常是将图像先转换到频率域,通过修改频率分量来增强图像中的特定特征,再将其转换回空间域得到增强效果。常见的频率域增强方法包括滤波和频谱调整,如低通滤波、高通滤波、带通滤波等。

以下是频率域增强方法的主要步骤:

  • 傅里叶变换:使用傅里叶变换将空间域图像转换到频率域。
  • 滤波器设计:根据需要增强的特征(如边缘或噪声),设计频域滤波器。
    • 低通滤波器:保留低频成分,抑制高频成分,用于去噪或平滑处理。
    • 高通滤波器:保留高频成分,抑制低频成分,用于边缘增强。
    • 带通滤波器:保留特定频率区间的成分,适用于增强特定频率范围的细节。
  • 频谱滤波:将设计好的滤波器应用于频率域图像。
  • 逆傅里叶变换:将处理后的频率域图像转换回空间域,得到增强后的图像。

4.1、傅里叶变换(Fourier Transform)

  • 傅里叶变换(Fourier Transform)
  • 快速傅里叶变换(Fast Fourier Transform, FFT)
  • 离散傅里叶变换(Discrete Fourier Transform, DFT)
  • 傅里叶逆变换(Inverse Fourier Transform)
  • 短时傅里叶变换(Short-time Fourier Transform, STFT)
  • 带通滤波(Band-pass Filtering)
  • 高通滤波(High-pass Filtering)
  • 低通滤波(Low-pass Filtering)

4.2、小波变换(Wavelet Transform)

  • 小波变换(Wavelet Transform)
  • 离散小波变换(Discrete Wavelet Transform, DWT)
  • 连续小波变换(Continuous Wavelet Transform, CWT)
  • 小波包变换(Wavelet Packet Transform, WPT)
  • 小波逆变换(Inverse Wavelet Transform)
  • 多分辨率分析(Multiresolution Analysis, MRA)
  • Haar 小波变换(Haar Wavelet Transform)
  • Daubechies 小波变换(Daubechies Wavelet Transform)

五、深度学习

图像增强旨在改善图像的视觉质量,强调细节、对比度和清晰度等,以提升图像的视觉效果或为后续的计算机视觉任务提供支持。(1)传统图像增强方法多基于像素层面的操作;(2)深度学习方法则依靠数据驱动,通过复杂的神经网络结构对图像特征进行非线性处理,提升增强效果。

5.1、卷积神经网络 (Convolutional Neural Networks, CNNs)

  • 特点:CNN 具有强大的局部特征提取能力,适合处理图像增强任务。它们通过卷积层提取图像的局部信息,再通过多个卷积和池化层逐步获得高级特征。
    • 去噪:DnCNN(Denoising Convolutional Neural Network)模型采用卷积网络结构,有效去除高斯噪声、混合噪声。
    • 超分辨率重建:SRCNN(Super-Resolution CNN)通过简单的卷积网络结构,将低分辨率图像恢复到高分辨率。
    • 去模糊:DeblurGAN 使用生成对抗网络 (GAN) 框架结合 CNN 模型来消除图像模糊,恢复图像清晰度。

5.2、生成对抗网络 (Generative Adversarial Networks, GANs)

  • 特点:GAN 由生成器和判别器组成,通过相互博弈生成逼真的图像增强结果。生成器生成图像,判别器判断生成图像的真实性,经过不断对抗优化,使生成器输出的图像逐渐逼真。
    • 图像修复:SRGAN(Super-Resolution GAN)用于图像超分辨率,生成更加逼真的高分辨率图像。
    • 图像去雨、去雾:DeRainGAN 和 DehazeGAN 分别针对下雨、雾霾等特殊天气条件,通过对抗生成使图像清晰可见。
    • 风格转换:CycleGAN 实现图像风格转换(如白天到夜晚、晴天到雨天等),保持内容不变的情况下,增强图像的特定风格。

5.3、变分自编码器 (Variational Autoencoders, VAEs)

  • 特点:VAE 通过在编码器和解码器之间加入噪声的方式对输入图像进行分布建模,可生成多种可能的增强效果。
    • 图像补全:使用部分破损的图像生成完整图像,VAE 模型通过生成不同潜在空间的样本来推测丢失区域。
    • 图像去噪:CVAE(Conditional VAE)模型能去除不同类型的噪声,生成更干净的图像。
    • 图像增强:将输入低质量图像的潜在特征分布与高质量图像对齐,以增强图像质量。

5.4、注意力机制 (Attention Mechanism)

  • 特点:注意力机制可引导模型关注图像中的重要区域,以便对这些区域进行重点增强,从而提高增强效果的针对性。
    • 去模糊:使用注意力机制加权模糊区域,选择性去除模糊,如 DMPHN(Deep Multi-Patch Hierarchical Network)。
    • 超分辨率重建:SAN(Second-order Attention Network for Image Super-resolution)在图像超分辨率中利用注意力机制提升局部清晰度。
    • 低光增强:通过注意力模块识别低光区域,增强其亮度和对比度,使暗光图像更加清晰。

5.5、变换网络 (Transformers)

  • 特点:变换网络基于自注意力机制,可以捕获图像全局信息,对复杂图像内容的增强处理尤其有效。
    • 去模糊:Uformer 和 Restormer 是基于变换器的模型,能够高效处理去模糊和去噪任务。
    • 图像恢复:SwinIR(Swin Transformer for Image Restoration)在超分辨率、去噪等任务中表现优异,可通过长距离的自注意力机制获得精细化的恢复效果。
    • 图像超分辨率:ViT(Vision Transformer)模型通过全局信息捕获提升超分辨率结果,避免细节丢失。

5.6、自监督学习 (Self-Supervised Learning)

  • 特点:自监督方法通过设定伪标签,在不需要大量人工标注的情况下增强图像,并在任务中学习图像的特征和结构。
    • 图像去噪和修复:Noise2Void 和 Noise2Self 模型利用自监督机制在不需要干净标签的情况下完成去噪。
    • 图像增强:SimCLR 和 MoCo 等自监督方法提取增强图像特征,用于对比学习以提升增强效果。
    • 低光增强:通过自监督生成高质量的低光图像,提升图像的亮度、对比度和细节。

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

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

相关文章

Android Kotlin Flow 冷流 热流

在 Android 开发中&#xff0c;Flow 是 Kotlin 协程库的一部分&#xff0c;用于处理异步数据流的一个组件。本质上&#xff0c;Flow 是一个能够异步生产多个值的数据流&#xff0c;与 suspend 函数返回单个值的模式相对应。Flow 更类似于 RxJava 中的 Observable&#xff0c;但…

Web服务器nginx实验2修改端口、默认目录、默认文件访问web页面

修改默认目录、默认文件&#xff1a; 创建配置文件&#xff1a; 里面写&#xff1a;&#xff08;访问的位置是/haha目录里面的haha.html&#xff09; 把haha里面的index.html改名为haha.html&#xff1a; 重启服务&#xff1a; 关闭防火墙、改宽松模式&#xff1a; 用Windows访…

Maven最佳实践

文章目录 1.摘要 本文主要介绍Maven使用&#xff0c;作为Maven使用手册来记录。 2.介绍 Maven是项目管理工具&#xff0c;将项目开发和管理过程抽象成一个项目对象模型&#xff0c;使用pom.xml 文件进行依赖管理和项目构建。 Maven 中pom.xml 是根据坐标信息来定位资源的位置&a…

el-table 纵向垂直表头处理

项目中表格展示会遇到需要纵向垂直表头情况&#xff0c;下面&#xff0c;我们基于el-table组件来实现这种表格。 以下是这次需要用到的数据表格&#xff0c;已知左侧违章名称是固定的&#xff0c;而月份是不固定的&#xff0c;在后端返回数据格式已确定的情况下&#xff0c;需…

Android OpenGL ES详解——纹理:纹理过滤GL_NEAREST和GL_LINEAR的区别

目录 一、概念 1、纹理过滤 2、邻近过滤 3、线性过滤 二、邻近过滤和线性过滤的区别 三、源码下载 一、概念 1、纹理过滤 当纹理被应用到三维物体上时&#xff0c;随着物体表面的形状和相机视角的变化&#xff0c;会导致纹理在渲染过程中出现一些问题&#xff0c;如锯齿…

超市11-12月生鲜重点商品配置

11月份&#xff1a;应季商品很多,特别是与季节相对应的蔬菜大量上市。宜推荐对预防感冒等相应的特殊食谱,推荐对于常外出的人方便又省事、省时的食谱&#xff0c;推荐多种花样的火锅&#xff0c;推荐便于保存的应季食品原料。 生活特性&#xff1a;大众食谱宜以炖菜、红焖、火锅…

c++设计模式demo

模式设计原则 依赖倒置原则 ⾼层模块不应该依赖低层模块&#xff0c;⼆者都应该依赖抽象 &#xff1b; 抽象不应该依赖具体实现&#xff0c;具体实现应该依赖于抽象&#xff1b; ⾃动驾驶系统公司是⾼层&#xff0c;汽⻋⽣产⼚商为低层&#xff0c;它们不应该互相依赖&#x…

【网络面试篇】其他面试题——Cookie、Session、DNS、CDN、SSL/TLS、加密概念

目录 一、HTTP 相关问题 1. Cookie 和 Session 是什么&#xff1f; &#xff08;1&#xff09;Cookie &#xff08;2&#xff09;Session 2. Cookie 的工作原理&#xff1f; 3. Session 的工作原理&#xff1f; 4. Cookie 和 Session 有什么区别&#xff1f; 二、其他问…

软件测试第二篇软件测试技术

第五章单元测试和集成测试的技术 单元静态测试主要由开发人员完成。 标准&#xff1a;规定什么能做&#xff0c;什么不能做。 规范&#xff1a;建议你要怎么做。 5.1.2 代码评审 代码评审是一种发现代码缺陷的另一种测试方法。 代码审查的最佳实践&#xff1a; 创建代码审…

QT中 update()函数无法实时调用 paintEvent

QT中 update()函数无法实时调用 paintEvent&#xff01; 在QT中&#xff0c;update()函数用于标记一个窗口区域为“需要重绘”。当调用update()后&#xff0c;QT会在合适的时候调用paintEvent()来重绘这个区域。然而&#xff0c;update()不会立即调用paintEvent()&#xff0c;…

SDL事件相关

文章目录 事件相关的函数和数据结构用户自定义事件代码相关&#xff1a; 事件相关的函数和数据结构 SDL_WaitEvent :等待一个事件SDL_PushEvent 发送一个事件SDL_PumpEvents(): 将硬件设备产生的时间放入事件队列 &#xff0c;用于读取事件&#xff0c;在调用该函数之前&#…

优化时钟网络之时钟抖动

Note&#xff1a;文章内容以Xilinx 7系列FPGA进行讲解 1、什么是时钟抖动 时钟抖动就是时钟周期之间出现的偏差。比如一个时钟周期为10ns的时钟&#xff0c;理想情况下&#xff0c;其上升沿会出现在0ns&#xff0c;10ns&#xff0c;20ns时刻&#xff0c;假设某个上升沿出现的时…

达梦8-达梦数据实时同步软件(DMHS)配置-Oracle-DM8

1、安装环境 源端目的端IP地址192.168.6.111192.168.6.110系统版本Red Hat 6.4Kylin v10数据库版本Oracle11g达梦 v8系统用户Oracledmdba字符集MERICAN_AMERICA.AL32UTF8UTF-8端口15215236实例名PRODDMSERVER数据库软件目录/u01/app/oracle/opt/dmdbmsDMHS安装目录/u01/dmhs/o…

AI基础知识

目录 1.激活函数:one: 激活函数的作用:two: sigmoid函数:three: tanh函数:four: ReLu:five: Leaky ReLU 2.Softmax函数3.优化器:one: 优化器的作用:two: BGD&#xff08;批梯度下降&#xff09;:three: SGD&#xff08;随机梯度下降&#xff09;:four: MBGD&#xff08;Mini Ba…

【论文阅读】Learning dynamic alignment via meta-filter for few-shot learning

通过元滤波器学习动态对齐以实现小样本学习 引用&#xff1a;Xu C, Fu Y, Liu C, et al. Learning dynamic alignment via meta-filter for few-shot learning[C]//Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2021: 5182-5191. 论文…

ArcGIS Pro SDK Addin-DAML

ArcGIS Pro SDK Addin-DAML 文章目录 ArcGIS Pro SDK Addin-DAML1 Panes: 重置窗格2 Button: 从功能区中移除核心按钮3 Button: 将新按钮插入功能区上的现有组4 Menu: 在图层上下文菜单中插入一个新按钮5 Menu: 在 Map Container 上下文菜单中插入新菜单6 Menu: 在2D Map上下文…

FPGA学习笔记#7 Vitis HLS 数组优化和函数优化

本笔记使用的Vitis HLS版本为2022.2&#xff0c;在windows11下运行&#xff0c;仿真part为xcku15p_CIV-ffva1156-2LV-e&#xff0c;主要根据教程&#xff1a;跟Xilinx SAE 学HLS系列视频讲座-高亚军进行学习 学习笔记&#xff1a;《FPGA学习笔记》索引 FPGA学习笔记#1 HLS简介及…

熊猫追剧 1.0.2 | 免费影视播放,独家蓝光线路

熊猫追剧是一款免费的视频播放软件&#xff0c;集合了网络上的电影、电视剧、综艺、动漫以及短剧等多种类型的视频资源。经过测试&#xff0c;该软件内没有广告干扰&#xff0c;采用独家蓝光线路&#xff0c;提供高清流畅的观影体验。用户还可以享受视频投屏、下载和倍速播放等…

[CKS] K8S AppArmor Set Up

最近准备花一周的时间准备CKS考试&#xff0c;在准备考试中发现有一个题目关于AppArmor Pod操作权限的问题。 ​ 专栏其他文章: [CKS] Create/Read/Mount a Secret in K8S-CSDN博客[CKS] Audit Log Policy-CSDN博客 -[CKS] 利用falco进行容器日志捕捉和安全监控-CSDN博客[CKS] …

Tomcat漏洞利用工具-TomcatScanPro(二)

项目地址 https://github.com/lizhianyuguangming/TomcatScanPro 简介 本项目是一个针对 Tomcat 服务的弱口令检测、漏洞检测以及本地文件包含&#xff08;LFI&#xff09;攻击工具。除了支持 CVE-2017-12615 漏洞的多种利用方式外&#xff0c;新版本还集成了 CNVD-2020-104…