数字图像处理(3) 锐化空间滤波

建议先阅读《平滑空间滤波》

锐化是什么?

突出边缘的过程称之为锐化,用过PS或者毁图秀秀的都是知道的。


与平滑的联系

平滑是将领域的像素进行加权平均的过程,这和积分的思想是很类似的。那么既然积分是平滑的效果,那么微分就应该能达到反效果,即锐化。


建模

容易想到的就是将图片中的边缘提取出来,加强这个边缘的值,然后图片的就被锐化了。而描述边缘的就是变化率,即梯度。


梯度算子

对于一个2维的函数$f(x,y)$而言,其梯度的定义是:
$$\triangledown f(x,y)=\textbf{grad}f(x,y)=(\frac{\partial f}{\partial x},\frac{\partial f}{\partial y})$$
这个向量表征的是点$(x,y)$在这个方向上变化的速度最快,这样就描述出边缘的概念了,因为图像在边缘处的灰度变化率最快。
既然我们知道了如何描述边缘,那么如何提取边缘,并加强边缘呢?由于微分实际就是离散域的差分,所以我们可以用差分来近似差分。由于差分可以有很多不同的方向,所以对应的模板就会有很多种,这些模板又叫做梯度算子。
需要注意的是,下面的模板都只能响应边缘,若要在图片中起到加强的效果,需要将响应的结果加回去。
令$G_x=\frac{\partial f}{\partial x}$,$G_y=\frac{\partial f}{\partial y}$

直接差分算子

采用近似:
$G_x=f(x,y)-f(x+1,y)$
得到纵向模板:$\begin{bmatrix}1 \\ -1 \end{bmatrix}$
$G_y=f(x,y)-f(x,y+1)$
得到横向模板:$\begin{bmatrix}1 & -1 \end{bmatrix}$

Roberts算子

与直接差分不同,Roberts算子斜着取近似
$G_x=f(x,y)-f(x+1,y+1)$
得到模板:$\begin{bmatrix}1 & 0 \\ 0 & -1 \end{bmatrix}$
$G_y=f(x+1,y)-f(x,y+1)$
得到模板:$\begin{bmatrix}0 & 1 \\ -1 & 0 \end{bmatrix}$

Sobel算子

$G_x=(f(x-1,y-1)+2f(x-1,y)+f(x-1,y+1))-(f(x+1,y-1)+2f(x+1,y)+f(x+1,y+1))$
得到模板:$\begin{bmatrix}1 & 2 & 1 \\0 & 0 & 0\\ -1 & -2 & -1 \end{bmatrix}$
$G_y=(f(x-1,y-1)+2f(x,y-1)+f(x+1,y-1))-(f(x-1,y+1)+2f(x,y+1)+f(x+1,y+1))$
得到模板:$\begin{bmatrix}1 & 0 & -1 \\2 & 0 & -2\\1 & 0 & -1 \end{bmatrix}$

梯度算子的效果

现在来看看梯度算子的效果,这里笔者只用Sobel算子来演示一下。左侧是原图,右侧是处理后的图像。
横向响应$J=I+I*h,h=\begin{bmatrix}1 & 2 & 1 \\0 & 0 & 0\\ -1 & -2 & -1 \end{bmatrix}$:
横向
可以看出右侧的横向的边沿都有很明显的响应。
纵向响应$J=I+I*h,h=\begin{bmatrix}1 & 0 & -1 \\2 & 0 & -2\\1 & 0 & -1 \end{bmatrix}$:
纵向
可以看出右侧的纵向的边沿都有很明显的响应。


拉普拉斯算子

上面的梯度算子只能一个方向上的响应边缘,而拉普拉斯算子就能无方向性的响应边缘。

可以证明拉普拉斯算子是各项同性的微分算子(Rosenfeld and Kak[1982])。

对于二维图像而言,拉普拉斯算子表征为一个点灰度的二阶导数,即:
$$\triangledown ^2 f(x,y)=\frac{\partial ^2 f}{\partial x^2}+\frac{\partial ^2 f}{\partial y^2}$$
采用近似:
$\frac{\partial ^2 f}{\partial x^2}=f(x+1,y)+f(x-1,y)-2f(x,y)$

$\frac{\partial ^2 f}{\partial y^2}=f(x,y+1)+f(x,y-1)-2f(x,y)$
即:
$\triangledown ^2 f(x,y)=f(x+1,y)+f(x-1,y)+f(x,y+1)+f(x,y-1)-4f(x,y)$
得到模板:$\begin{bmatrix}0 & 1 & 0 \\1 & -4 & 1\\ 0 & 1 & 0 \end{bmatrix}$
这样的模板表征出此点的响应和上下左右四个方向上的灰度变化有关。
当然,我们也可以加入对角线的影响,即:
$\begin{bmatrix}1 & 1 & 1 \\1 & -8 & 1\\ 1 & 1 & 1 \end{bmatrix}$

拉普拉斯算子的效果


可以看出,只要是边沿,就会被拉普拉斯算子响应。


反锐化掩模

这是种很神奇的锐化方式。我们知道锐化就是要突出边缘,那么除了直接寻找边缘加强外,还用什么办法吗?
想想前面讲的平滑,如果一个图像被平滑了,那么什么地方变化最大,当然就是边缘处:
原始的信号

平滑后的信号

可以看出边缘处的变化是非常大的,那么把原图像和平滑的差加到原图像上面的过程就是反锐化掩模。从数学上有这样的定义式:
$$g_{mask}(x,y)=f(x,y)-\overline{f}(x,y)$$
$$g(x,y)=f(x,y)+k*g_{mask}(x,y)$$
其中$k$是权重系数。

效果:


右侧的图片是处理后的,可以看出,效果还是很明显的。