连笔字作品 | 连笔字知识 | 加入收藏 连笔字转换器软件可转换多种连笔字在线预览 网页版 V2.0
连笔字转换器

当前位置:连笔字网 > 知识库 >

分水岭算法,分水岭算法的原理及相关思想的阐述

时间:2023-12-21 19:12:01 编辑:连笔君 来源:连笔字网

分水岭算法的原理及相关思想的阐述是什么

首先选择最低的点,就是分水岭中最底的山谷。
然后灌水:
1 . 极值点周围的点也划分到极值点,它们属于一个区域。
2 . 在灌水的过程中根据你设定的阈值,还需要把有的区域合并。
3. 这个过程中有新的局部极值点产生,也是山谷,但不一定是最底的山谷。
最后灌满了水之后,由起始的极值点形成了一个一个的区域。

有关分水岭算法的书

我以前在梦境之中去的就是分水岭,那是把一个河流给分成两条的牌岭,我觉得非常奇怪,那个牌岭横跨一条河流,而另一条河流则流向他处,牌岭两边都有一个地下通道楼梯口,看上去有些稀奇,不知拍零下为何物,不过牌岭旁的油菜花也是非常了令人向往的,我觉得太COOL了,但要通向下面的楼梯时,就这样结束了,非常遗憾没有把它继续下去,这是我梦境之中的分水岭,然而你说的书可能是涉及一些关于把水分流的自然现象或者是说关于分水的另一种科学论断。。。

分水岭的计算过程

分水岭的计算过程是一个迭代标注过程。分水岭比较经典的计算方法是L. Vincent提出的。在该算法中,分水岭计算分两个步骤,一个是排序过程,一个是淹没过程。首先对每个像素的灰度级进行从低到高排序,然后在从低到高实现淹没过程中,对每一个局部极小值在h阶高度的影响域采用先进先出(FIFO)结构进行判断及标注。
分水岭变换得到的是输入图像的集水盆图像,集水盆之间的边界点,即为分水岭。显然,分水岭表示的是输入图像极大值点。因此,为得到图像的边缘信息,通常把梯度图像作为输入图像,即
g(x,y)=grad(f(x,y))={[f(x,y)-f(x-1,y)]2[f(x,y)-f(x,y-1)]2}0.5
式中,f(x,y)表示原始图像,grad{.}表示梯度运算。
分水岭算法对微弱边缘具有良好的响应,图像中的噪声、物体表面细微的灰度变化,都会产生过度分割的现象。但同时应当看出,分水岭算法对微弱边缘具有良好的响应,是得到封闭连续边缘的保证的。另外,分水岭算法所得到的封闭的集水盆,为分析图像的区域特征提供了可能。
为消除分水岭算法产生的过度分割,通常可以采用两种处理方法,一是利用先验知识去除无关边缘信息。二是修改梯度函数使得集水盆只响应想要探测的目标。
为降低分水岭算法产生的过度分割,通常要对梯度函数进行修改,一个简单的方法是对梯度图像进行阈值处理,以消除灰度的微小变化产生的过度分割。即
g(x,y)=max(grad(f(x,y)),gθ)
式中,gθ表示阈值。
程序可采用方法:用阈值限制梯度图像以达到消除灰度值的微小变化产生的过度分割,获得适量的区域,再对这些区域的边缘点的灰度级进行从低到高排序,然后在从低到高实现淹没的过程,梯度图像用Sobel算子计算获得。对梯度图像进行阈值处理时,选取合适的阈值对最终分割的图像有很大影响,因此阈值的选取是图像分割效果好坏的一个关键。缺点:实际图像中可能含有微弱的边缘,灰度变化的数值差别不是特别明显,选取阈值过大可能会消去这些微弱边缘。

如何处理分水岭算法中的过分割问题

克服分水岭算法过分割的方法_百度文库
http://wenku.baidu.com/link?url=1Ik36il1QlMtTweU2bfr4IGN2uCf0CHHmCOV9OkmS62Y5_sHUYn_G3N2ddJ4W3GIRCwoscGd7lXTqbCKdpwqBNH4k0B6SoLasxeivIMtYyS
参考文库这个文章。

求经典MATLAB分水岭算法源代码

%%都不知道你是啥样的分割 什么图片
clear, close all;
clc;
PathName='d:\';%t为自填内容,下面p类似
FileName=[PathName 'test.jpg'];
Image=imread(FileName);
subplot(2,2,1);subimage(Image);title('原图');;pixval on;
B=[1,1,1;1,1,1;1,1,1];%方形结构元
E8=[-1,0;-1,1;0,1;1,1;1,0;1,-1;0,-1;-1,-1]; % 8-连通结构元坐标
maskLenth=length(E8); % 结构元点的个数
[X,Y]=size(Image);
%原始图像image 赋值给A1
n=1;
A(:,:,n)=Image;
M=zeros(X,Y);
Mark_Image=zeros(X,Y);
%产生距离图
while sum(sum(A(:,:,n)))~=0
A(:,:,n+1)= imerode(A(:,:,n),B);
U(:,:,n)= (A(:,:,n)-A(:,:,n+1))*n;
M=M+U(:,:,n);
n=n+1;
end
n=n-1;
subplot(2,2,2);imagesc(M,[0,n]);title('距离图');
% 搜寻局部最大值,将其放入Deal_Image
Deal_Image=zeros(X,Y);
while n>0
for high=1:X
for width=1:Y
%********************************************************************
Mark_Bool=0;
if M(high,width)==n
%______________________________________________________________
for dot=1:maskLenth
i=E8(dot,1); j=E8(dot,2);
if high+i>=1 & width+j>=1 & high+i<=X & width+j<=Y & M(high+i,width+j)>M(high,width);
Mark_Bool=1;break;
end % if_end
end % for dot_end
%______________________________________________________________
if Mark_Bool==0;
Deal_Image(high,width)=M(high,width);
end %if end
%______________________________________________________________
end %if end
%********************************************************************
end %for-end
end %for-end
n=n-1;
end % while n=0 end
Deal_Image =[Deal_Image>=1]
subplot(2,2,3);subimage(Deal_Image);title('输出图像');

Mark_Number=1;

while n>0
for high=1:X
for width=1:Y
Mark_Bool=0;
%********************************************************************
if M(high,width)==n
%______________________________________________________________
for dot=1:maskLenth
i=E8(dot,1); j=E8(dot,2);
if high+i>=1 & width+j>=1 & high+i<=X & width+j<=Y & Mark_Image(high+i,width+j)>0;
Mark_Image(high,width)=Mark_Image(high+i,width+j);
Mark_Bool=1;break;
end % if_end
end % for dot_end
%______________________________________________________________
if Mark_Bool==0;
Mark_Image(high,width)=Mark_Number;
Mark_Number=Mark_Number+1;
end %if end
%______________________________________________________________
pause;
subplot(2,2,2);imagesc(Mark_Image,[0,Mark_Number]);title('输出图像');
end %if end
%********************************************************************
end %for-end
end %for-end
n=n-1;
end % while n=0 end

subplot(2,2,3);imagesc(Mark_Image,[0,Mark_Number]);title('分割后的图像');

uicontrol('Style','edit','string',['分割出区域:',Num2str(Mark_Number-1),'个'],...
'Position', [400 0 150 18],'FontSize',12,'FontWeight','light');

分水岭是什么意思?

分水岭是指分隔相邻两个流域的山岭或高地;也比喻不同事物的主要分界。在自然界中,分水岭较多的是山岭、高原。分水岭的脊线叫分水线,是相邻流域的界线,一般为分水岭最高点的连线。按形态分为两类:对称和不对称分水岭。

对称分水岭的分水线位于分水岭中央,两侧斜坡的坡踩、长度一致。不对称分水岭的分水线偏于分水岭的一侧,两侧斜坡不对称。在自然界中,对称分水岭极为罕见,广泛发育的是不对称分水岭。

扩展资料:

1、在年轻的褶皱山区,剥蚀作用还没有完全改变原始的山形,不对称的褶皱两翼必然引起分水岭的不对称。在长期剥蚀区,岩性的差别或断层的影响,也常造成分水岭两侧的不对称。在单斜构造地区,单面山形成的分水岭经常是一坡陡、一坡缓。

2、相邻流域河流基准面位置的高低及其距分水岭的远近。它们直接决定着河流的比降,以及河流的侵蚀能力和山坡的剥蚀速度。一般地说,在分水岭与两侧河流基准面距离相等时,河流基准面位置低的一侧的河流侵蚀和山坡剥蚀能力都强于高的一侧,因而低侧山坡较陡,高侧山坡较缓。

同样,在分水岭两侧的河流基准面高度相等时,则河流基准面距分水岭近的一侧坡度大,另一侧坡度小。此外,分水岭两侧降水不均也有影响。雨量多的一侧,河流流量大,地表径流丰富,河流的侵蚀作用或山坡的剥蚀作用都强于另一侧,因而地形较陡。

参考资料来源:百度百科-分水岭

Copyright:2022-2023 连笔字转换器 www.liulisui.com All rights reserved.