小白学习图像处理——边缘检测(MATLAB)

这篇博客主要介绍了在MATLAB中进行图像边缘检测的方法,包括基于梯度的算法和带有方向信息的边缘检测。内容涉及Roberts、Sobel、Prewitt等卷积核的使用,以及Prewitt、Kirsch、Robinson算子在边缘检测中的应用。通过MATLAB代码展示了边缘检测的过程。
摘要由CSDN通过智能技术生成

主要参考学习《数字图像处理 原理与实践 matlab版》

边缘检测的算法通常对领域内像素灰度求一阶导数、二阶导数以及梯度来实现,这些计算经过化简的结果成为算子(operator)。

在使用算子进行边缘检测时,我们定义边缘为像素集合:

{x|F(x)>th}

其中x为像素编号,F(x)为算子计算结果,th为临界值。边缘检测的过程可以分解为对图像的每个像素分别计算判断的过程。

边缘检测结果图中的灰度值可以直接通过算子计算原图像中对应像素的灰度差分来得到。几乎所有边缘检测的共同思想都是以像素灰度差分为基础的。在实现时,只需一次对原图像中每个元素进行计算,并把结果保存为灰度图中的像素即可。在计算时,由于灰度差分的结果进行缩放,从而得到清晰的边缘图像。

1、基于梯度的方法

计算两个指定方向的离散梯度;在通过已有的卷积核(Roberts、sobel、prewitt)计算出两个定向的梯度的差值。得到一个领域的边缘,卷积的过程对每一个位置进行这样的操作,最后得到整幅图的边缘。

matlab代码

clear;
I=imread('D:\Desktop\example.jpg');
Igray=rgb2gray(I);
im1=edge(Igray,'roberts');
im2=edge(Igray,'sobel');
im3=edge(Igray,'prewitt');

subplot(221),imshow(I),title('original');
subplot(222),imshow(im1),title('roberts');
subplot(223
  • 13
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值