设计利用区域生长算法进行图像分割的程序.doc

设计利用区域生长算法进行图像分割的程序.doc

ID:51830638

大小:110.00 KB

页数:7页

时间:2020-03-16

设计利用区域生长算法进行图像分割的程序.doc_第1页
设计利用区域生长算法进行图像分割的程序.doc_第2页
设计利用区域生长算法进行图像分割的程序.doc_第3页
设计利用区域生长算法进行图像分割的程序.doc_第4页
设计利用区域生长算法进行图像分割的程序.doc_第5页
资源描述:

《设计利用区域生长算法进行图像分割的程序.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、设计利用区域生长算法进行图像分割的程序1、目的:把一幅图像划分成满足某种判据的一些区域,在这里形成一个二值图。2、原理:首先确定每个区域中的某个已知点,加上与已知点相似的邻近点形成一个区域,在这里利用区域的均值。当邻近点与区域均值的差值的绝对值小于阈值T时,即满足生长条件。方法是从种子点开始,在8连通方向上生长区域,当其邻近点满足生长条件,则就并入小快区域,当新的点被合并后再用新的区域重复这一过程,直到没有可接受的邻近点时该区域生成过程终止。3、设计思路:1)通过具体观察某幅图像的直方图,估计其确定种子点范围[S1

2、,S2],并确定其阈值T;2)透过对整幅图像的扫描,找出某个区域的一个种子点:3)开始利用8连通方向,以该种子点为中心进行生成区域;4)继续用8连通方向,以该区域为中心,把邻近满足生长条件的点并入,生成新的区域;5)重复4)步,直到不再存在邻近满足生长条件的点为止,该区域生成过程结束;6)继续对图像进行扫描,寻找其他区域的一个种子点,按3)~5)的步骤进行4、程序设计根据下面的流程图可分为主函数district定义,找到种子点,判断,循环,生成区域入栈shed1function[Cut,shed1,sp1,vb]=

3、ruzhan(f,Cut1,shed11,sp11,ave,i,j,m,n,vb1)对栈shed1排序function[shed1,sp1]=arrange(shed11,sp11)入栈shed2function[shed1,sp1,shed2,sp2]=listed(shed11,sp11,T,shed21,sp21)7NNYYY把该点放入栈shed1中,并标记对应Cut中的位置值为125,当i==sp2时,令sp2=0确定种子条件S和区域生成准则T寻找符合条件的种子点,确定种子坐标,在矩阵Cut相应位置标志为0

4、把种子点周围8个点入栈shed1,并标记对应Cut中的位置为125,及对shed1的数据进行排序判断栈shed1中的数据是否存在满足准则T退出栈shed1中满足的点,依次放入栈shed2中判断其对应Cut位置的值是否为255Fori=1:sp2,依次取出栈shed2中的点,标记该点对应Cut的位置为0,并搜索该点周围的8个点判断指向shed2的指针sp2是否不为0退出栈shed1中的点,并恢复其对应Cut中的值为255区域生长算法实现流程图75、程序%district.m主函数clearclcI=imread('b

5、acteria.tif');subplot(1,2,1)imshow(I)title('初始图像');subplot(1,2,2)imhist(I)title('初始图像的直方图');%透过该直方图确定种子满足S1~S2的值(灰度值)和判定的依据阈值TS1=8;S2=70;T=33;f=double(I);[m,n]=size(I);shed1=zeros(3,round(m*n/2));%存储区域生长方向上的点和该区域的均值的绝对差值和该%点的坐标sp1=0;%sp1相当于指针,指向shed1中的最后放入的值和坐

6、标shed2=zeros(2,m);%存储符合生长条件的点的坐标sp2=0;%sp2指针,指向shed2中的最后放入点的坐标Cut=zeros(size(f));%Cut为区域生长后的新图像Cut=Cut+255;%Cut矩阵初始值设为255vb=0;%标记值,当vb=1时,即要求重新计算已有的栈shed1(1,:)的大小fori=1:mforj=1:nif(f(i,j)>S1&f(i,j)

7、图像的对应点已并入生长区域ave=f(i,j);%确定新区域的均值的起始值k=1;%设置生成的区域的象素个数[Cut,shed1,sp1,vb]=ruzhan(f,Cut,shed1,sp1,ave,i,j,m,n,vb);%把周围的8个点入%栈[shed1,sp1]=arrange(shed1,sp1);%对栈shed1的数据进行由大到小的排序[shed1,sp1,shed2,sp2]=listed(shed1,sp1,T,shed2,sp2);%%确定符合条件的生%%长点,将它从shed1中取出,并放入shed

8、2中end%根据生长点开始用8连通方式进行生长while(sp2~=0)%当sp2=0时表示找不到符合的点,if(sp2~=0)%当有新的值加入区域时,求新的平均值sum=ave*k;fort=1:sp27x=shed2(1,t);y=shed2(2,t);sum=sum+f(x,y);k=k+1;endave=sum/k;endfort=1:sp2%合并栈

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。