数字图像处理(图像增强)——拉普拉斯算子

二阶微分

与微积分中定义的微分略有不同,数字图像中处理的是离散的值,因此对于一维函数的一阶微分的基本定义是差值:

\[\frac{\partial f}{\partial x} = f(x+1) - f(x) \]

类似的,二阶微分定义为:

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

将一维函数扩展到二维:

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

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

二阶微分的定义保证了以下几点:

  1. 在恒定灰度区域的微分值为0
  2. 在灰度台阶或斜坡的起点处微分值非零

可以看出,二阶微分可以检测出图像的边缘、增强细节

拉普拉斯算子

希望构造一种各向同性滤波器,这种滤波器的响应与滤波器作用的图像的突变方向无关。
最简单的各向同性微分算子是拉普拉斯算子。一个二维图像函数\(f(x, y)\) 定义为:

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

实现上式的滤波器模板为:

0 1 0
1 -4 1
0 1 0

扩展的拉普拉斯算子

对角线方向上也可以类似组成,

1 1 1
1 -8 1
1 1 1
## 使用拉普拉斯算子增强图像

由于拉普拉斯算子是一种微分算子,因此强调的是图像中灰度的突变,并不强调灰度缓慢变化的区域。这将产生把浅灰色边线和突变点叠加到暗色背景中的图像。将原图像和拉普拉斯图像叠加在一起的简单方法,可以复原背景特性并保持拉普拉斯锐化处理的效果。

\[g(x, y) = f(x,, y) + c[\bigtriangledown^2 f(x, y)] \]

python 实现

def laplace2(img, sx = 1.0):
    row = numpy.zeros((1, img.shape[1]))
    img = numpy.row_stack((row, img, row))
    
    col = numpy.zeros((img.shape[0], 1))
    img = numpy.column_stack((col, img, col))

    g = numpy.array(((1, 1, 1), (1, -8, 1), (1, 1, 1)))
    g = -1 * g

    re = numpy.zeros_like(img)

    for i in range(1, img.shape[0] - 1):
        for j in range(1, img.shape[1] - 1):
            re[i, j] = (img[i-1 : i+2, j-1 : j+2] * g).sum()
    
    re = re[1:-1, 1:-1]

    return re

原图:
原图
拉普拉斯作用后的图:
这里写图片描述
增强后的图片:
这里写图片描述

posted @ 2022-10-29 17:31  木章永想要平静的生活  阅读(1095)  评论(0)    收藏  举报