边界检测方法集合

在matlab的edge函数当中包含的method有7种

'Sobel' (default) | 'Prewitt' | 'Roberts' | 'log' | 'zerocross' | 'Canny' | 'approxcanny'

下面将对每种方法进行简单的介绍以及对比

来源:https://blog.csdn.net/tianhai110/article/details/5663756


1、Sobel算子


这两者对灰度渐变低噪声的图像有较好的检测效果,但是对于混合多复杂噪声的图像,处理效果就不理想了。

2、Prewitt算子

这两者对灰度渐变低噪声的图像有较好的检测效果,但是对于混合多复杂噪声的图像,处理效果就不理想了。

3、Roberts算子


Robert算子定位比较精确,但由于不包括平滑,所以对于噪声比较敏感。

4、Canny算法



5、log边缘检测


LOG滤波器中的a正比于低通滤波器的宽度,a越大,平滑作用越显著,去除噪声越好,但图像的细节也损失越大,边缘精度也就越低。所以在边缘定位精度和消除噪声级间存在着矛盾,应该根据具体问题对噪声水平和边缘点定位精度要求适当选取。

抗噪声能力较强,但会造成一些尖锐的边缘无法检测到。

6、zeroCross边界检测算法

这个算子的作用就是从图像中提取出零交叉点。代表了二阶导数从正到负的转变

7、approxcanny




8、代码

    I=imread(['./idcard/',num2str(i),'.jpg']);
    I=rgb2gray(I,'method'); %method使用7中具体方法名称代替
    tic;
    BW = edge(I);
    figure;
    imshow(BW);

9、结果


19、时间

0.348237223780375 0.0850947502601536

0.150463896427930 0.185086594503322

0.213030633928855 0.227787267655326

猜你喜欢

转载自blog.csdn.net/Diana_Z/article/details/80707559
今日推荐