分水岭分割算法-watershed工具箱
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 过分割现象: 对微弱边缘具有良好的响应,图像中的噪 声、物体表面细微的灰度变化,都会产生过度分割的现象;
• 为消除分水岭算法产生的过度分割,通常可以采用两种处 理方法: 一是利用先验知识去除无关边缘信息。 二是修改梯度函数使得集水盆只响应想要探测的目标。
3. Matlab演示
• 代码: • clear; close all; clc; • rgb = imread('forest.png'); • • f = rgb2gray( rgb ); • figure(1); • imshow(rgb); • title('原始图像'); • • fgm = imregionalmax(f); • D = bwdist(fgm);%¼ÆËã¾àÀë • DL = watershed(D);%·ÖË®Áë±ä»» • bgm = DL == 0;%ÇóÈ¡·Ö¸î±ß½ç • f0 = f; • f0(bgm) = 255; • • figure(2); • imshow(f0); • title('»ùÓÚ¾àÀë±ä»»µÄ·ÖË®Áë·Ö¸î');
• b. 为得到图像的边缘信息,通常把梯度图像作为输入图像 进行处理。
分水岭脊线
汇水盆地
a
b
c
1. a中红色箭头指示区域为谷底,代表低亮度像素;黄色 箭头所示为山脊,代表高亮度像素;
2. b中灰色部分表示水从谷底逐渐涨高后的状态; 3. C中表示水面到达一定程度后留下的分水岭(最高点)
3. 不足
• f1 = f;
• f1(wr) = 255;
•
• figure(3);
• imshow(f1);
• title('»ùÓÚÌݶȵķÖË®Áë·Ö¸î');
•
• g2 = imclose(imopen(g, ones(9, 9)), ones(9, 9)); %Ä£°å´óСӰÏìЧ¹ûºÃ»µ
• L2 = watershed(g2);
• wr2 = L2==0;
• f2 = f;
• f2(wr2) = 255;
•
• figure(4);
• imshow(f2);
• title('»ùÓÚÐÎ̬ѧÌݶȵķÖË®Áë·Ö¸î');
谢谢!
Watershed工具箱
1. 简介
• a. 概念: 分水岭分割方法,是一种基于拓扑理 论的数学形态学的分割方法;
• b. 原理: 把图像看作是测地学上的拓扑地貌, 即图像中每一点像素的灰度值表示该点的海拔 高度,每一个局部极小值及其影响区域称为集 水盆,而集水盆的边界则形成分水岭
2. 说明
• a. 分水岭的概念和形成可以通过模拟浸入的过程来说明。 在每一个局部极小值表面,刺穿一个小孔,然后把整个模 型慢慢浸入水中,随着浸入的加深,每一个局部极小值的 影响域慢慢向外扩展,在两个集水盆汇合处构筑大坝,即 形成分水岭。
•
• h = fspecial('sobel');
• fd = double(f);
• g = sqrt(imfilter(fd, h, 'replicate').^2 + ...
•
imfilter(fd, h, 'replicate').^2);
• L = watershed( g );
• wr = L==0;
• 为消除分水岭算法产生的过度分割,通常可以采用两种处 理方法: 一是利用先验知识去除无关边缘信息。 二是修改梯度函数使得集水盆只响应想要探测的目标。
3. Matlab演示
• 代码: • clear; close all; clc; • rgb = imread('forest.png'); • • f = rgb2gray( rgb ); • figure(1); • imshow(rgb); • title('原始图像'); • • fgm = imregionalmax(f); • D = bwdist(fgm);%¼ÆËã¾àÀë • DL = watershed(D);%·ÖË®Áë±ä»» • bgm = DL == 0;%ÇóÈ¡·Ö¸î±ß½ç • f0 = f; • f0(bgm) = 255; • • figure(2); • imshow(f0); • title('»ùÓÚ¾àÀë±ä»»µÄ·ÖË®Áë·Ö¸î');
• b. 为得到图像的边缘信息,通常把梯度图像作为输入图像 进行处理。
分水岭脊线
汇水盆地
a
b
c
1. a中红色箭头指示区域为谷底,代表低亮度像素;黄色 箭头所示为山脊,代表高亮度像素;
2. b中灰色部分表示水从谷底逐渐涨高后的状态; 3. C中表示水面到达一定程度后留下的分水岭(最高点)
3. 不足
• f1 = f;
• f1(wr) = 255;
•
• figure(3);
• imshow(f1);
• title('»ùÓÚÌݶȵķÖË®Áë·Ö¸î');
•
• g2 = imclose(imopen(g, ones(9, 9)), ones(9, 9)); %Ä£°å´óСӰÏìЧ¹ûºÃ»µ
• L2 = watershed(g2);
• wr2 = L2==0;
• f2 = f;
• f2(wr2) = 255;
•
• figure(4);
• imshow(f2);
• title('»ùÓÚÐÎ̬ѧÌݶȵķÖË®Áë·Ö¸î');
谢谢!
Watershed工具箱
1. 简介
• a. 概念: 分水岭分割方法,是一种基于拓扑理 论的数学形态学的分割方法;
• b. 原理: 把图像看作是测地学上的拓扑地貌, 即图像中每一点像素的灰度值表示该点的海拔 高度,每一个局部极小值及其影响区域称为集 水盆,而集水盆的边界则形成分水岭
2. 说明
• a. 分水岭的概念和形成可以通过模拟浸入的过程来说明。 在每一个局部极小值表面,刺穿一个小孔,然后把整个模 型慢慢浸入水中,随着浸入的加深,每一个局部极小值的 影响域慢慢向外扩展,在两个集水盆汇合处构筑大坝,即 形成分水岭。
•
• h = fspecial('sobel');
• fd = double(f);
• g = sqrt(imfilter(fd, h, 'replicate').^2 + ...
•
imfilter(fd, h, 'replicate').^2);
• L = watershed( g );
• wr = L==0;