62. 图像锐化——钝化掩蔽
2025-07-15 本文已影响0人
大龙10
一、空间域锐化滤波(高通滤波)
-
图像模糊通过平滑(加权平均)来实现,类似于积分运算。图像锐化则通过微分运算(有限差分)实现,使用一阶微分或二阶微分都可以得到图像灰度的变化值。
-
图像锐化的目的是增强图像的灰度跳变部分,使模糊的图像变得清晰。图像锐化也称为高通滤波,通过和增强高频,衰减和抑制低频。图像锐化常用于电子印刷、医学成像和工业检测。
- 恒定灰度区域,一阶导数为零,二阶导数为零;
- 灰度台阶或斜坡起点区域,一阶导数非零,,二阶导数非零;
- 灰度斜坡区域,一阶导数非零,二阶导数为零。
二、钝化掩蔽
- 简单地,从原始图像中减去一幅平滑处理的钝化图像,也可以实现图像锐化效果,称为钝化掩蔽。
令表示平滑图像,则:
当 k>1 时,实现高提升滤波;当 k=1 时,实现钝化掩蔽;k<1时,减弱钝化掩蔽。
-
因此,钝化掩蔽的实现过程是:
(1)对原始图像进行平滑处理,得到平滑图像;
(2)从原始图像中减去平滑图像,产生掩蔽模板;
(3)将原始图像与掩蔽模板加权相加,得到钝化掩蔽。 -
原图减去模糊图的结果为模板,输出图像等于原图加上加权后的模板,当权重为1得到非锐化掩蔽,当权重大于1成为高提升滤波。
-
钝化掩蔽没有直接计算和使用梯度算子,但减法运算具有微分运算的特征,因此本质上是梯度算法,可以实现锐化滤波的效果。
三、例程
- 1.77:图像锐化: 钝化掩蔽
import cv2
from matplotlib import pyplot as plt
# 1.77:图像锐化: 钝化掩蔽
img = cv2.imread(r"e:/opencv/bgra.png", flags=0)
# 对原始图像进行平滑,GaussianBlur(img, size, sigmaX)
imgGauss = cv2.GaussianBlur(img, (5,5), sigmaX=5)
imgGaussNorm = cv2.normalize(imgGauss,dst=None,alpha=0,beta=255,norm_type=cv2.NORM_MINMAX)
# 掩蔽模板:从原始图像中减去平滑图像
imgMask = img - imgGaussNorm
passivation1 = img + 0.6 * imgMask # k<1 减弱钝化掩蔽
imgPas1 = cv2.normalize(passivation1, None, 0, 255, cv2.NORM_MINMAX)
passivation2 = img + imgMask # k=1 钝化掩蔽
imgPas2 = cv2.normalize(passivation2, None, 0, 255, cv2.NORM_MINMAX)
passivation3 = img + 2 * imgMask # k>1 高提升滤波
imgPas3 = cv2.normalize(passivation3, None, 0, 255, cv2.NORM_MINMAX)
plt.figure(figsize=(10, 7))
titleList = ["1. Original", "2. GaussSmooth", "3. MaskTemplate",
"4. Passivation(k=0.5)", "5. Passivation(k=1.0)", "6. Passivation(k=2.0)"]
imageList = [img, imgGauss, imgMask, imgPas1, imgPas2, imgPas3]
for i in range(6):
plt.subplot(2,3,i+1), plt.title(titleList[i]), plt.axis('off')
plt.imshow(imageList[i], 'gray', vmin=0, vmax=255)
plt.tight_layout()
plt.show()
四、资料
youcans_的博客:
https://blog.csdn.net/youcans/article/details/122034827