- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
27
28
I=imread('rice.png'); BW1=edge(I,'roberts'); BW2=edge(I,'sobel'); BW3=edge(I,'prewitt'); BW4=edge(I,'canny'); BW5=edge(I,'log'); figure;subplot(2,3,1);imshow(I);title('原始图像'); subplot(2,3,2);imshow(BW1);title('Roberts算子'); subplot(2,3,3);imshow(BW2);title('Sobel算子'); subplot(2,3,4);imshow(BW3);title('Prewitt算子'); subplot(2,3,5);imshow(BW4);title('Canny算子'); subplot(2,3,6);imshow(BW5);title('Log算子边缘检测');
本章要点
4
9.2 边缘检测
基于边缘检测的图像分割方法的基本思路是先确 定图像中的边缘像素,然后就可把它们连接在一起构 成所需的边界。 ◆图像边缘意味着图像中一个区域的终结和另一 个区域的开始,图像中相邻区域之间的像素集合构成 了图像的边缘。 ◆进一步讲,图像的边缘是指图像灰度发生空间 突变的象素的集合。
[g,t]=edge(I,'method',parameters)
其中I是输入图像,method是边缘检测算子, parameters是设置的参数,输出g是二值图像矩阵,其 值为1的像素构成边缘。参数t给出函数使用的阈值。
22
(1)使用Roberts算子的语法结构: BW = edge(I,'roberts',thresh,options) 其中thresh表示阈值,低于该阈值的像素值将被忽 略。options默认为'thinning',即边缘细化,当取 值为'nothinning',边缘不细化,可以对算法加速。
29
30
9.3
边缘跟踪
数字图像可用各种方法检测出边缘点,但是 由于噪声、光照不均等因素的影响,获得的边 缘点有可能是不连续的,必须通过边界跟踪将 它们转换为有用的边界信息,以便于后续处理。
31
基本步骤
从图像中一个边缘点出发,然后根据某种判别准则搜索下 一个边缘点以此跟踪出目标边界。
确定边界的起始搜索点,起始点的选择很关键,对某
20
算子比较
Canny算子:基于最优化思想推导出的边缘检测算子,
但实际效果不一定最优。该算子同样采用高斯函数对图像做 平滑处理,具有较强的噪声抑制能力,但是会将一些高频边 缘平滑掉,造成边缘丢失。Canny算子采用双阈值算法检测和 连接边缘,采用的多尺度检测和方向性搜索比LOG算子好。
21
MATLAB图像处理工具箱利用edge函数来实现基于各 种算子的边缘检测功能,这个函数寻找像素值剧烈变 化的像素点。调用格式如下:
f ( x, y ) G ( f ( x, y )) x f ( x, y ) y
T
7
对应于欧氏距离的梯度幅值 2 2 : | G( x, y) | Gx Gy 对应于棋盘距离的梯度幅值 : G4 ( x, y ) Gx G y 对应于街区距离的梯度幅值 : G8 ( x, y ) max{ G x G( y ) } 由梯度矢量幅角表示的梯度方向是函数f(x,y)增加最快的 方向: ( x, y) arctan( Gx / G y )
起点
白
黑
34
起点
白
黑
白
黑
起点
(a)某些小凸部分可能被漏掉
(b)利用不同起点跟踪小凸部分
35
9.3.2
光栅跟踪法
光栅跟踪方法的基本思想是先利用检测准则确定
接受对象点,然后根据已有的接受对象点和跟踪准则
确定新的接受对象点,最后将所有标记为1且相邻的
对象点联接起来就得到了检测到的细曲线。
36
◆ 需要事先确定检测阈值d、跟踪阈值t,且要求d>t。 ◆检测准则:对图像逐行扫描,将每一行中灰度值大
拉普拉斯算子
0 1 0 1 1 1 1 -8 1 1 1 1
1 0
-4 1
1 0
图9.5 两种常用的拉普拉斯算子模板
14
拉普拉斯算子
15
Canny算子
基本思想
好的检测结果:对边缘的错误检测率要尽可能低,在检测
出图像真实的边缘的同时要避免检测出现虚假的边缘。
好的边缘定位精度:标记出的边缘位置要和图像上真正 边缘的位置尽量接近。 对同一边缘要有低的响应次数:有的算子会对一个边缘回 产生多个响应。也就是说图像上本来只有一个边缘点的,可是
第九章 图像分割
1
9.1 概述
图 像
图像 预处理 图像 分割
图像 识别
图像 理解
2
图像分割
特征
分割出来的各区域对某种性质例如灰度,纹
理而言具有相似性,区域内部是连通的的且 没有过多小孔。
区域边界是明确的 相邻区域对分割所依据的性质有明显的差异
3
图像分割
边缘检测 边缘跟踪 阈值分割 区域分割
17
Canny算子
实例
18
算子比较
Roberts算子:Roberts算子利用局部差分算子寻找边缘,边 缘定位精度较高,但容易丢失一部分边缘,同时由于图像没经 过平滑处理,因此不具备能抑制噪声能力。该算子对具有陡峭 边缘且含噪声少的图像效果较好。 Sobel算子和Prewitt算子:都是对图像先做加权平滑处理, 然后再做微分运算,所不同的是平滑部分的权值有些差异,因 此对噪声具有一定的抑制能力,但不能完全排除检测结果中出 现的虚假边缘。虽然这两个算子边缘定位效果不错,但检测出 的边缘容易出现多像素宽度。
2 2 f ( x , y ) f ( x, y) 2 f ( x, y) 2 x y 2
微分 差分
2 f ( x, y) f ( x 1, y) f ( x 1, y) f ( x, y 1) f ( x, y 1) 4 f ( x, y)
13
25
(5)使用Log算子的语法结构: BW = edge(I,'log',thresh,sigma)
其中sigma是指高斯滤波器的标准差,缺省值为 2,滤波器的大小为ceil(sigma*3)*2+1。
26
I=imread('rice.png'); BW1=edge(I,'roberts');%以自动阈值选择法对图像进行Roberts算子边缘检 测
[BW1,thresh1]=edge(I,'roberts'); %返回当前Roberts算子边缘检测的阈值 disp('Roberts算子自动选择阈值为');disp(thresh1) figure; subplot(2,2,1);imshow(BW1);title('自动阈值的Roberts算子检测'); BW2=edge(I,'roberts',0.07); %以阈值为0.07对图像进行Roberts算子检测 subplot(2,2,2);imshow(BW2);title('阈值为0.07的Roberts算子检测'); BW3=edge(I,'roberts',0.05); %以阈值为0.05对图像进行Roberts算子检测 subplot(2,2,3);imshow(BW3);title('阈值为0.05的Roberts算子检测'); BW4=edge(I,'roberts',0.03); %以阈值为0.03对图像进行Roberts算子检测 subplot(2,2,4);imshow(BW4);title('阈值为0.03的Roberts算子检测');
24
(4)使用Canny算子的语法结构: BW = edge(I,'canny',thresh,sigma)
其中thresh表示阈值,若为两个元素的向量,则第一 个元素为低阈值,第二个元素为高阈值,若为一个元 素,表示高阈值,低阈值为0.5*thresh。sigma是指高 斯滤波器的标准差,缺省值为1,滤波器的大小根据 sigma的值选择。
19
算子比较
Laplacian算子:是不依赖于边缘方向的二阶微分算子,对
图像中的阶跃型边缘点定位准确,该算子对噪声非常敏感,它 使噪声成分得到加强,这两个特性使得该算子容易丢失一部分 边缘的方向信息,造成一些不连续的检测边缘,同时抗噪声能 力较差。 LOG算子:克服了拉普拉斯算子抗噪声能力较差的缺点, 但在抑制噪声的同时也可能将原有的比较尖锐的边缘也平滑掉 了,造成这些尖锐边缘无法被检测到。
1
0
1
Z7 Z8 Z9
-1
0
1
Gx (Z 7 Z8 Z9 ) ( Z1 Z 2 Z 3 ) Gy (Z 3 Z 6 Z9 ) ( Z1 Z 4 Z 7 )
11
梯度算子
原图
Roberts算子
Sobel算子
Prewitt算子
12
拉普拉斯算子
二阶导数算子
5
◆图像边缘有两个特征:方向和幅度 沿边缘走向,像素值变化比较平缓; 沿垂直于边缘的走向,像素值则变化比较剧烈。 ◆一般常用一阶和二阶导数来描述和检测边缘。 综上所述,图像中的边缘可以通过对它们求导数 来确定,而导数可利用微分算子来计算。对于数字图 像来说,通常是利用差分来近似微分。