1、任选一张图像,使用水平垂直差分法和罗伯特差分法对图像进行锐化处理,并绘制出中间过程的边缘图像,结果显示出原图、边缘图像、结果图像。提示:在图像二维数组上使用模版操作,类似于图像平滑中的均值滤波法。代码
时间: 2024-10-18 12:09:40 浏览: 26
基于 jupyter notebook pytorch使用卷积网络的图像10分类附完整代码+数据集可直接运行 毕业设计
5星 · 资源好评率100%
在Python中,我们可以使用OpenCV库来进行图像的锐化处理,包括水平垂直差分法和罗伯特差分法。这里是一个简单的例子,我们将展示如何进行这些处理并绘制中间步骤的边缘图像:
```python
import cv2
import numpy as np
# 加载图像
img = cv2.imread('example_image.jpg', cv2.IMREAD_GRAYSCALE)
# 水平垂直差分法(Sobel算子)
sobel_x = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=3)
sobel_y = cv2.Sobel(img, cv2.CV_64F, 0, 1, ksize=3)
# 结合得到边缘图像
edges_sobel = np.abs(sobel_x) + np.abs(sobel_y)
edges_sobel = cv2.convertScaleAbs(edges_sobel)
# 罗伯特差分法
kernel = np.array([[1, -2], [1, 0]]) # Robert's kernel
edges_robert = cv2.filter2D(img, -1, kernel)
# 结果图像合并
result = cv2.bitwise_or(edges_sobel, edges_robert)
# 显示原始图像、边缘图像和结果图像
titles = ['Original Image', 'Edges (Sobel)', 'Edges (Robert)', 'Result']
images = [img, edges_sobel, edges_robert, result]
for i in range(4):
plt.subplot(2, 2, i+1), plt.imshow(images[i], cmap='gray')
plt.title(titles[i])
plt.xticks([]), plt.yticks([])
plt.show()
阅读全文