使用python编写程序实现在空域给图像添加方向为0度,强度为10的运动模糊;添加方向为45度,强度为20的运动模糊。然后分别使用逆滤波和伪逆滤波进行图像复原。
时间: 2024-12-04 14:24:03 浏览: 31
在Python中,我们可以使用OpenCV库来实现图像的运动模糊、滤波和复原操作。首先,我们需要安装OpenCV,如果还没安装可以使用pip install opencv- 导入需要的库:
```python
import cv2
from numpy import zeros
```
- 读取图像并创建空域模糊矩阵:
```python
img = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE) # 替换为你的图片路径
ksize = (0, 10) for 0度模糊,(ksize, 20) for 45度模糊
motion_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, ksize)
blurred_img = cv2.filter2D(img, -1, motion_kernel)
```
2. **逆滤波(Unsharp Masking)**:
- 创建一个较小尺寸的高斯核进行锐化:
```python
kernel_sharpen = cv2.getGaussianKernel(3, 1)
sharpened_img = cv2.filter2D(blurred_img, -1, kernel_sharpen * kernel_sharpen.T)
```
3. **伪逆滤波(Inverse Filtering)**:
- 计算伪逆:
```python
inversed_img = cv2.invert(sharpened_img)
```
- 将伪逆结果和原始图像相加,然后缩放回[0, 255]范围内的灰度图像:
```python
restored_img = cv2.addWeighted(inversed_img, 1, img, 1, 0)
```
注意替换上述代码中的`'image.jpg'`为你实际的图片路径。
阅读全文