MATLAB数字图像的边缘检测
1.掌握图像边缘检测方法;
2.学会利用MATLAB程序进行边缘检测
二、内容
利用sobel、prewitt、canny边缘检测算子对图像进行边缘检测,并比较处理结果
三、原理
边缘即图像中灰度发生急剧变化的区域边界。边缘检测的实质是采用某种算法来提取图像中对象与背景间的交界线。图像灰度的变化情况可以用图像灰度分布的梯度来反应,因此可以用局部图像微分技术来获得边缘检测算子。经典的边缘检测方法是对原始图像中像素的某小邻域来构造边缘检测算子。常采用差分、梯度、拉普拉斯算子及各种高通滤波处理方法对图像边缘进行检测。检测的方法有:梯度算子、拉普拉斯算子、方向算子、Canny算子等。
Sobel 算子主要用作边缘检测。在技术上,它是一离散性差分算子,用来运算图像亮度函数的梯度之近似值。在图像的任何一点使用此算子,将会产生对应的梯度矢量或是其法矢量
Prewitt 算子采用以下算子分别计算一阶 x 方向和 y 方向的图像差分。在一个较大区域中,用两点的偏导数值来求梯度幅度值,受噪声干扰很大。若对两个点的各自一定领域内的灰度值求和,并根据两个灰度值和的差来计算x,y的偏导数,则会在很大程度上降低噪声干扰。
Canny 算子使用了变分法,这是一种寻找满足特定功能的函数的方法。最优检测使用四个指数函数项的和表示,但是它非常近似于高斯函数的一阶导数。Canny的目标是找到一个最优的边缘检测算法.
四、设备和仪器
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算子有一定的噪声抑制能力,在检测阶跃边缘时得到的边缘宽度至少为二像素。