【OpenCV--边缘检测】

这篇具有很好参考价值的文章主要介绍了【OpenCV--边缘检测】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、边缘检测概念

二、Sobel算子

1.描述:

2.方法:

3.Sobel算子的应用:

 三、Laplacian算子

1.描述:

2.应用:

四、Canny边缘检测

1.原理:

2.应用:

一、边缘检测概念

1.边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的点,往往以轮廓的形式表现出来

2.分类:边缘检测大幅度减少了数据量,删除了不相干的信息,保留图像重要的结构属性,它大幅可以分为两类

1>基于搜索:通过寻找图像一阶导数中最大值来检测边界利用计算结果估计边缘局部方向,通常采用梯度方向,利用此方向找到局部梯度模最大值,代表算法是Sobel算子和Scharr算子

2>基于零穿越:通过寻找图像二阶导数零穿越来寻找边界,代表算法为Laplacian算子

二、Sobel算子

1.描述:

Sobel边缘检测算法相对简单,实际应用时效率比canny要高,但是没有其精确,Sobel算子是高斯平滑和微分操作的结合体,其抗噪声能力强,当对效率要求较高,而对细纹理不太关心时,普遍应用Sobel算子

2.方法:

将图像I与基数大小的模板进行卷积,当模板大小为3时,垂直变化以及水平变化:

opencv边缘检测,opencv,python,人工智能opencv边缘检测,opencv,python,人工智能

 基于以上两个结果,求出每一点:

opencv边缘检测,opencv,python,人工智能

 注意:当内核大小为3时,Sobel算子会产生比较明显误差,需要使用Scharr算法(只有大小为3核)

 opencv边缘检测,opencv,python,人工智能

 3.Sobel算子的应用:

Sobel_x_y=cv.Sobel(src,ddepth,dx,dy,dst,ksize,scale,delta,borderType)

参数:

dx,dy指求导的阶数,取值为0(表示没有求导),1

ksize:卷积核大小,为奇数,默认是3,当为-1时,演变成3*3Scharr算子

scale:缩放导数比例常数,默认没有

import numpy as np
import matplotlib.pyplot as plt
import cv2 as cv
img=cv.imread('cat.png',0)
#显示原图
#plt.imshow(img,cmap=plt.cm.gray)
#plt.show()
#计算Sobel卷积结果
x=cv.Sobel(img,cv.CV_16S,1,0)#cv.CV_16S表示图像转换成16位有符号数据类型
y=cv.Sobel(img,cv.CV_16S,0,1)
#将数据进行转换会uint8形式
Sobel_x=cv.convertScaleAbs(x)
Sobel_y=cv.convertScaleAbs(y)
#利用函数将结果进行合成
result=cv.addWeighted(Sobel_x,0.5,Sobel_y,0.5,0)
#t图像显示
#plt.imshow(result,cmap=plt.cm.gray)
#plt.show()
#利用Scharr算子
x1=cv.Sobel(img,cv.CV_16S,1,0,ksize=-1)
y1=cv.Sobel(img,cv.CV_16S,0,1,ksize=-1)
Sobel_x1=cv.convertScaleAbs(x1)
Sobel_y1=cv.convertScaleAbs(y1)
result1=cv.addWeighted(Sobel_x1,0.5,Sobel_y1,0.5,0)
plt.imshow(result1,cmap=plt.cm.gray)
plt.show()

opencv边缘检测,opencv,python,人工智能opencv边缘检测,opencv,python,人工智能opencv边缘检测,opencv,python,人工智能

 三、Laplacian算子

 1.描述:

Laplacian算子是利用二阶导来检测边缘,不连续函数二阶导数计算:

opencv边缘检测,opencv,python,人工智能

 则卷积核大小为:

 opencv边缘检测,opencv,python,人工智能

2.应用:

laplacian=cv.Laplacian(src,ddepth,dst,ksize,scale,delta,borderType)

ddepth:图像的深度,-1表示和原图像深度相同,目标图像的深度大于等于原图像

import numpy as np
import matplotlib.pyplot as plt
import cv2 as cv
img=cv.imread('cat.png',0)
#显示原图
#plt.imshow(img,cmap=plt.cm.gray)
#plt.show()
#计算Laplacian卷积结果
laplacian=cv.Laplacian(img,cv.CV_16S)
#数据进行转换成uint8形式
result=cv.convertScaleAbs(laplacian)
plt.imshow(result,cmap=plt.cm.gray)
plt.show()

opencv边缘检测,opencv,python,人工智能opencv边缘检测,opencv,python,人工智能

四、Canny边缘检测

1.原理:

1>噪声去除:由于边缘检测很容易受到噪声的影响,所以首先使用5 * 5高斯滤波器去除噪声

2>计算图像梯度:对平滑后的图像使用Sobel算子计算水平方向和竖直方向的一阶导数(Gx 和Gy)。根据得到的这两幅梯度,找到边界梯度和方向

3>非极大值抑制:在获得梯度的方向和大小之后,对整幅图像进行扫描,去除那些非边界上的点。对每一个像素进行检查,看这个点的梯度是不是周围具有相同梯度方向的点中最大的

4>滞后阈值:确定真正的边界,设置两个阈值: minVal 和maxVal。当图像的灰度梯度高于maxVal时被认为是真的边界,低于minVal的边界会被抛弃

2.应用:

canny=cv.Canny(src,threshold1,threshold2)

threshold1:较小的阈值minval,threshold2:较大的阈值maxval

import numpy as np
import matplotlib.pyplot as plt
import cv2 as cv
img=cv.imread('cat.png',0)
#plt.imshow(img,cmap=plt.cm.gray)
#plt.show()
canny=cv.Canny(img,0,100)
plt.imshow(canny,cmap=plt.cm.gray)
plt.show()

opencv边缘检测,opencv,python,人工智能opencv边缘检测,opencv,python,人工智能文章来源地址https://www.toymoban.com/news/detail-791016.html

到了这里,关于【OpenCV--边缘检测】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • OpenCV—Sobel边缘检测的python代码实现

    目录 一、前言 二、主要参数 三、代码实现及效果展示 在 计算机视觉 和 图像处理 中,边缘通常包含了有关对象轮廓和结构的重要信息。OpenCV 是一个流行的计算机视觉库,它提供了许多用于边缘检测的工具,其中之一就是Sobel算子。 什么是Sobel算子? Sobel算子是一种基于卷

    2024年02月03日
    浏览(32)
  • Python-OpenCV中的图像处理-边缘检测

    Canny 边缘检测是一种非常流行的边缘检测算法,是 John F.Canny 在 1986 年提出的。它是一个有很多步构成的算法:噪声去除、计算图像梯度、非极大值抑制、滞后阀值等。 Canny(image: Mat, threshold1, threshold2, edges=…, apertureSize=…, L2gradient=…) 在 OpenCV 中只需要一个函数: cv2.Canny(),

    2024年02月13日
    浏览(38)
  • python+opencv_my图像边缘检测笔记1

    一阶微分算子边缘检测算法 1、Roberts算子 适合处理声噪较低的图片,缺点:对图片的定位不太准,提取的边缘线条比较粗;通过cv2.filte(src,ddepth,kernel,[dst[,anchor,[delta[,borderType]]])实现卷积运算; 垂直方向w1与水平方向w2 ddepth:图像深度:图像深度是指图像中每个像素的颜色表示

    2024年04月09日
    浏览(23)
  • 边缘智能:边缘计算和人工智能的深度融合

    随着通信技术的飞速发展和移动设备使用的激增,一种全新的计算范式——边缘计算正在迅速普及。与此同时,随着深度学习的突破和硬件架构的许多改进,人工智能(AI)应用正在蓬勃发展。在网络边缘产生数十亿字节的数据,对数据处理和结构优化提出了巨大的要求。因此,

    2024年02月11日
    浏览(47)
  • 【OpenCV-Python】——边缘和轮廓&Laplacian/Sobel/Canny边缘检测&查找/绘制轮廓及轮廓特征&霍夫直线/圆变换

    目录 前言: 1、边缘检测 1.1 Laplacian边缘检测  1.2 Sobel边缘检测  1.3 Canny边缘检测 2、图像轮廓 2.1 查找轮廓  2.2 绘制轮廓 2.3 轮廓特征 3、霍夫变换 3.1 霍夫直线变换  3.2 霍夫圆变换 总结: 图像的边缘是指图像中灰度值急剧变化的位置,边缘检测的目的是为了绘制边缘线条。

    2024年01月23日
    浏览(39)
  • 《opencv实用探索·十二》opencv之laplacian(拉普拉斯)边缘检测,Scharr边缘检测,Log边缘检测

    1、Laplacian算子 Laplacian(拉普拉斯)算子是一种二阶导数算子,其具有旋转不变性,可以满足不同方向的图像边缘锐化(边缘检测)的要求。同时,在图像边缘处理中,二阶微分的边缘定位能力更强,锐化效果更好,因此在进行图像边缘处理时,直接采用二阶微分算子而不使

    2024年04月10日
    浏览(33)
  • 《opencv实用探索·十一》opencv之Prewitt算子边缘检测,Roberts算子边缘检测和Sobel算子边缘检测

    1、前言 边缘检测: 图像边缘检测是指在图像中寻找灰度、颜色、纹理等变化比较剧烈的区域,它们可能代表着物体之间的边界或物体内部的特征。边缘检测是图像处理中的一项基本操作,可以用于人脸识别、物体识别、图像分割等多个领域。 边缘检测实质上是计算当前点和

    2024年02月22日
    浏览(42)
  • 毕业设计:基于机器学习的课堂学生表情识别系统 人工智能 python 目标检测

    目录 前言 项目背景 数据集 设计思路 更多帮助     📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充

    2024年04月16日
    浏览(48)
  • 毕业设计:基于机器学习的草莓成熟度识别分类系统 人工智能 python 目标检测

    目录 前言 项目背景 数据集 设计思路 更多帮助     📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充

    2024年04月27日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包