基于人工智能实验平台的opencv图片操作之laplacian边缘检测

1.实验目的

了解Laplacian边缘检测的用途及原理。

2.实验设备

安装了python和pychrm的电脑一台。

3.实验内容

包含图片的导入、Laplacian边缘检测。

4.实验原理

Laplacian算子法对噪声比较敏感,所以很少用该算子检测边缘,而是用来判断边缘像素视为与图像的明区还是暗区。拉普拉斯高斯算子是一种二阶导数算子,它是一个线性的、移不变算子。将在边缘处产生一个陡峭的零交叉,Laplacian算子利用二阶导数信息,具有各向同性,即与坐标轴方向无关,坐标轴旋转后梯度结果不变。使得图像经过二阶微分后,在边缘处产生一个陡峭的零交叉点,根据这个对零交叉点判断边缘。这是拉普拉斯算子区别于其他算法的最大优点。

拉普拉斯算子一种二阶边缘检测算子,它是一个线性的、移不变算子。是对二维函数进行运算的二阶导数算子,对一个连续函数f (x, y)它在图像中的位置(x, y),拉普拉斯值定义为:

即:

Laplacian算子利用二阶导数信息,具有各向同性,即与坐标轴方向无关,坐标轴旋转后梯度结果不变。使得图像经过二阶微分后,在边缘处产生一个陡峭的零交叉点,根据这个对零交叉点判断边缘。其4邻域系统和8邻域系统的Laplacian算子的模板分别如下图所示。

用卷积核表示:

图1.1.1 滤波核

Laplacian算子对噪声比较敏感,Laplacian算子有一个缺点是它对图像中的某些边缘产生双重响应。所以图像一般先经过高斯平滑处理,通常把Laplacian算子和平滑算子结合起来生成一个新的模板。

处理流程:

1 .高斯模糊--去噪声GaussianBlur()

2 .转为灰度图片cvtColor()

3.拉普拉斯--二阶导数计算Laplacian()

4 .取绝对值concertScaleAbs()

5 .显示结果

在OpenCV-Python中,Laplace算子的函数原型如下:

dst = cv2.Laplacian(src, ddepth[, dst[, ksize[, scale[, delta[, borderType]]]]])

参数:

第一个参数是需要处理的图像;

第二个参数是图像的深度,-1表示采用的是与原图像相同的深度。目标图像的深度必须大于等于原图像的深度;其后是可选的参数:

ksize是算子的大小,必须为1、3、5、7。默认为1。

scale是缩放导数的比例常数,默认情况下没有伸缩系数;

delta是一个可选的增量,将会加到最终的dst中,同样,默认情况下没有额外的值加到dst中;

borderType是判断图像边界的模式。这个参数默认值为cv2.BORDER_DEFAULT。

5.实验步骤

打开pycharm

我们右击相应的文件目录,选择new--->点击Python File,然后输入新建的文件名,点击确定,相应的.py文件就建好了,可以进行编写代码了。

导入需要的图片。

ipoert cv2

读取图片并转换为灰度图像。

img = cv2.imread("..\images\aifos.png")

高斯平滑去噪处理,这里卷积核大小为3*3。

gauss = cv2.GaussianBlur(img, (3, 3), 0)

将图像转为灰度图像。

gray = cv2.cvtColor(gauss, cv2.COLOR_RGB2GRAY)

调用Laplacian函数进行拉普拉斯计算,然后将像素点进行绝对值得计算。

dst=cv2.Laplacian(gray,cv2.CV_16S,ksize = 3)

edges1 = cv2.convertScaleAbs(edges1)

显示高斯滤波后的图像。

cv2.imshow("img", img) cv2.imshow("laplacian",lapla)

cv2.waitKey()

运行后原图和laplacian边缘检测的效果图。

图1.1.2 运行效果图

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值