分享

Matlab图像处理之——边缘检测

 基算仿真 2023-05-30 发布于江苏

在工作和学习中,我们可能会遇到需要提取试验或仿真图像的边缘特征的情况,边缘检测作为一个预处理过程, 广泛应用于图像分割、模式识别和运动分析等领域,所以今天就来介绍一下Matlab的边缘检测算法。

Matlab主要使用"edge"函数进行边缘检测,其中包含了“sobel”、“canny”、“prewitt”、“roberts”、“log”等算法。

这里我们使用下图进行演示

边缘检测代码如下:

clcclearclose all%% 边缘检测I=imread('jisimulation.png');imshow(I)BW1 = edge(I,'sobel');BW2 = edge(I,'canny');BW3 = edge(I,'prewitt');BW4 = edge(I,'roberts');BW5 = edge(I,'log');BW6 = edge(I,'zerocross');%% 图像对比tiledlayout(2,3)nexttileimshow(BW1)title('Sobel Filter')nexttileimshow(BW2)title('Canny Filter')nexttileimshow(BW3)title('prewitt')nexttileimshow(BW4)title('roberts')nexttileimshow(BW5)title('log')nexttileimshow(BW6)title('zerocross')

我们运行代码可以得到如下结果:

其中:

sobel、prewitt算法对图像进行了平滑处理,对噪声具有一定抑制能力,但容易出现多像素宽度。

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

Robert算法的边缘定位精度较高,对于陡峭边缘且噪声低的图像效果较好,但没有进行平滑处理,没有抑制噪声的能力。

canny算法采用高斯函数对图像进行平滑处理,但会造成将高频边缘平滑掉,造成边缘丢失,采用双阈值算法检测和连接边缘。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多