.net 接单网站有哪些,成都设计公司装修,怎么做免费视频网站,家居网网页设计代码一、简介#xff1a;
在数字图像处理领域#xff0c;噪声一直是影响图像质量的重要因素。无论是拍摄过程中的环境干扰#xff0c;还是传输过程中的信号失真#xff0c;噪声都可能导致图像模糊、细节丢失#xff0c;甚至影响后续的图像分析和应用。为了提高图像的视觉效果…一、简介
在数字图像处理领域噪声一直是影响图像质量的重要因素。无论是拍摄过程中的环境干扰还是传输过程中的信号失真噪声都可能导致图像模糊、细节丢失甚至影响后续的图像分析和应用。为了提高图像的视觉效果和使用价值图像去噪技术应运而生成为图像预处理环节中不可或缺的一环。在本文中介绍几个常用的传统图像去噪的方法以及其应用情景。 文章目录 一、简介二常用的去噪方法梳理三简述与实现方法3.1均值滤波3.2中值滤波3.3高斯滤波3.4双边滤波3.5非局部均值去噪3.6引导滤波去噪3.7小波变换去噪 二常用的去噪方法梳理
在传统图像处理领域去噪技术是提高图像质量的重要手段。以下是一些常见的去噪技术
均值滤波去噪该方法通过对图像中的每个像素点及其邻域内的像素点取平均值来替代原始像素值从而实现去噪。均值滤波简单易实现但容易导致图像边缘模糊。中值滤波去噪中值滤波将图像中每个像素点与其邻域内的像素点进行排序取中值作为滤波结果。这种方法在去除噪声的同时能较好地保护图像的边缘信息。高斯滤波去噪高斯滤波是一种加权平均滤波权重是根据高斯函数计算得出的。它能够有效地去除图像中的高斯噪声同时保留图像的细节。双边滤波去噪双边滤波结合了空间邻近度和像素值相似度是一种保边缘的滤波方法。它既能去除噪声又能保持图像的边缘信息。非局部均值去噪非局部均值去噪考虑了图像中重复的纹理信息通过搜索整个图像来寻找相似块并进行加权平均。这种方法在去除噪声的同时能更好地保持图像的细节和结构。引导滤波去噪引导滤波利用引导图像与待滤波图像之间的关系对图像进行局部线性滤波。这种方法在去噪的同时能有效保护图像的边缘和细节。小波变换去噪小波变换将图像分解为不同尺度和方向的小波系数通过对这些系数进行阈值处理达到去噪的目的。小波变换去噪在去除噪声的同时能较好地保留图像的纹理和细节。
三简述与实现方法
3.1均值滤波
均值滤波是一种简单的图像去噪方法属于线性滤波器的一种。它的基本思想是用目标像素周围邻域内的像素的平均值来代替目标像素的值从而消除图像中的随机噪声。 均值滤波常用于图像预处理阶段特别是在需要快速去噪且对图像细节要求不高的场合或者用于模糊图像细节只保留颜色等图像低频信息。 代码如下 import cv2
# 读取图像
image cv2.imread(noisy_image.jpg, cv2.IMREAD_GRAYSCALE)
# 应用3x3的均值滤波
blurred_image cv2.blur(image, (3, 3))
# 显示原图和均值滤波后的图像
cv2.imshow(Original Image, image)
cv2.imshow(Blurred Image, blurred_image)
# 等待按键后退出
cv2.waitKey(0)
cv2.destroyAllWindows()3.2中值滤波
中值滤波是一种非线性的数字滤波技术主要用于去除图像中的椒盐噪声由离散的黑白像素组成和其他类型的脉冲噪声。中值滤波器的核心思想是使用像素邻域中的像素值的中值来代替目标像素的值。 中值滤波一般都用在黑白蒙版上用来去除二值化后所带来的椒盐噪声以此来获取干净的蒙版。 代码如下 import cv2# 读取图像
image cv2.imread(noisy_image.jpg, cv2.IMREAD_GRAYSCALE)
# 应用3x3的中值滤波
median_filtered_image cv2.medianBlur(image, 3)
# 显示原图和均值滤波后的图像
cv2.imshow(Original Image, image)
cv2.imshow(Median Filtered Image, median_filtered_image)
# 等待按键后退出
cv2.waitKey(0)
cv2.destroyAllWindows()3.3高斯滤波
高斯滤波是一种基于高斯函数的线性平滑滤波器用于去除图像中的噪声同时保留图像的边缘和细节。它通过对图像中每个像素的值进行加权平均来实现去噪其中权重由高斯函数确定。使用高斯滤波参数的时候通常可以从较小的标准差和核大小开始逐渐增加直到找到一个平衡点既能有效去除噪声又能保留图像的细节。 代码如下 import cv2
# 读取图像
image cv2.imread(noisy_image.jpg, cv2.IMREAD_GRAYSCALE)
# 应用高斯滤波这里使用3x3的窗口和标准差为2的高斯核
gaussian_filtered_image cv2.GaussianBlur(image, (3, 3), 2)
# 显示原图和高斯滤波后的图像
cv2.imshow(Original Image, image)
cv2.imshow(Gaussian Filtered Image, gaussian_filtered_image)
# 等待按键后退出
cv2.waitKey(0)
cv2.destroyAllWindows()3.4双边滤波
双边滤波是一种非线性的滤波技术用于去除图像中的噪声同时尽可能保留边缘细节。与高斯滤波器不同双边滤波器考虑了像素之间的空间邻近性和像素值相似性从而在去除噪声的同时更好地保留边缘。双边滤波器能够很好地保留图像的边缘和细节因为它不仅考虑像素的空间邻近性还考虑像素值的相似性。但相应的双边滤波器的计算复杂度较高推理时间相对较慢。 代码如下 import cv2# 读取图像
image cv2.imread(noisy_image.jpg, cv2.IMREAD_GRAYSCALE)
# 应用双边滤波这里使用3x3的窗口
bilateral_filtered_image cv2.bilateralFilter(image, 9, 25, 25)
# 显示原图和双边滤波后的图像
cv2.imshow(Original Image, image)
cv2.imshow(Bilateral Filtered Image, bilateral_filtered_image)
# 等待按键后退出
cv2.waitKey(0)
cv2.destroyAllWindows()双边滤波有三个参数
diameter: 邻域大小以像素为单位。这个参数决定了滤波器的邻域大小。较大的直径可以覆盖更多的像素从而更好地平滑噪声但可能会模糊边缘。较小的直径则可以更好地保留边缘细节但去噪效果可能不够理想。sigmaColor: 颜色空间相似性的权重。较大的值会更多地平滑颜色差异较大的像素而较小的值会更多地保留颜色差异较大的像素。这个参数控制了颜色空间内的相似性权重。sigmaSpace: 空间邻近性的权重。较大的值会更多地平滑空间上相邻的像素而较小的值会更多地保留空间上相邻的像素。这个参数控制了空间邻近性权重。的权重值可以更好地保留边缘但去噪效果可能不够理想。
3.5非局部均值去噪
非局部均值去噪Non-Local Means Denoising是一种基于图像内容相似性的去噪方法它通过搜索图像中的相似块并计算这些相似块的平均值来估计目标像素的值从而实现去噪。这种方法特别适用于去除高斯噪声和其他类型的随机噪声 代码如下 import cv2
# 读取图像
image cv2.imread(noisy_image.jpg, cv2.IMREAD_GRAYSCALE)
# 应用非局部均值去噪
non_local_filtered_image cv2.fastNlMeansDenoising(image, None, 1010, 10, 7)
# 显示原图和非局部均值去噪后的图像
cv2.imshow(Original Image, image)
cv2.imshow(Non-Local Means Filtered Image, non_local_filtered_image)
# 等待按键后退出
cv2.waitKey(0)
cv2.destroyAllWindows()其参数为
image: 输入图像可以是灰度图像或彩色图像。dst: 输出图像用于存储去噪后的结果。如果不指定则由函数自动分配。h: 噪声估计的标准差。该参数控制了去噪的强度较大的值会更多地去除噪声但可能会模糊图像的细节。较小的值则可以更好地保留细节但去噪效果可能不够理想。hforcolorcomponents与h相同但仅用于彩色图像。通常与H相同templateWindowSize: 模板窗口大小以像素为单位。较大的值可以覆盖更多的像素从而更好地平滑噪声但可能会模糊边缘。较小的值则可以更好地保留边缘细节但去噪效果可能不够理想。searchWindowSize: 搜索窗口大小以像素为单位。较大的值可以覆盖更多的像素从而更好地平滑噪声但可能会模糊边缘。较小的值则可以更好地保留边缘细节但去噪效果可能不够理想。
3.6引导滤波去噪
**引导滤波Guided Filter**是一种无监督的线性滤波器它能够根据输入图像和引导图像Guide Image来估计输出图像。引导滤波去噪是引导滤波的一种应用它利用引导图像来指导滤波器去除噪声从而保留图像的细节。 代码如下 def guidedfilter(I, p, r, eps):# 获取图像的高度和宽度height, width I.shape# 计算引导图像I的局部均值m_I cv2.boxFilter(I, -1, (r, r))# 计算输入图像p的局部均值m_p cv2.boxFilter(p, -1, (r, r))# 计算引导图像I和输入图像p的局部乘积的均值m_Ip cv2.boxFilter(I * p, -1, (r, r))# 计算引导图像I和输入图像p的局部协方差cov_Ip m_Ip - m_I * m_p# 计算引导图像I自身的局部协方差即局部方差m_II cv2.boxFilter(I * I, -1, (r, r))var_I m_II - m_I * m_I# 估计线性系数aa cov_Ip / (var_I eps)# 估计线性系数bb m_p - a * m_I# 对系数a和b进行全局均值滤波得到平滑的系数m_a cv2.boxFilter(a, -1, (r, r))m_b cv2.boxFilter(b, -1, (r, r))# 计算输出图像即m_a * I m_breturn m_a * I m_b参数说明 I: 输入图像可以是灰度图像或彩色图像。 p: 引导图像用于指导滤波器。引导图像应与输入图像具有相同的尺寸和类型。 r: 引导滤波器的半径以像素为单位。较大的半径可以覆盖更多的像素从而更好地平滑噪声但可能会模糊边缘。较小的半径则可以更好地保留边缘细节但去噪效果可能不够理想。 eps: 引导滤波器的正则化参数。较大的值可以更好地平滑噪声但可能会模糊图像的细节。较小的值则可以更好地保留细节但去噪效果可能不够理想。
3.7小波变换去噪
**小波变换Wavelet Transform**是一种在数学和信号处理中常用的分析工具它能够将一个信号或函数表示为一系列基函数小波函数的叠加。这些基函数被称为小波基它们是具有特定频率和时间特性的函数。小波变换可以将信号分解为不同的频率成分这些成分称为小波系数。常用的小基波有如下几种Haar小波、Daubechies小波、Symlet小波等。常用的小波变换集成在pywt库中。 安装pip install PyWavelets 代码如下 import numpy as np
import matplotlib.pyplot as plt
from pywt import Wavelet, dwt2, idwt2
# 读取图像
image plt.imread(image.jpg) # 假设图像以BGR格式读取
# 转换为灰度图像
image_gray cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 选择小波基这里使用的是 db4
wavelet Wavelet(db4)
# 执行二维离散小波变换
coeffs dwt2(image_gray, wavelet)
# 显示小波系数
titles [LL, LH, HL, HH]
coeffs_image [coeffs[0], coeffs[1][0], coeffs[1][1], coeffs[2]]
for i, a in enumerate(coeffs_image):plt.subplot(2, 2, i 1), plt.imshow(a, cmapgray)plt.title(titles[i]), plt.xticks([]), plt.yticks([])plt.show()# 执行逆二维离散小波变换重构图像
reconstructed_image idwt2(coeffs, wavelet)
# 显示重构后的图像
plt.imshow(reconstructed_image, cmapgray)
plt.title(Reconstructed Image), plt.xticks([]), plt.yticks([])
plt.show()其中常用的小基波可以选择下面几种 wavelets [‘db2’, ‘db4’, ‘db6’, ‘db8’, ‘sym2’, ‘sym4’, ‘sym6’, ‘sym8’, ‘coif1’, ‘coif2’, ‘coif3’, ‘coif4’] 其分别代表
Daubechies小波 (‘dbN’): ○ N 表示滤波器的阶数N 越大滤波器越长光滑性越好。 ○ 常用的阶数有 db2, db4, db6, db8 等。Symlet小波 (‘symN’): ○ Symlet小波是Daubechies小波的改进版具有更好的对称性。 ○ 常用的阶数有 sym2, sym4, sym6, sym8 等。Coiflet小波 (‘coifN’): ○ Coiflet小波提供了比Daubechies小波更高的消失矩。 ○ 常用的阶数有 coif1, coif2, coif3, coif4 等。 在选择小波基时需要考虑以下因素 ● 光滑性阶数较高的Daubechies小波或Symlet小波具有较好的光滑性。 ● 消失矩较高的消失矩可以帮助更好地表示信号的瞬时特性。 ● 对称性Symlet小波具有更好的对称性有助于减少相位失真。 ● 计算复杂度阶数较高的Daubechies小波计算复杂度较高。 在实际应用中通常需要根据具体的需求和图像特性来选择合适的小波基。例如对于需要较高光滑性的图像可以选择 db6 或 sym8 作为小波基。对于需要较高消失矩的图像可以选择 coif4 作为小波基。