图像边缘检测:Canny算子、Prewitt算子和sobel算子

技术图像边缘检测:Canny算子、Prewitt算子和sobel算子 图像边缘检测:Canny算子、Prewitt算子和sobel算子边缘检测是检测图像中的一些像素点,它们周围的像素点的灰度发生了急剧的

图像检测:Canny算子、Prewitt算子、sobel算子。

边缘检测是检测图像中的一些像素点,它们周围的像素点的灰度发生了急剧的变化,我们认为在这过程中,图像中的物体不同导致了这一变化,因此可以将这些像素点作为一个集合,可以用来标注图像中不同物体的边界。边缘区域的灰度剖面可以看作是一个阶跃,即图像的灰度在一个很小的区域内变化到另一个相差十分明显的区域。边缘是图像中的重要的结构性特征,边缘往往存在于目标和背景之间,不同的区域之间,因此它可以作为图像分割的重要依据。在边缘检测中,它提取的是图像中不连续部分的特征,将闭合的边缘提取出来便可以作为一个区域。与区域划分相比,边缘检测不需要逐个的对像素进行比较,比较适合大图像的处理.

数字

边缘检测

事实上,边缘是图像上灰度快速变化的点的集合。这些点往往有很大的梯度。图像的梯度可以通过一阶导数和二阶偏导数来求解。但是,图像是以矩阵的形式存储的,这与数学理论中直线或曲线的推导是不一样的。图像的推导相当于平面或曲面的推导。对于图像运算,我们利用模板对原始图像进行卷积运算,从而达到预期的效果。图像的梯度被转换成模板(罗伯茨、普雷维特、索贝尔、拉帕西安算子)来卷积原始图像。

使用一阶导数的算子是prewitt、sobel和canny。拉普拉斯是二阶导数。

(1)一阶导数算子:

普雷威特

一般来说,一阶差分近似由f' (x)=f (x1)-f (x1)计算。可以提出系数:[-1,0,1],就是模板。在二维情况下:

-1, 0, 1

-1, 0, 1

-1, 0, 1

我是普鲁伊特接线员。也就是

f(x-1,y-1),f(x,y-1),f(x-1,y-1)

f(x-1,y),f(x,y),f(x 1,y)

f(x-1,y 1),f(x,y 1),f(x 1,y 1)

索贝尔

中心点f(x,y)是重点考虑的,它的权重应该更多,所以改进如下。

-1, 0, 1

-2, 0, 2

-1, 0, 1

这是Sobel边缘检测算子,偏X方向。以同样的方式,可以获得部分y方向。

-1, -2, -1

0, 0, 0

1, 2, 1

分别计算部分x方向的Gx和部分y方向的Gy,计算绝对值并压缩到[0,255]的区间,即G(x,y)=Gx Gy为sobel边缘检测后的图像。因此,sobel算子有两个方向。

3、精明

Canny算子的计算步骤如下:

1.高斯滤波器平滑图像。消除噪音。

2.用一阶微分偏导数计算梯度值和方向。由索贝尔算子计算。

3.抑制渐变值不是最大值的地方。所有不是极值的点都被设置为0,大多数弱边被移除。图像边缘将变薄。

4.用双阈值连接图上的连接点。设置双阈值t1和t2,使得t1、t2大于T2的点肯定是边缘;小于t1的点肯定不是边;在t1、t1、t2之间的点,通过确定的边缘点,8个字段中的搜索(广泛搜索)被启动。图中的可达点是边,但不可达点不是边。最后得到canny边缘图。

(2)二阶导数算子。

1、拉帕西亚语

一阶差分:f '(x)=f(x)-f(x-1)。

二阶差分:f '(x)=(f(x-1)-f(x))-(f(x)-f(x-1))

简化后:f '(x)=f(x-1)-2 f(x)) f(x 1)。

提取之前的系数:[1,-2,1]。

在二维的情况下,我们可以用同样的方法得到f' (x,y)=-4 f (x,y) f (x-1,y) f (x,y-1) f (x,y-1)f(x,y-1),并提取每个系数,以模板的形式写出来。

0, 1, 0

1, -4, 1

0, 1, 0

考虑两个对角相对的情况。

1, 1, 1

1, -8, 1

1, 1, 1

边缘可以通过与原始图像卷积来获得。

那么这些操作符有什么区别呢?

下面三张图分别是sobel,canny和拉普拉斯的结果。

索贝尔算子

精明的经营者

拉普拉斯算子的处理效果。

Sobel边缘有强有弱,抗噪性好,计算量小。

拉普拉斯对边缘敏感,有些可能是噪声边缘,也包括在内。

canny产生的边缘很细,可能细到一个像素,没有强弱点。计算量很大,但很准确。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/52114.html

(0)

相关推荐

  • Nginx $remoteaddr和$proxyaddxforwardedfor变量详解

    技术Nginx $remoteaddr和$proxyaddxforwardedfor变量详解 Nginx $remote_addr和$proxy_add_x_forwarded_for变量详解$re

    礼包 2021年11月5日
  • VB.NET局部静态变量怎么用

    技术VB.NET局部静态变量怎么用这篇文章主要为大家展示了“VB.NET局部静态变量怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“VB.NET局部静态变量怎么用”这篇文

    攻略 2021年12月2日
  • 韦编三绝是什么意思,韦编三绝的故事,简短些

    技术韦编三绝是什么意思,韦编三绝的故事,简短些早在春秋战国时期,由于纸尚未出现,人们用竹简通过熟牛皮串起来来写下书籍韦编三绝是什么意思。”韦编“就是熟牛皮的意思。韦编三绝顾名思义就是穿竹简的牛皮屡次断裂的意思。这其实是一

    生活 2021年10月24日
  • Golang和Lua相遇会擦出什么火花

    技术Golang和Lua相遇会擦出什么火花这篇文章主要介绍“Golang和Lua相遇会擦出什么火花”,在日常操作中,相信很多人在Golang和Lua相遇会擦出什么火花问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操

    攻略 2021年11月9日
  • 如何利用树莓派监控家里温度和湿度

    技术如何利用树莓派监控家里温度和湿度小编给大家分享一下如何利用树莓派监控家里温度和湿度,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!硬件需求W

    攻略 2021年11月20日
  • CentOS7环境中DHCP怎么配置

    技术CentOS7环境中DHCP怎么配置这篇文章主要讲解了“CentOS7环境中DHCP怎么配置”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CentOS7环境中DHCP

    攻略 2021年11月29日