理论讲完了,咱们来动手试试!用Python实现图像锐化就像给图像"提神",只需要准备两个"工具":
OpenCV库:负责读取、显示和处理图像
NumPy库:负责数值计算
如果你还没有这些库,可以先在终端里输入这行命令安装:
pip install opencv-python numpy
然后复制下面这段代码,保存为image_sharpening.py,运行后就能看到锐化的效果啦!
// 导入需要的库
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 读取彩色图像
color_image = cv2.imread('images/color_image.jpg')
# 转换为RGB格式(因为OpenCV默认读取的是BGR格式)
rgb_image = cv2.cvtColor(color_image, cv2.COLOR_BGR2RGB)
# 方法1:使用OpenCV内置函数实现图像锐化
# 定义锐化核
sharpening_kernel = np.array([[0, -1, 0],
[-1, 5, -1],
[0, -1, 0]])
# 应用锐化核
sharpened_image = cv2.filter2D(rgb_image, -1, sharpening_kernel)
# 方法2:使用不同强度的锐化核
# 轻度锐化
mild_sharpening_kernel = np.array([[0, -0.5, 0],
[-0.5, 3, -0.5],
[0, -0.5, 0]])
mild_sharpened = cv2.filter2D(rgb_image, -1, mild_sharpening_kernel)
# 重度锐化
strong_sharpening_kernel = np.array([[0, -1.5, 0],
[-1.5, 7, -1.5],
[0, -1.5, 0]])
strong_sharpened = cv2.filter2D(rgb_image, -1, strong_sharpening_kernel)
# 方法3:非锐化掩模(Unsharp Masking)
# 先对图像进行高斯模糊
blurred = cv2.GaussianBlur(rgb_image, (5, 5), 1.0)
# 计算原始图像与模糊图像的差值
mask = cv2.subtract(rgb_image, blurred)
# 将差值添加回原始图像
unsharp_masked = cv2.add(rgb_image, mask)
# 显示原图和不同方法得到的锐化图
plt.figure(figsize=(20, 10))
plt.subplot(231)
plt.imshow(rgb_image)
plt.title('彩色原图')
plt.axis('off')
plt.subplot(232)
plt.imshow(mild_sharpened)
plt.title('轻度锐化')
plt.axis('off')
plt.subplot(233)
plt.imshow(sharpened_image)
plt.title('中度锐化')
plt.axis('off')
plt.subplot(234)
plt.imshow(strong_sharpened)
plt.title('重度锐化')
plt.axis('off')
plt.subplot(235)
plt.imshow(unsharp_masked)
plt.title('非锐化掩模')
plt.axis('off')
plt.tight_layout()
plt.show()
# 保存锐化后的图像
cv2.imwrite('images/mild_sharpened.jpg', cv2.cvtColor(mild_sharpened, cv2.COLOR_RGB2BGR))
cv2.imwrite('images/sharpened_image.jpg', cv2.cvtColor(sharpened_image, cv2.COLOR_RGB2BGR))
cv2.imwrite('images/strong_sharpened.jpg', cv2.cvtColor(strong_sharpened, cv2.COLOR_RGB2BGR))
cv2.imwrite('images/unsharp_masked.jpg', cv2.cvtColor(unsharp_masked, cv2.COLOR_RGB2BGR))
print('锐化图像已保存!')
💡 小技巧:锐化核中心的系数决定了锐化的强度。系数越大,锐化效果越明显,但也可能会放大图像中的噪点。就像喝咖啡提神——适量可以让你精神焕发,但喝太多可能会让你过于兴奋甚至失眠!