图像边缘检测几种方法(算子)的总结(MATLAB) |
您所在的位置:网站首页 › 边缘检测的意义和作用 › 图像边缘检测几种方法(算子)的总结(MATLAB) |
图像分割技术
图像分割技术,顾名思义,就是将一幅数字图像分割成不同的区域,主要包括:图像边缘分割技术,阈值分割技术和区域分割技术。 这里先简单介绍一下边缘分割技术。 边缘分割技术的介绍边缘检测是检测图像特性发生变化的位置,比如图像在边界处会有明显的不同,边缘分割技术就是检测出不同区域的边界来进行分割,常见的边缘检测方法包括有微分算子,Canny算子和LOG算子等,其中微分算子常用的有Sobel算子,Roberts算子和Prewitt算子,下面对几种算子的用法和调用格式进行详细的介绍(理论基础略过,可自行百度)。 几种算子及调用格式的介绍算子:将图像点(x,y)某个邻域中每个像素值都与模板中对应的系数相乘,然后将结果进行累加,得到该点的新像素值。如果邻域的大小为m×n,则共有m×n个系数,这些系数组成的矩阵,就称为模板或算子。通常采用的算子为3×3 注:边缘检测采用的函数为edge(),只需变换算子即可,且得到的BW图像均为二值图像,即只有黑白两种颜色值 (1)微分算子 ——Roberts算子:由以下两个模板组成 ——Prewitt算子:由以下两个模板组成,分别代表图像的水平梯度和垂直梯度 ——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算子进行边缘检测,方向为垂直');
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |