对一幅灰度图像采用多种方法实现锐化滤波代码
时间: 2024-11-22 18:40:46 浏览: 28
对一幅灰度图像进行锐化处理通常涉及增强图像边缘和细节,以便使其看起来更清晰。这里有几种常见的锐化方法,如Sobel算子、Prewitt算子和Unsharp Masking(高斯模糊加原图减去低通滤波后的图像)。下面是一个简单的Python代码示例,使用OpenCV库来实现:
```python
import cv2
import numpy as np
# 加载图像
image = cv2.imread('gray_image.jpg', cv2.IMREAD_GRAYSCALE)
# Sobel算子
sobelx = cv2.Sobel(image, cv2.CV_64F, 1, 0, ksize=5) # 水平方向
sobely = cv2.Sobel(image, cv2.CV_64F, 0, 1, ksize=5) # 垂直方向
abs_sobelxy = cv2.convertScaleAbs(sobelx + sobely) # 转换回uint8并取绝对值
# Prewitt算子
prewitt_x = cv2.Prewitt(image, cv2.CV_64F, 1) # 水平方向
prewitt_y = cv2.Prewitt(image, cv2.CV_64F, 0) # 垂直方向
abs_prewitt = cv2.convertScaleAbs(prewitt_x + prewitt_y)
# Unsharp Masking (高斯模糊 + 原图 - 高斯模糊后的图像)
kernel_size = 5
blur = cv2.GaussianBlur(image, (kernel_size, kernel_size), 0)
unsharp_mask = image - blur
sharp = image + unsharp_mask * 2 # 放大对比度
# 显示原始和处理后的图像
cv2.imshow("Original Image", image)
cv2.imshow("Sobel", abs_sobelxy)
cv2.imshow("Prewitt", abs_prewitt)
cv2.imshow("Unsharp Mask", sharp)
# 等待用户按键
cv2.waitKey(0)
cv2.destroyAllWindows()
```
阅读全文