Matlab图像边缘检测Roberts\Sobel\Prewitt\Canny算子

确定图像中的物体边界的一种方法是先检测每个像素和其直接淋雨的状态已决定该像素是否确实处于一个物体的边界上。具有这种特性的像素被标记为边缘点。当图像中各个像素的灰度级用来反映各像素要求的程度时,这种图像被称为边缘图像或边缘图。它也可以表示边缘点的位置而没有强弱程度的二值图像来表示。对边缘图像而不是幅度进行编码的图像叫做含方向边缘图。

一幅边缘图通常用边缘点勾画出各个物体的轮廓,单很少能形成图像分割所需要的闭合切连通的边界。因此需要对边缘点进行连接才能完成物体的检测过程。边缘点连接就是一个将邻近的边缘点连接起来,从而产生一条闭合的联通边界的过程。这个过程填补了因为噪声和阴影的影响所产生的间隙。--------引用:杨杰:数字图像处理及MATLAB实现


1.Roberts边缘算子

Roberts边缘检测算子是一种利用局部查分算子寻找边缘的算子。

2.Sobel边缘算子

两个卷积核形成了Sobel边缘算子。图像中的每个点都用这两个核做卷积。一个核对通常的垂直边缘响应最大而另一个对水平边缘响应最大。两个卷积的最大值作为该点的输出值。运算结果是一幅边缘幅度的图像

......理论省略,自行百度

%图像边缘检测
%加载图片并读取图片信息
srcImage=imread('E:\MatlabWorkSpace\实验三边缘检测\image.bmp');
srcImageInfo=imfinfo('E:\MatlabWorkSpace\实验三边缘检测\image.bmp');%图像为truecolor,首先转化为灰度图

%将图像转化为灰度图
grayImage=rgb2gray(srcImage);

%分别使用Roberts\Sobel\Prewitt\Canny算子进行边缘检测
imageRoberts=edge(grayImage,'roberts');
imageSobel
  • 13
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Sobel算子Canny算子、Prewitt边缘检测算子Roberts边缘检测算子都是常用的图像边缘检测算法,它们各有优缺点,下面对它们进行比较: 1. Sobel算子 Sobel算子是一种基于梯度的边缘检测算法,它可以在图像中检测到水平和垂直方向上的边缘。相对于其他算法,Sobel算子计算速度快,易于实现,同时在边缘检测中也有较好的效果。但是,Sobel算子只能检测到水平和垂直方向上的边缘,对于斜向边缘的检测效果不太好。 2. Canny算子 Canny算子是一种常用的边缘检测算法,它利用高斯滤波器平滑图像,然后计算梯度,最后使用非极大值抑制和双阈值处理来检测边缘。Canny算子可以检测到所有方向上的边缘,同时它通过双阈值处理可以控制检测到的边缘数量。但是,Canny算子的计算量比较大,运行速度比较慢。 3. Prewitt边缘检测算子 Prewitt算子也是一种基于梯度的边缘检测算法,它与Sobel算子类似,可以检测到水平和垂直方向上的边缘。相对于Sobel算子,Prewitt算子的计算量较小,但是在边缘检测中的效果不如Sobel算子。 4. Roberts边缘检测算子 Roberts算子是一种基于微分的边缘检测算法,它使用两个 $2\times 2$ 的卷积核来计算图像中每个像素点的梯度值,从而得到边缘信息。相对于其他算法,Roberts算子计算速度快,但其缺点是对噪声比较敏感,且检测到的边缘比较粗糙。 综上所述,不同的边缘检测算法有各自的优缺点,需要根据实际应用场景进行选择。在一些需要快速处理的场景中,可以选择Sobel算子Roberts算子;在需要精确检测、对噪声抗干扰的场景中,可以选择Canny算子;在计算资源有限的场景中,可以选择Prewitt算子

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值