给我一段利用svd算法进行图片去噪的代码
时间: 2024-05-13 15:20:44 浏览: 81
以下是使用SVD算法进行图像去噪的Python代码示例:
```python
import numpy as np
from scipy.linalg import svd
# 加载图像并添加噪声
img = np.load("image.npy")
noisy_img = img + 0.2 * np.random.rand(*img.shape)
# 对噪声图像进行SVD分解
U, S, Vt = svd(noisy_img)
# 选择一个合适的截断值
k = 50
# 重构图像
reconstructed_img = np.dot(U[:, :k], np.dot(np.diag(S[:k]), Vt[:k, :]))
# 显示重构图像和原始图像
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1, 2, figsize=(10, 5))
ax[0].imshow(reconstructed_img, cmap='gray')
ax[0].set_title('Reconstructed Image')
ax[1].imshow(img, cmap='gray')
ax[1].set_title('Original Image')
plt.show()
```
在这个例子中,我们首先加载图像并添加噪声。然后,我们对噪声图像进行SVD分解,并选择一个适当的截断值k。最后,我们使用SVD重构图像并将其显示在图形窗口中。
阅读全文