五. 图像空间域锐化算法

五. 图像空间域锐化算法

目的:增强图像的边缘或者轮廓。

数学意义:通过微分使得图像边缘更加突出、清晰。因为图像边缘灰度变化率更高,显然微分后得到的值相较于其它部分更大。

5.1 梯度

数学定义:

对于图像\(f(x,y)\),在点\((x,y)\)处的梯度定义为:

\[\nabla f=grad(f)= \begin{bmatrix} g_x \\ g_y \end{bmatrix} = \begin{bmatrix} \frac{\partial f(x,y)}{\partial x} \\ \frac{\partial f(x,y)}{\partial y} \end{bmatrix} \tag{1} \]

本质上,梯度是一个向量,其大小为:

\[M(x,y)=\sqrt{g_x^2+g_y^2} \tag{2} \]

其方向为:

\[\theta = arctan(\frac{g_x}{g_y}) \tag{3} \]

5.2 梯度算子

差分公式:

在离散图像中适用一阶差分来近似一阶偏导数,公式如下:

\[g_x=f(x+1,y)-f(x,y) \\ g_y=f(x,y+1)-f(x,y) \tag{4} \]

模板:

模板使用方法:分别使用相对位置的数字乘上对应位置的灰度值,然后相加。

\(g_x\):

\[\begin{bmatrix} -1 \\ 1 \end{bmatrix} \]

\(g_y\):

\[\begin{bmatrix} -1 & 1 \end{bmatrix} \]

简化计算:

为了简化计算流程,尝试用以下两种公式代替数学上定义的向量计算公式:

  • \[grad(f)=Max(|g_x|,|g_y|) \tag{5} \]

  • \[grad(f)=|g_x|+|g_y| \tag{6} \]

5.3 Roberts算子

差分公式:

\[g_x=f(x+1,y+1)-f(x,y) \\ g_y=f(x+1,y)-f(x,y+1) \tag{7} \]

对应模板:

模板使用方法:分别使用相对位置的数字乘上对应位置的灰度值,然后相加。

\(g_x\):

\[\begin{bmatrix} -1 & 0 \\ 0 & 1 \end{bmatrix} \]

\(g_y\):

\[\begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix} \]

5.4 Prewitt算子

差分公式:

\[g_x=𝑓(𝑥 + 1, 𝑦 − 1) − 𝑓(𝑥 − 1, 𝑦 − 1) + 𝑓(𝑥 + 1, 𝑦) − 𝑓(𝑥 − 1, 𝑦)+ 𝑓(𝑥 + 1, 𝑦 + 1) − 𝑓(𝑥 − 1, 𝑦 + 1) \\ g_y=𝑓(𝑥 − 1, 𝑦 + 1) − 𝑓(𝑥 − 1, 𝑦 − 1) + 𝑓(𝑥, 𝑦 + 1) − 𝑓(𝑥, 𝑦 − 1)+ 𝑓(𝑥 + 1, 𝑦 + 1) − 𝑓(𝑥 + 1, 𝑦 − 1) \tag{8} \]

对应模板:

\(g_x\):

\[\begin{bmatrix} -1 & -1 & -1 \\ 0 & 0 & 0 \\ 1 & 1 & 1 \end{bmatrix} \]

\(g_y\):

\[\begin{bmatrix} -1 & 0 & 1 \\ -1 & 0 & 1 \\ -1 & 0 & 1 \end{bmatrix} \]

5.5 Sobel算子

对应模板:

\(g_x\):

\[\begin{bmatrix} -1 & -2 & -1 \\ 0 & 0 & 0 \\ 1 & 2 & 1 \end{bmatrix} \]

\(g_y\):

\[\begin{bmatrix} -1 & 0 & 1 \\ -2 & 0 & 2 \\ -1 & 0 & 1 \end{bmatrix} \]

5.6 不同梯度输出图像

不同梯度:

  1. \(g(x,y)=grad(f)\)

    增强的图像仅显示灰度变化比较陡的边缘轮廓,而灰度变化比较平缓或均匀的区域则呈黑色。

  2. \(g(x,y)=\begin{cases}grad(f),grad(f)\geq T \\ f(x,y),其它\end{cases}\)

    适当选取T,可以使得明显的边缘轮廓得到突出,又不会破坏原来灰度变化比较平缓的背景。

  3. \(g(x,y)=\begin{cases}L_G,grad(f)\geq T \\ f(x,y),其它\end{cases}\)

    \(L_G\)是一个固定值,将明显的边缘使用一个固定的灰度值来表示。

  4. \(g(x,y)=\begin{cases}grad(f),grad(f)\geq T \\ L_B,其它\end{cases}\):

    \(L_B\)是一个固定值,将图像较为平滑的部分(也就是锐化后的背景)使用一个固定的灰度值来表示。便于研究边缘灰度值的变化。

  5. \(g(x,y)=\begin{cases}L_G,grad(f)\geq T \\ L_B,其它\end{cases}\)

    \(L_G、L_B\)均为固定值,可以生成二值图像,便于研究边缘所在位置。

输出图像案例:

image-20230606111041456

5.7 Laplacian增强算子

原理:使用二阶偏导数,可以更加精确的过滤背景,仅求出边缘部分。

作用:通过求出的边缘图像与原始图像叠加,能够得到对图像边缘进行增强的锐化图像。

二阶差分公式:

\[\frac{\partial^2 f(x,y)}{\partial x^2}=f(x+1,y)+f(x-1,y)-2f(x,y) \\ \frac{\partial^2 f(x,y)}{\partial x^y}=f(x,y+1)+f(x,y-1)-2f(x,y) \tag{9} \]

算子公式:

\[\nabla^2 f(x,y)=f(x+1,y)+f(x-1,y)+f(x,y+1)+f(x,y-1)-4f(x,y) \tag{10} \]

算子的四种常用模板表达:

  • \[\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} \]

  • \[\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(x,y)=f(x,y)-\alpha \nabla^2f(x,y) \tag{11} \]

其中:\(\alpha\)视我们采用的算子模板来决定:

  • 使用前两个算子模板:\(alpha=1\)
  • 使用后两个算子模板:\(alpha=-1\)

最终的Laplacian锐化模板:

  • 四邻域Laplacian锐化模板:

    \[\begin{bmatrix} 0 & -1 & 0 \\ -1 & 5 & -1 \\ 0 & -1 & 0 \end{bmatrix} \]

  • 八邻域Laplacian锐化模板:

    \[\begin{bmatrix} -1 & -1 & -1 \\ -1 & 9 & -1 \\ -1 & -1 & -1 \end{bmatrix} \]

实际操作步骤:

  1. 选定Laplacian算子模板。
  2. 根据选定的Laplacian算子模板,选择相应的\(\alpha\),构造Laplacian锐化模板。
  3. 遍历图像,对所有像素求二阶差分。
    1. 边界图像不求直接归0,或填充后再求。
    2. 二阶差分小于0的注意归0。
  4. 得到了加重边缘的图像,将其与原始图像相加,得到锐化图像。(注意越界的像素灰度设为上限值,一般是255)

Laplacian锐化案例:

image-20230606113219784
posted @ 2023-06-06 11:36  BinaryPrinter  阅读(307)  评论(0)    收藏  举报