基于小波变换去噪的遥感图像处理python
时间: 2024-12-26 08:12:54 浏览: 19
### 基于小波变换的遥感图像去噪处理
在Python中,利用`pywt`库能够有效地执行基于小波变换的遥感图像去噪。此过程涉及正向小波变换分解原始图像到不同的频率子带,随后对这些系数施加阈值化操作以去除噪声成分,最后再通过逆小波变换重建干净版本的图像[^1]。
#### 实现步骤说明
为了完成上述目标,下面给出了一段完整的代码片段用于展示如何具体实施这一系列的操作:
```python
import numpy as np
import pywt
from skimage import io, img_as_float
import matplotlib.pyplot as plt
def wavelet_denoising(image_path):
# 加载并转换输入图片至浮点数格式
image = img_as_float(io.imread(image_path))
# 应用二维离散小波变换(DWT),获取近似(A)和平滑(H,V,D)细节分量
coeffs2 = pywt.dwt2(image, 'bior1.3')
cA, (cH, cV, cD) = coeffs2
# 对各层的小波系数设置软阈值进行降噪处理
threshold = 0.1 * max(np.abs(cD).reshape(-1))
soft_thresholding = lambda data: pywt.threshold(data, threshold, mode='soft')
denoised_cA = soft_thresholding(cA)
denoised_cH = soft_thresholding(cH)
denoised_cV = soft_thresholding(cV)
denoised_cD = soft_thresholding(cD)
# 利用修改后的系数集合重构图像
clean_image = pywt.idwt2((denoised_cA, (denoised_cH, denoised_cV, denoised_cD)), 'bior1.3')
return clean_image
if __name__ == "__main__":
noisy_img_path = "path_to_noisy_remote_sensing_image.png"
cleaned_image = wavelet_denoising(noisy_img_path)
fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(8, 4), sharex=True, sharey=True)
ax[0].imshow(img_as_float(io.imread(noisy_img_path)), cmap="gray")
ax[0].set_title("Original Noisy Image")
ax[1].imshow(cleaned_image, cmap="gray")
ax[1].set_title("Denoised Image via Wavelets")
for a in ax:
a.set_axis_off()
plt.tight_layout()
plt.show()
```
这段程序首先读取一张含有噪音的遥感影像文件,接着对其进行二阶Bior小波基下的多尺度分析;之后针对每一级产生的高频部分应用了自适应软阈值滤波器来抑制随机干扰信号的影响;最终借助IDWT完成了从频域回到空间域的过程从而获得净化过的输出结果。
阅读全文