图像锐化:细节的"强化师"

图像锐化:细节的

理论讲完了,咱们来动手试试!用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('锐化图像已保存!')

💡 小技巧:锐化核中心的系数决定了锐化的强度。系数越大,锐化效果越明显,但也可能会放大图像中的噪点。就像喝咖啡提神——适量可以让你精神焕发,但喝太多可能会让你过于兴奋甚至失眠!

相关内容

科普天地 | 古代船只如何找到行驶的方向?
365提款需要多久

科普天地 | 古代船只如何找到行驶的方向?

⌛ 09-26 👁️ 934
Tower项目管理软件怎么样
365提款需要多久

Tower项目管理软件怎么样

⌛ 09-22 👁️ 8146
探索世界边缘的非主流语言
365娱乐场体育投注

探索世界边缘的非主流语言

⌛ 07-19 👁️ 2382