文档详情

基于形态学分水岭的图像分割算法摘要关键字图像分割是图像分析.DOC

发布:2018-09-30约3.66千字共5页下载文档
文本预览下载声明
基于形态学分水岭的图像分割算法 摘要: 关键字: 图像分割是图像分析和处理中一个重要的研究方向,它是许多后续处理的基础。其分割结果的好坏对后续的图像分析、理解及识别都有很大影响。图像分割的算法有很多种,比较常用的有:快速聚类分割、颗粒分割、区域阈值法、边缘检测法以及基于形态学分水岭分割等。其中分水岭变换是图像分割中的一种经典有效的方法,它与经典的边缘检测算法相比,计算精度高,可有效的生成封闭的单像素轮廓,它以快速、有效、准确的分割结果越来越得到人们的重视。 分水岭图像分割方法采用的原理主要有两种: 第一种是模拟浸水过程。首先把一幅图像视为跌宕起伏的地形曲面,图像中每个象素的灰度值对应于地形中的高度,代表了该点在地形中的海拔。在这样的地形中,有盆地(图像中的局部极小区域)、山脊(分水岭)以及盆地和山脊之间的山坡。初始把图像这个有盆地也有山脊的地形模型垂直浸入湖水中,然后在各个盆地的最低处刺上各个洞,使水慢慢均匀浸入各个洞中,当水快要填满盆地,即某两个或多个盆地中的水将要相交融时,就在将要相交的两盆地之间修建堤坝,随着水位的逐渐上涨,最后各个盆地完全被水淹没,只有各个堤坝没被水淹没,而各个盆地又完全被堤坝所包围,从而可以得到各个堤坝(分水岭)和一个个被堤坝分开的盆地(目标物体),从而达到使粘连物体分割的目的。 第二种是模拟降水过程。这种方法也是基于地形学中的地貌特征,同样把一幅图像视为跌宕起伏的地貌模型。在模拟降水过程中,当雨滴落到山地模型上时,必将沿着山坡流人谷底,雨滴所经过的路线就是一个连通分支,也是雨滴到谷底的最陡峭路径,而通往同一谷底的所有连通分支就形成了一个蓄水盆地。 算法实现: % 分水岭算法 clear, close all; clc; PathName=t ;%t为自填内容,下面p类似 FileName=[PathName p];?? 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 n0 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); ????????????
显示全部
相似文档