图像增强的100种方法

文章目录

什么是图像增强 ?

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

主要指标包括:

  • 亮度(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)

在这里插入图片描述

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

在这里插入图片描述

三、空间域(增强)

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

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 等自监督方法提取增强图像特征,用于对比学习以提升增强效果。
  • 低光增强:通过自监督生成高质量的低光图像,提升图像的亮度、对比度和细节。
我可以回答这个问题。数据增强是指通过对原始数据进行一系列变换,生成新的数据集,以增加数据量和多样性,提高模型的泛化能力。以下是100种数据增强方法: 1. 镜像翻转 2. 随机裁剪 3. 随机旋转 4. 随机缩放 5. 随机亮度调整 6. 随机对比度调整 7. 随机色调调整 8. 随机饱和度调整 9. 随机噪声添加 10. 随机模糊 11. 随机锐化 12. 随机扭曲 13. 随机拉伸 14. 随机变形 15. 随机仿射变换 16. 随机透视变换 17. 随机擦除 18. 随机遮挡 19. 随机加入水印 20. 随机加入文字 21. 随机加入图案 22. 随机加入噪点 23. 随机加入线条 24. 随机加入形状 25. 随机加入边框 26. 随机加入阴影 27. 随机加入光晕 28. 随机加入光斑 29. 随机加入光点 30. 随机加入光线 31. 随机加入雾气 32. 随机加入烟雾 33. 随机加入火焰 34. 随机加入水波 35. 随机加入涟漪 36. 随机加入水滴 37. 随机加入雪花 38. 随机加入冰霜 39. 随机加入霜冻 40. 随机加入雾霾 41. 随机加入沙尘 42. 随机加入风景 43. 随机加入人物 44. 随机加入动物 45. 随机加入植物 46. 随机加入建筑 47. 随机加入车辆 48. 随机加入食物 49. 随机加入家具 50. 随机加入电子产品 51. 随机加入服装 52. 随机加入配饰 53. 随机加入化妆品 54. 随机加入文具 55. 随机加入玩具 56. 随机加入运动器材 57. 随机加入乐器 58. 随机加入书籍 59. 随机加入音乐 60. 随机加入电影 61. 随机加入电视剧 62. 随机加入游戏 63. 随机加入动画 64. 随机加入漫画 65. 随机加入艺术品 66. 随机加入建筑设计 67. 随机加入室内设计 68. 随机加入服装设计 69. 随机加入平面设计 70. 随机加入工业设计 71. 随机加入产品设计 72. 随机加入网页设计 73. 随机加入UI设计 74. 随机加入UX设计 75. 随机加入游戏设计 76. 随机加入交互设计 77. 随机加入数据可视化 78. 随机加入机器学习 79. 随机加入深度学习 80. 随机加入人工智能 81. 随机加入自然语言处理 82. 随机加入计算机视觉 83. 随机加入语音识别 84. 随机加入图像处理 85. 随机加入图像分割 86. 随机加入图像分类 87. 随机加入目标检测 88. 随机加入图像生成 89. 随机加入图像重建 90. 随机加入图像修复 91. 随机加入图像增强 92. 随机加入图像压缩 93. 随机加入图像转换 94. 随机加入图像识别 95. 随机加入图像分析 96. 随机加入图像处理算法 97. 随机加入图像处理工具 98. 随机加入图像处理库 99. 随机加入图像处理框架 100. 随机加入图像处理平台 以上就是100种数据增强方法,希望对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖墩会武术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值