目录
一、二阶算子简介
二、laplace(拉普拉斯算子)
1、什么是拉普拉斯算子
(1)连续二维函数的二阶导
(2)离散二维函数的二阶导数
2、常用算子模块及代码
3、结果
三、log算子
1、什么是log算子
2、计算流程
3、log算子模板
4、代码
5、结果
四、dog算子
1、什么是dog算子
2、计算流程
(1)灰度化图像
(2)计算方差为2和3.2的两个高斯滤波后的图像
(3)求两个之差——将二者之差再除以2(归一化)
3、代码
4、代码
五、各种算子的比较(一阶和二阶)
一、二阶算子简介
一阶算子可见:《【图像处理】——Python图像分割边缘检测算法之一阶梯度算子(Roberts、Prewitt、Sobel、 Kirsch、Canny算子)》
基于二 阶微分的边缘检测算子是通过计算图像二阶导数的零交叉点来测图像的边缘,LOG(高斯拉普拉斯)算子是最常用的二阶微分算子。
如果对像素值求二阶导数,会发现边缘处的导数值为0
二、laplace(拉普拉斯算子)
1、什么是拉普拉斯算子
拉普拉斯算子是n维欧几里德空间中的一个二阶微分算子,定义为梯度(▽f)的散度(▽·f)。拉普拉斯算子也是最简单的各向同性微分算子,具有旋转不变性,即将原图像旋转后进行滤波处理给出的结果与先对图像滤波然后再旋转的结果相同。一个二维图像的拉普拉斯算子定义为:
(1)连续二维函数的二阶导
(2)离散二维函数的二阶导数
推导过程如下:
2、常用算子模块及代码
import numpy as np
import matplotlib.pyplot as plt
import cv2
def sys_laplace(img):
'''
调用系统函数进行图像的边缘二阶算子laplace检测
:param img: 待测图像
:return: 返回的是边缘图像矩阵
'''
gray = cv2.imread(img,0)#读取图片为灰色
edeg_img = cv2.Laplacian(gray,cv2.CV_16S,ksize=3)#将原始图片进行边缘检测,边缘图像放在16位中防止溢出,使用的卷积核是3
edge_img = cv2.convertScaleAbs(edeg_img)#转回8位图像,brief Scales, calculates absolute values, and converts the result to 8-bit
return edge_img
def def_laplace4(img):
'''
自定义二阶算子边缘检测4邻域laplace
:param img:待测图像
:return: 返回4邻域边缘检测的图像矩阵
'''
gray_img = cv2.imrea