图像锐化滤波python
时间: 2024-12-26 15:12:59 浏览: 4
### 使用 Python 实现图像锐化滤波
#### 利用 PIL 库实现图像锐化
为了利用 `PIL` 进行图像锐化,可以通过 `ImageFilter` 类中的预定义过滤器完成此操作。具体来说,`SHARPEN` 是一种用于增强图像边缘清晰度的内建滤镜。
```python
from PIL import Image, ImageFilter
# 打开图片文件并应用锐化滤波
img = Image.open('example.jpg')
sharpened_img = img.filter(ImageFilter.SHARPEN)
# 显示处理后的图像
sharpened_img.show()
# 保存结果到新文件
sharpened_img.save('sharpened_example_pil.png')
```
上述代码展示了如何加载一张照片并通过调用 `.filter()` 方法传入 `ImageFilter.SHARPEN` 来执行简单的锐化效果[^2]。
#### 借助 OpenCV-Python 完成更复杂的图像锐化
对于更加精细控制的需求,则可以考虑采用 `OpenCV` 提供的功能。下面是一个自定义卷积核来进行高通滤波从而达到锐化目的的例子:
```python
import cv2
import numpy as np
def unsharp_mask(image, kernel_size=(5, 5), sigma=1.0, amount=1.0, threshold=0):
"""Return a sharpened version of the image, using an unsharp mask."""
blurred = cv2.GaussianBlur(image, kernel_size, sigma)
sharpened = float(amount + 1) * image - float(amount) * blurred
sharpened = np.maximum(sharpened, np.zeros(sharpened.shape))
sharpened = np.minimum(sharpened, 255 * np.ones(sharpened.shape))
sharpened = sharpened.round().astype(np.uint8)
if threshold > 0:
low_contrast_mask = np.absolute(image - blurred) < threshold
np.copyto(sharpened, image, where=low_contrast_mask)
return sharpened
# 加载彩色图像作为灰度图
gray_image = cv2.imread('example.jpg', cv2.IMREAD_GRAYSCALE)
# 调整参数获得更好的视觉效果
result = unsharp_mask(gray_image, (9, 9))
# 展示原图与处理后对比
cv2.imshow('Original vs Sharpened', np.hstack([gray_image, result]))
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这段脚本实现了所谓的“不锐利遮罩”技术,这是一种经典的摄影后期制作技巧,在这里被转换成了算法形式应用于数字图像上[^3]。
阅读全文