数字图像降噪的方法:小波降噪和双边滤波

小波降噪和双边滤波都是数字图像降噪的方法,但它们的原理和实现方式有所不同。

小波降噪是一种基于小波变换的降噪方法,它可以将图像分解为不同尺度和方向上的小波系数,并对这些系数进行阈值处理来消除噪声。小波降噪能够较好地保留图像的细节和边缘信息,但需要选择合适的小波基函数和阈值,以平衡降噪效果和图像细节的保留。

双边滤波是一种基于空间域和灰度域的滤波方法,它通过考虑像素点在空间和灰度域上的相似性来消除噪声。具体地,双边滤波中的滤波器权值包括空间距离和灰度距离两部分,其中空间距离用于衡量像素点在空间上的相似性,灰度距离用于衡量像素点在灰度域上的相似性。双边滤波能够有效地去除噪声,并且保留图像的细节和边缘信息,但计算复杂度较高。

# 小波降噪


import cv2
import pywt
import numpy as np
#
# # 读取图像并转换为灰度图像
img = cv2.imread(r'D:\YWJ\6_jiaoben_set\huang_file1025\图片\10_21_148.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#
# 小波变换
coeffs = pywt.dwt2(gray, 'bior1.1')
cA, (cH, cV, cD) = coeffs

# 阈值处理
sigma = 1 # 噪声标准差
threshold = sigma * np.sqrt(2*np.log(gray.size))
cA = pywt.threshold(cA, threshold, 'soft')
cH = pywt.threshold(cH, threshold, 'soft')
cV = pywt.threshold(cV, threshold, 'soft')
cD = pywt.threshold(cD, threshold, 'soft')

# 小波反变换
coeffs = cA, (cH, cV, cD)
denoised_gray = pywt.idwt2(coeffs, 'bior1.1')

# # 显示原图和去噪后的图像
cv2.imshow('Original', gray)
cv2.imshow('Denoised', denoised_gray.astype(np.uint8))
cv2.imwrite('317.jpg',denoised_gray)
cv2.waitKey(0)
cv2.destroyAllWindows()


# 双边滤波
# img_bf = cv2.bilateralFilter(gray, 10, 15, 30) # 设置双边滤波参数
#
# # 保存双边滤波处理后的图片
# # cv2.imwrite('image_bf.jpg', img_bf)
# cv2.imwrite('317.jpg',img_bf)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值