机器学习--拉普拉斯算子(Laplace Operator)学习整理

一.定义
拉普拉斯算子(Laplace Operator)是n维欧几里德空间中的一个二阶微分算子,定义为梯度(▽f)的散度(▽·f)。(摘自百度百科)
如果f是二阶可微的实函数,则f的拉普拉斯算子定义为:
在这里插入图片描述
f的拉普拉斯算子也是笛卡尔坐标系xi中的所有非混合二阶偏导数:
在这里插入图片描述
对于二维空间上:(x与y代表 x-y 平面上的笛卡尔坐标)
在这里插入图片描述
二.机器学习中应用
1.作为具有旋转不变性的各向同性算子,拉普拉斯算子广泛用于图像增强,图像锐化中
在图像中采用离散拉普拉斯算子,此时采用差分近似来使用拉普拉斯算子,公式变形为:
在这里插入图片描述在上述近似下,在计算时则有拉普拉斯算子4邻域,8邻域的算子模板来使用:
(1)4邻域(较常用)
机器学习--拉普拉斯算子(Laplace Operator)学习整理_第1张图片
(2)8邻域
机器学习--拉普拉斯算子(Laplace Operator)学习整理_第2张图片
由模板知,当邻域像素灰度值相同时,filter的卷积结果为0;当中心像素的灰度较其他灰度值高或当中心像素的灰度较其他灰度值低时,filter的卷积运算结果非0。如果在图像中一个较暗的区域中出现了一个亮点,拉普拉斯算子会产生"亮者更亮"的效果,故这也是拉普拉斯算子在图像锐化的原理。
测试图像锐化:(python-opencv实现)
代码如下:

import matplotlib.pyplot as plt
import numpy as np
import cv2

#载入图片并灰度化
my_img=cv2.imread('test_picture.jpg')
test_img=cv2.cvtColor(my_img,cv2.COLOR_BGR2BGRA)
to_gray=cv2.cvtColor(my_img,cv2.COLOR_BGR2GRAY)

#采用laplacian算子处理
laplacians=cv2.Laplacian(to_gray,cv2.CV_16S,ksize=3,scale=1,delta=0)
after_operation=cv2.convertScaleAbs(laplacians)

#显示图片
name1='original picture'
plt.subplot(1,2,1)
plt.imshow(test_img,'gray')
plt.title(name1)
plt.xticks([])
plt.yticks([])

name2='after laplacian operation'
plt.subplot(1,2,2)
plt.imshow(after_operation,'gray')
plt.title(name2)
plt.xticks([])
plt.yticks([])

plt.show()

测试结果:
机器学习--拉普拉斯算子(Laplace Operator)学习整理_第3张图片
2.在图(graph)卷积神经网络的扩展应用
由于CNN不适用于引文网络等非平面矩阵结构,为了在拓扑图上提取空间特征,GCN被提出。在GCN中,对于Graph上的拉普拉斯算子则是拉普拉斯矩阵(Laplacian matrix)
给定一个有n个顶点的图G,它的拉普拉斯矩阵定义为: L=D-A。
其中D为图的度矩阵,A为图的邻接矩阵。度矩阵在有向图中,只需要考虑出度或者入度中的一个。
拉普拉斯矩阵的良好特征:
(1)拉普拉斯矩阵是半正定矩阵;
(2)特征值中0出现的次数就是图连通区域的个数;
(3)最小特征值是0,因为拉普拉斯矩阵每一行的和均为0;
(4)最小非零特征值是图的代数连通度。
graph上的傅里叶变化和卷积就是基于拉普拉斯矩阵得以进行的。

你可能感兴趣的:(机器学习)