python实现Sobel算子图像锐化
时间: 2023-10-20 11:05:59 浏览: 160
Sobel算子是一种常用的图像锐化算法,其原理是通过计算图像中每个像素点的梯度值,从而增强图像的边缘和轮廓特征。下面是Python实现Sobel算子图像锐化的代码:
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread('lena.jpg', cv2.IMREAD_GRAYSCALE)
# 定义Sobel算子
sobel_x = np.array([[-1, 0, 1],
[-2, 0, 2],
[-1, 0, 1]])
sobel_y = np.array([[-1, -2, -1],
[0, 0, 0],
[1, 2, 1]])
# 计算x方向和y方向的梯度
grad_x = cv2.filter2D(img, -1, sobel_x)
grad_y = cv2.filter2D(img, -1, sobel_y)
# 梯度加权平均
grad = cv2.addWeighted(grad_x, 0.5, grad_y, 0.5, 0)
# 显示原图和锐化后的图像
cv2.imshow('Original', img)
cv2.imshow('Sobel Sharpening', grad)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在代码中,首先使用`cv2.imread()`函数读取图像,然后定义Sobel算子的横向和纵向模板,分别为`sobel_x`和`sobel_y`。接着使用`cv2.filter2D()`函数计算图像的梯度,分别为`grad_x`和`grad_y`。最后,将梯度加权平均,得到锐化后的图像`grad`。最后使用`cv2.imshow()`函数显示原图和锐化后的图像。
阅读全文