🎯要点
- Python空间滤波器:🎯卷积计算实现均值滤波器。🎯非线性中值滤波器。🎯最大值/最小值滤波器。🎯一阶导数滤波器:索贝尔(sobel)滤波器、普鲁伊特(Prewitt)滤波器、坎尼(Canny)滤波器。🎯二阶导数滤波器:拉普拉斯滤波器、高斯拉普拉斯滤波器。🎯弗朗吉(frangi)滤波器。
- Python图像增强方法:🎯图像线性逆变换。🎯伽玛校正。🎯对数变换。🎯直方图均衡化。🎯对比度拉伸。🎯sigmoid 校正。🎯局部对比度标准化。
- 仿射几何变换代码实现:🎯Python平移、旋转、缩放和插值。
- 代码实现傅里叶变换函数:🎯快速傅里叶变换。🎯Python实现低通滤波器二维卷积函数。🎯Python实现巴特沃斯低通滤波器卷积函数。🎯Python实现高斯低通滤波器卷积函数。🎯Python实现二维高通滤波器卷积函数。🎯Python实现巴特沃斯高通滤波器卷积函数。🎯Python实现高斯高通卷积函数。🎯Python实现带通滤波器。
- Python图像分割算法:🎯Python大津方法、Renyi基于熵的分割、自适应阈值方法、分水岭分割、Chan-Vese区域分割。
- 形态学运算Python实现:🎯二元膨胀、二元腐蚀、灰度膨胀和腐蚀、灰度开运算和闭运算、命中或错过变换、粗化和细化变换。
- 图像测量、神经网络、卷积神经网络。
🍇Python 去除椒盐噪声图像增强
图像增强是图像处理领域的一个基本过程,旨在提高图像的感知质量或使图像中的特定特征更加明显。 与图像恢复不同,图像恢复试图通过纠正已知的退化来将图像恢复到其原始形式,图像增强不依赖于对退化过程的详细理解。 相反,它应用更通用的技术来实现视觉上令人愉悦的结果。
技术包括:
- 去噪/平滑
- 对比度改善
- 锐化
图像增强技术的类型:
- 空间域增强
- 频域增强
- 直方图技术
- 基于 Retinex 理论的增强
- 色彩校正和增强
- 边缘增强
- 基于深度学习的增强
通过去除噪声来提高图像质量是图像处理中的关键步骤,特别是因为噪声会显着降低图像的视觉清晰度。 在图像捕获、传输或存储过程中可能会引入噪声,表现为图像强度的随机变化。 本节应用滤波器来减轻各种类型的噪声(例如高斯噪声、椒盐噪声、散斑噪声、泊松噪声和指数噪声),更深入地研究图像去噪的先进技术。
import numpy as np
import matplotlib.pyplot as plt
from skimage.io import imread
from skimage.color import rgb2gray
from skimage.util import random_noise
from skimage.metrics import peak_signal_noise_ratio as compare_psnr
from scipy.ndimage import uniform_filter, median_filter
def plt_hist(noise, title='Noise Histogram', bins=None):
plt.grid()
plt.hist(noise.ravel(), bins=bins, alpha=0.5, color='green')
plt.tick_params(labelsize=15)
plt.title(title, size=25)
def plt_images(original_img, noisy_img, denoised_mean_img, denoised_median_img, noise, noise_type):
fig, axes = plt.subplots(1, 4, figsize=(20, 5))
ax = axes.ravel()
ax[0].imshow(original_img, cmap='gray')
ax[0].set_title('Original', size=20)
ax[0].axis('off')
ax[1].imshow(noisy_img, cmap='gray')
ax[1].set_title(f'Noisy ({noise_type})', size=20)
ax[1].axis('off')
ax[2].imshow(denoised_mean_img, cmap='gray')
ax[2].set_title('Denoised (Mean)', size=20)
ax[2].axis('off')
ax[3].imshow(denoised_median_img, cmap='gray')
ax[3].set_title('Denoised (Median)', size=20)
ax[3].axis('off')
plt.figure()
plt_hist(noise, title=f'{noise_type} Noise Histogram')
plt.show()
print(f"PSNR (Original vs Noisy): {compare_psnr(original_img, noisy_img):.3f}")
print(f"PSNR (Original vs Denoised Mean): {compare_psnr(original_img, denoised_mean_img):.3f}")
print(f"PSNR (Original vs Denoised Median): {compare_psnr(original_img, denoised_median_img):.3f}")
Loading the image and converting to Gray scale
image_path = 'lena.png'
original_img = rgb2gray(imread(image_path))
添加噪音用于演示目的
对于每种类型的噪声,我们将其引入原始图像,应用均值滤波器和中值滤波器,然后分析结果。 均值滤波器通过对邻域内的像素值进行平均来平滑图像,而中值滤波器则用其邻域内的强度值的中值替换每个像素的值,这对于对抗椒盐噪声特别有效。
noisy_img = random_noise(original_img, mode='gaussian', var=0.02)
去噪
denoised_mean_img = uniform_filter(noisy_img, size=5)
denoised_median_img = median_filter(noisy_img, size=5)
plt_images(original_img, noisy_img, denoised_mean_img, denoised_median_img, noisy_img-original_img, 'Gaussian')
添加盐和胡椒噪音
noisy_img = random_noise(original_img, mode='s&p', amount=0.05)
盐和胡椒去噪
denoised_mean_img = uniform_filter(noisy_img, size=5)
denoised_median_img = median_filter(noisy_img, size=5)
plt_images(original_img, noisy_img, denoised_mean_img, denoised_median_img, noisy_img-original_img, 'Salt & Pepper')