使用python编程,写出完整的代码:使用运动模糊,失焦模糊等方法模拟生成退化图像,之后运用winer滤波和逆滤波进行图像恢复,得到重建图像,输出结果包括:原图,运动模糊图像,失焦模糊图像,winer滤波恢复图像,逆滤波恢复图像
时间: 2024-12-22 11:24:24 浏览: 17
在Python中,我们可以使用OpenCV库来处理图像并实现上述操作。以下是一个简单的示例代码:
```python
import cv2
import numpy as np
# 加载原图
img = cv2.imread('original_image.jpg', cv2.IMREAD_GRAYSCALE)
# 原始图像展示
cv2.imshow("Original Image", img)
cv2.waitKey(0) # 等待用户按键
# 运动模糊(高斯模糊)
kernel_size = 5
motion_blur = cv2.GaussianBlur(img, (kernel_size, kernel_size), 0)
cv2.imshow("Motion Blur Image", motion_blur)
cv2.waitKey(0)
# 失焦模糊(拉普拉斯算子)
laplacian_blur = cv2.Laplacian(img, cv2.CV_64F)
laplacian_blur = np.uint8(np.abs(laplacian_blur))
cv2.imshow("Defocus Blur Image", laplacian_blur)
cv2.waitKey(0)
# Wiener滤波恢复
wiener_filter = cv2.wiener(motion_blur, None, 0.01)
cv2.imshow("Wiener Filter Recovery Image", wiener_filter)
cv2.waitKey(0)
# 逆滤波恢复
inversed_filter = cv2.fastNlMeansDenoisingColored(img, None, 10, 10, 7, 21)
cv2.imshow("Inverse Filtering Recovery Image", inversed_filter)
cv2.waitKey(0)
cv2.destroyAllWindows() # 关闭所有窗口
```
注意:这个代码需要在有OpenCV库的环境中运行,并且输入图片路径应替换为你实际的图片文件名。
阅读全文