编写程序,使用Sobel算子和拉普拉斯算子来锐化图像,显示并观察他们的锐化效果
时间: 2024-11-09 11:18:32 浏览: 26
图像锐化处理
4星 · 用户满意度95%
在Python中,我们可以使用OpenCV库来实现图像的锐化处理,其中Sobel算子和拉普拉斯算子是最常用的两种锐化技术。这里是一个简单的例子:
```python
import cv2
import numpy as np
# 加载图像
image = cv2.imread('example.jpg', cv2.IMREAD_GRAYSCALE)
# Sobel算子锐化
sobel_kernel = np.array([[-1, -1, -1], [-1, 9, -1], [-1, -1, -1]])
sobel_x = cv2.filter2D(image, -1, sobel_kernel) # 水平方向的Sobel
sobel_y = cv2.filter2D(image, -1, sobel_kernel.T) # 垂直方向的Sobel
sobel_mag = np.sqrt(sobel_x ** 2 + sobel_y ** 2)
sobel_threshold = cv2.adaptiveThreshold(sobel_mag, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 2)
# 拉普拉斯算子锐化
laplacian = cv2.Laplacian(image, cv2.CV_64F).astype(np.uint8)
# 显示原始图像和两种锐化后的图像
titles = ['Original Image', 'Sobel Sharpening', 'Laplacian Sharpening']
images = [image, sobel_threshold, laplacian]
for i in range(len(images)):
plt.subplot(1, 3, i+1)
plt.imshow(images[i], cmap='gray')
plt.title(titles[i])
plt.xticks([]), plt.yticks([]) # 清除坐标轴
plt.show()
阅读全文