图像锐化的目的是使模糊图像变清晰,方法可以大致分为两类:微分法、高频加重滤波法。其中微分法可以分为梯度法、Sobel算子法、Laplace算子法。
在做图像锐化时要注意,处理的图像必须有较高的信噪比,否则锐化会使噪声收到比信号还强的增强,一般先降噪后锐化。
微分法
微分运算是求信号的变化率,加强高频分量,使图像轮廓清晰。希望通过导数运算使边缘和轮廓变清晰,这就要求该导数运算是各向同性的(旋转不变性),可以证明偏导数的平方和运算具有此性质。
- 梯度法
对于图像
梯度的幅度表示为
对于数字图像而言,
该式可以简化成
![970a993b-6c13-eb11-8da9-e4434bdf6706.png](http://p04.5ceimg.com/content/970a993b-6c13-eb11-8da9-e4434bdf6706.png)
图像的最后一行(列)的梯度无法求得,一般用前一行(列)的梯度代替。
当梯度计算完之后,可以根据需要生成不同的梯度增强图像,
1)第一种,
2)第二种,
可以显示出非常明显的边缘轮廓,又不会破坏原灰度变化平缓的背景。
3)第三种,
边缘轮廓用固定的灰度级
4)第四种,
背景用固定灰度级
5)第五种,
将背景和边缘用二值图像表示,便于研究边缘所在位置。
2. Sobel算子
采用梯度微分锐化图像,会让噪声、条纹得到增强,Sobel算子在一定程度上解决了这个问题,
从这个式子中,可以得到两个性质,
- Sobel引入了平均的因素,因此对噪声有一定的平滑作用
- Sobel算子的操作就是相隔两个行(列)的差分,所以边缘两侧元素的得到了增强,因此边缘显得粗而亮。
Sobel算子表示形式为:
3. 拉普拉斯算子(二阶微分)
拉普拉斯运算也是各向同性的线性运算。拉普拉斯算子为:
由此式可知,数字图像在
拉普拉斯算子的模板图可表示为:
还有其他的常用拉普拉斯模板:
高通滤波
高通滤波法采用高通滤波器让高频分量通过,使图像的边缘和线条变得清楚,实现锐化。
高通滤波器而用空域法和频域法实现,在空间域使用卷积方法,模板如
可以看出和拉普拉斯算子基本相同。
个人理解:为了能够让高频通过,
代码
Sobel算子
import
![9c0a993b-6c13-eb11-8da9-e4434bdf6706.png](http://p04.5ceimg.com/content/9c0a993b-6c13-eb11-8da9-e4434bdf6706.png)
Laplace算子
import cv2
import matplotlib.pyplot as plt
plt.subplot(1, 2, 1)
img = cv2.imread("image.jpg", 0) # 0为灰度图
plt.imshow(img)
plt.subplot(1, 2, 2)
depth = cv2.CV_16S
kernel_size = (3, 3) # 模板大小
scale = 1 # 扩散系数
laplace_img = cv2.Laplacian(img, depth, kernel_size, scale=scale)
plt.imshow(laplace_img)
plt.show()
![a00a993b-6c13-eb11-8da9-e4434bdf6706.png](http://p04.5ceimg.com/content/a00a993b-6c13-eb11-8da9-e4434bdf6706.png)