图像边缘检测几种方法(算子)的总结(MATLAB) 您所在的位置:网站首页 图像的分割方法有几种 图像边缘检测几种方法(算子)的总结(MATLAB)

图像边缘检测几种方法(算子)的总结(MATLAB)

2023-12-26 02:37| 来源: 网络整理| 查看: 265

图像分割技术

图像分割技术,顾名思义,就是将一幅数字图像分割成不同的区域,主要包括:图像边缘分割技术,阈值分割技术和区域分割技术。 这里先简单介绍一下边缘分割技术。

边缘分割技术的介绍

边缘检测是检测图像特性发生变化的位置,比如图像在边界处会有明显的不同,边缘分割技术就是检测出不同区域的边界来进行分割,常见的边缘检测方法包括有微分算子,Canny算子和LOG算子等,其中微分算子常用的有Sobel算子,Roberts算子和Prewitt算子,下面对几种算子的用法和调用格式进行详细的介绍(理论基础略过,可自行百度)。

几种算子及调用格式的介绍

算子:将图像点(x,y)某个邻域中每个像素值都与模板中对应的系数相乘,然后将结果进行累加,得到该点的新像素值。如果邻域的大小为m×n,则共有m×n个系数,这些系数组成的矩阵,就称为模板或算子。通常采用的算子为3×3 在这里插入图片描述

注:边缘检测采用的函数为edge(),只需变换算子即可,且得到的BW图像均为二值图像,即只有黑白两种颜色值

(1)微分算子 ——Roberts算子:由以下两个模板组成 在这里插入图片描述matlab中调用格式为: ①BW=edge(I,‘roberts’); ②BW=edge(I,‘roberts’,thresh); thresh为分割阈值,函数会忽略小于thresh的像素值 ③[BW,thresh]=edge(I,‘roberts’,…);

——Prewitt算子:由以下两个模板组成,分别代表图像的水平梯度和垂直梯度在这里插入图片描述matlab中调用格式为: ①BW=edge(I,‘prewitt’); ②BW=edge(I,‘prewitt’,thresh); ③BW=edge(I,‘prewitt’,thresh,direction); direction是对方向进行设置,可以取值为水平horizontal,垂直vertical和both,默认为both ④[BW,thresh]=edge(I,‘prewitt’,…);

——Sobel算子:由以下两个模板组成 在这里插入图片描述matlab中调用格式为: ①BW=edge(I,‘sobel’); ②BW=edge(I,‘sobel’,thresh); ③BW=edge(I,‘sobel’,thresh,direction); ④[BW,thresh]=edge(I,‘sobel’,…);

注:可以看出调用格式基本类似,只需要换掉所需要的算子即可

(2)Canny算子 优点:低误码率,高定位精度,抑制虚假边缘等 matlab中调用格式为: ①BW=edge(I,‘canny’); ②BW=edge(I,‘canny’,thresh); ③BW=edge(I,‘canny’,thresh,sigma);sigma为高斯滤波器的标准差,默认值为1 ④[BW,thresh]=edge(I,‘canny’,…);

(3)LOG算子 优点:边界定位精度高,抗干扰能力强,连续性好 matlab中调用格式为: ①BW=edge(I,‘log’); ②BW=edge(I,‘log’,thresh); ③BW=edge(I,‘log’,thresh,sigma);sigma为LOG滤波器的标准差,默认值为2 ④[BW,thresh]=edge(I,‘log’,…);

应用实例

(1)微分算子: 这里用prewitt算子举例,其他算子应用方法一样

close all;clear all;clc; I=imread('cameraman.tif'); I=im2double(I); [J1,thresh]=edge(I,'prewitt',[],'both'); [J2,thresh]=edge(I,'prewitt',[],'horizontal'); [J3,thresh]=edge(I,'prewitt',[],'vertical'); figure('NumberTitle','off','Name','prewitt算子进行边缘检测'); subplot(221);imshow(I);title('原始图像'); subplot(222);imshow(J1);title('采用prewitt算子进行边缘检测,方向为水平和垂直'); subplot(223);imshow(J2);title('采用prewitt算子进行边缘检测,方向为水平'); subplot(224);imshow(J3);title('采用prewitt算子进行边缘检测,方向为垂直');

在这里插入图片描述 (2)Canny算子和LOG算子: 对添加了噪声的图像进行边缘检测

clear all; close all; I=imread('cameraman.tif'); I=im2double(I); J=imnoise(I, 'gaussian', 0, 0.001); [BW1,thresh]=edge(J, 'canny'); [BW2,thresh]=edge(J, 'log', [], 2.3); figure; subplot(131); imshow(J);title('原图'); subplot(132); imshow(BW1);title('采用Canny算子边缘检测'); subplot(133); imshow(BW2);title('采用LOG算子边缘检测');

在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有