用python读入图像char.png,使用 3x3,5×5 的均值滤波器对它进行平滑,比较滤波前后的结果。 (2)读入图像 Fig0217(a).tif,使用拉普拉斯滤波器、包含对角方向的拉普拉斯滤波器其对进行镜化,比较滤波前后的结果。
时间: 2023-05-17 09:07:20 浏览: 95
对于第一个问题,可以使用以下代码实现:
```python
import cv2
import numpy as np
# 读入图像
img = cv2.imread('char.png')
# 定义3x3和5x5的均值滤波器
kernel_3x3 = np.ones((3, 3), np.float32) / 9
kernel_5x5 = np.ones((5, 5), np.float32) / 25
# 对图像进行平滑
smoothed_3x3 = cv2.filter2D(img, -1, kernel_3x3)
smoothed_5x5 = cv2.filter2D(img, -1, kernel_5x5)
# 显示滤波前后的结果
cv2.imshow('Original Image', img)
cv2.imshow('Smoothed Image (3x3)', smoothed_3x3)
cv2.imshow('Smoothed Image (5x5)', smoothed_5x5)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
对于第二个问题,可以使用以下代码实现:
```python
import cv2
import numpy as np
# 读入图像
img = cv2.imread('Fig0217(a).tif')
# 定义拉普拉斯滤波器和包含对角方向的拉普拉斯滤波器
kernel_laplace = np.array([[0, 1, 0], [1, -4, 1], [0, 1, 0]], np.float32)
kernel_laplace_diag = np.array([[1, 1, 1], [1, -8, 1], [1, 1, 1]], np.float32)
# 对图像进行滤波
filtered_laplace = cv2.filter2D(img, -1, kernel_laplace)
filtered_laplace_diag = cv2.filter2D(img, -1, kernel_laplace_diag)
# 对滤波后的图像进行镜像
mirrored_laplace = cv2.copyMakeBorder(filtered_laplace, 1, 1, 1, 1, cv2.BORDER_REFLECT)
mirrored_laplace_diag = cv2.copyMakeBorder(filtered_laplace_diag, 1, 1, 1, 1, cv2.BORDER_REFLECT)
# 显示滤波前后的结果
cv2.imshow('Original Image', img)
cv2.imshow('Filtered Image (Laplacian)', filtered_laplace)
cv2.imshow('Filtered Image (Diagonal Laplacian)', filtered_laplace_diag)
cv2.imshow('Mirrored Image (Laplacian)', mirrored_laplace)
cv2.imshow('Mirrored Image (Diagonal Laplacian)', mirrored_laplace_diag)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
阅读全文