MATLAB的Sobel边缘检测算子、Prewitt边缘检测算子、Canny边缘检测算子

sobel 产生的边缘有强弱,抗噪性好,计算量小

    laplace 对边缘敏感,可能有些是噪声的边缘,也被算进来了

    canny 产生的边缘很细,可能就一个像素那么细,没有强弱之分。计算量大,但是准确
global in%使用全局变量in
%拿到所选按钮的名称
str=get(hObject,'string');

axes(handles.axes1);

switch str
    case '原图'
         imshow(in);  
    case 'sobel'
        BW=edge(rgb2gray(in),'sobel');
        imshow(BW); 
    case 'prewitt' 
         BW=edge(rgb2gray(in),'prewitt');
        imshow(BW); 
    case 'canny'
        BW=edge(rgb2gray(in),'canny');
        imshow(BW); 
end

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
注:
1、Sobel 算子

 基于 Sobel 算子的边缘检测法由包含水平边缘和垂直边缘信息的卷积核组成,其中水平边缘信息的卷积核对该检测法的影响较大。该方法的主要原理是通过卷积算法得到水平边缘和垂直边缘的最大值,将该值作为 Sobel 算子输出,进而实现对图像的边缘检测并提取。

2、Prewitt边缘检测算子
其原理是在图像空间利用两个方向模板与图像进行邻域卷积来完成的,这两个方向模板一个检测水平边缘,一个检测垂直边缘。

相比Roberts算子,Prewitt算子对噪声有抑制作用,抑制噪声的原理是通过像素平均,因此噪声较多的图像处理得比较好,但是像素平均相当于对图像的低通滤波,所以Prewitt算子对边缘的定位却不如Roberts算子。

3、Canny边缘检测算子
从表面效果上来讲,Canny算法是对Sobel、Prewitt等算子效果的进一步细化和更加准确的定位。

Canny算法基于三个基本目标:

(1)低错误率。所有边缘都应被找到,且没有伪响应。
(2)边缘点应该被很好地定位。已定位的边缘必须尽可能接近真实边缘。
(3)单一的边缘点响应。这意味在仅存一个单一边缘点的位置,检测器不应指出多个像素边缘。
进而,Canny的工作本质是,从数学上表达前面的三个准则。因此Canny的步骤如下:

(1)对输入图像进行高斯平滑,降低错误率。
(2)计算梯度幅度和方向来估计每一点处的边缘强度与方向。
(3)根据梯度方向,对梯度幅值进行非极大值抑制。本质上是对Sobel、Prewitt等算子结果的进一步细化。
用双阈值处理和连接边缘。

4、rgb2gray - 将 RGB 图像或颜色图转换为灰度图

此 MATLAB 函数 将真彩色图像 RGB 转换为灰度强度图像 I。rgb2gray 函数通过消除色调和饱和度信息,同时保留亮度,来将 RGB
图像转换为灰度图。如果已安装 Parallel Computing Toolbox,则 rgb2gray 可以在 GPU 上执行此转换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

加油吧小森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值