基于matlab的数字图像边缘检测 - 副本

数字图像的边缘检测

  1. 目的

   1.掌握图像边缘检测方法; 2.学会利用MATLAB程序进行边缘检测

二、内容

利用sobel、prewitt、canny边缘检测算子对图像进行边缘检测,并比较处理结果

三、原理

边缘即图像中灰度发生急剧变化的区域边界。边缘检测的实质是采用某种算法来提取图像中对象与背景间的交界线。图像灰度的变化情况可以用图像灰度分布的梯度来反应,因此可以用局部图像微分技术来获得边缘检测算子。经典的边缘检测方法是对原始图像中像素的某小邻域来构造边缘检测算子。常采用差分、梯度、拉普拉斯算子及各种高通滤波处理方法对图像边缘进行检测。检测的方法有:梯度算子、拉普拉斯算子、方向算子、Canny算子等。

Sobel 算子主要用作边缘检测。在技术上,它是一离散性差分算子,用来运算图像亮度函数的梯度之近似值。在图像的任何一点使用此算子,将会产生对应的梯度矢量或是其法矢量

Prewitt 算子采用以下算子分别计算一阶 x 方向和 y 方向的图像差分。在一个较大区域中,用两点的偏导数值来求梯度幅度值,受噪声干扰很大。若对两个点的各自一定领域内的灰度值求和,并根据两个灰度值和的差来计算x,y的偏导数,则会在很大程度上降低噪声干扰。

Canny 算子使用了变分法,这是一种寻找满足特定功能的函数的方法。最优检测使用四个指数函数项的和表示,但是它非常近似于高斯函数的一阶导数。Canny的目标是找到一个最优的边缘检测算法.

代码交流欢迎点击

https://cjsq.scove.cn/cCLOlp

四、设备和仪器

1.计算机

2.matlab开发平台

五、关键代码及注释

I=imread('coins.png');               %读取原始图像

subplot(2,2,1),imshow(I);title('原图');

BW1=edge(I,'sobel');                 %sobel边界探测器

BW2=edge(I,'prewitt');               %prewitt边界探测器

BW3=edge(I,'canny');                 %canny边界探测器

subplot(2,2,2),imshow(BW1);title('sobel边缘探测器');

subplot(2,2,3),imshow(BW2);title('prewitt边缘探测器');

subplot(2,2,4),imshow(BW3);title('canny边缘探测器');

六、实验结果

有实验结果可以看出,对此图用sobel和prewitt算子进行边缘检测效果最好,因为sobel和prewitt算子有一定的噪声抑制能力,在检测阶跃边缘时得到的边缘宽度至少为二像素。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容