1. 拉普拉斯算子
1.1 简介
一种典型的各向同性的微分算子,可用于检测图像中灰度图片的区域
根据上述的差分近似可以推导出
1.2 锐化过程
- 使用拉普拉斯过滤器得到图像中灰度突变的区域$\nabla^{2} f(x, y)$
- 使用原图像加上$\nabla^{2} f(x, y)$,如下
- 其中c为可变参数
2. 测试
图源自skimage
3. 代码
1 import numpy as np
2
3
4 def laplace_sharpen(input_image, c):
5 '''
6 拉普拉斯锐化
7 :param input_image: 输入图像
8 :param c: 锐化系数
9 :return: 输出图像
10 '''
11 input_image_cp = np.copy(input_image) # 输入图像的副本
12
13 # 拉普拉斯滤波器
14 laplace_filter = np.array([
15 [1, 1, 1],
16 [1, -8, 1],
17 [1, 1, 1],
18 ])
19
20 input_image_cp = np.pad(input_image_cp, (1, 1), mode='constant', constant_values=0) # 填充输入图像
21
22 m, n = input_image_cp.shape # 填充后的输入图像的尺寸
23
24 output_image = np.copy(input_image_cp) # 输出图像
25
26 for i in range(1, m - 1):
27 for j in range(1, n - 1):
28 R = np.sum(laplace_filter * input_image_cp[i - 1:i + 2, j - 1:j + 2]) # 拉普拉斯滤波器响应
29
30 output_image[i, j] = input_image_cp[i, j] + c * R
31
32 output_image = output_image[1:m - 1, 1:n - 1] # 裁剪
33
34 return output_image