




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本文使用matlab编了一个程序,实现区域生长。具体思路是这样的:从灰度图像中取一点作为种子(其实程序略微修改就可实现多个种子点生长,但个人觉得不是很必要),记为P(i,j)。然后,按P点的上-右-下-左-上的顺序一层一层地生长出去。没一层距离P的距离分别记为a,b,c,d,没生长一次,a,b,c,d的值加1,并在下一层生长前判断是否到达图像边界(注意是边界不是边缘),直到生长完成。话不多说,具体程序如下:%区域生长法分割图像。每轮生长都是由上到下,从左到右map1=imread(picturename.jpg);m,n,dep=size(map1); %行,列,深度值A=zeros(m,n);%灰度化for i=1:m for j=1:n A(i,j)=0.11*map1(i,j,1)+0.59*map1(i,j,2)+0.3*map1(i,j,3); endend%灰度化完成,输出灰度图figure(1)imshow(A,)title(原始灰度图像)B=zeros(m,n); %存储输出图像fprintf(请取一个目标点,结束后回车n)x1,y1=getpts; %获得区域生长起始点i=round(x1); %横坐标取整j=round(y1); %纵坐标取整seed=A(i,j)B(i,j)=255; %种子点提取T=input(请输入生长阈值T(0T255)n)a=1;b=1;c=1;d=1; %四个方向的计数器h=0;while ai|b=n-j|c=m-i|dj %有一侧没到边界,继续生长 %以下为上侧生长程序 while ai %ai,只执行一次(用break来保证) mina=max(j-a,1); maxa=min(j+a,n); %找出两侧端点,此时只需考虑列 for k=mina:maxa if k=mina %若为左端点 if B(i-a+1,k)=255|B(i-a+1,k+1)=255 %且下或右下存在种子,进行下面的判断 if abs(A(i-a,k)-seed)T B(i-a,k)=255; else B(i-a,k)=0; end end else if k=maxa %若为右端点 if B(i-a,k-1)=255|B(i-a+1,k-1)=255|B(i-a+1,k)=255 %且左或左下或下存在种子,进行下面的判断 if abs(A(i-a,k)-seed)T B(i-a,k)=255; else B(i-a,k)=0; end end else %k不为端点,则需检测左、左下、下和右下 if B(i-a,k-1)=255|B(i-a+1,k-1)=255|B(i-a+1,k)=255|B(i-a+1,k+1)=255 %左下、下或右下存在种子,则进行下面的判断 if abs(A(i-a,k)-seed)T B(i-a,k)=255; else B(i-a,k)=0; end end end end end a=a+1; break; end %上侧完成一次生长,以下为右侧生长程序 while b=n-j minb=max(i-b,1); maxb=min(i+b,m); %找出两侧端点,此时则只需考虑行 for k=minb:maxb if k=minb %若为上端点 if B(k,j+b-1)=255|B(k+1,j+b-1)=255 %且左或左下存在种子,进行下面的判断 if abs(A(k,j+b)-seed)T B(k,j+b)=255; else B(k,j+b)=0; end end else if k=maxb %若为下端点 if B(k-1,j+b)=255|B(k-1,j+b-1)=255|B(k,j+b-1)=255 %且左或左上或上存在种子,进行下面的判断 if abs(A(k,j+b)-seed)T B(k,j+b)=255; else B(k,j+b)=0; end end else %k不为端点,则需检测上、左上、左和左下 if B(k-1,j+b)=255|B(k-1,j+b-1)=255|B(k,j+b-1)=255|B(k+1,j+b-1)=255 %左下、下或右下存在种子,则进行下面的判断 if abs(A(k,j+b)-seed)T B(k,j+b)=255; else B(k,j+b)=0; end end end end end b=b+1; break; end %右侧完成一次生长,以下为下侧生长程序 while c=m-i %ai,只执行一次(用break来保证) minc=max(j-c,1); maxc=min(j+c,n); %找出两侧端点,此时只需考虑列 for k=minc:maxc if k=mina %若为左端点 if B(i+c-1,k)=255|B(i+c-1,k+1)=255 %且上或右上存在种子,进行下面的判断 if abs(A(i+c,k)-seed)T B(i+c-1,k)=255; else B(i+c-1,k)=0; end end else if k=maxc %若为右端点 if B(i+c,k-1)=255|B(i+c-1,k-1)=255|B(i+c-1,k)=255 %且左或左上或上存在种子,进行下面的判断 if abs(A(i+c,k)-seed)T B(i+c,k)=255; else B(i+c,k)=0; end end else %k不为端点,则需检测左、左上、上和右上 if B(i+c,k-1)=255|B(i+c-1,k-1)=255|B(i+c-1,k)=255|B(i+c-1,k+1)=255 %左、左上、上或右上存在种子,则进行下面的判断 if abs(A(i+c,k)-seed)T B(i+c,k)=255; else B(i+c,k)=0; end end end end end c=c+1; break; end %下侧完成一次生长,以下为左侧生长程序 while dj mind=max(i-d,1); maxd=min(i+d,m); %找出两侧端点,此时则只需考虑行 for k=mind:maxd if k=mind %若为上端点 if B(k,j-d+1)=255|B(k+1,j-d+1)=255 %且右或右下存在种子,进行下面的判断 if abs(A(k,j-d)-seed)T B(k,j-d)=255; else B(k,j-d)=0; end end else if k=maxd %若为下端点 if B(k-1,j-d)=255|B(k-1,j-d+1)=255|B(k,j-d+1)=255 %且上或右上或右存在种子,进行下面的判断 if abs(A(k,j-d)-seed)T B(k,j-d)=255; else B(k,j-d)=0; end end else %k不为端点,则需检测上、右上、右和右下 if B(k-1,j-d)=255|B(k-1,j-d+1)=255|B(k,j-d+1)=255|B(k+1,j-d+1)=255 %上、右上
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业互联网平台数据备份2025年备份恢复策略在智慧城市中的应用
- 2025年学前教育机构师资队伍教师培训效果评价与改进报告
- 2025年中国高速传输铜箔行业市场分析及投资价值评估前景预测报告
- 第14课《水调歌头·明月几时有》教学设计统编版语文九年级上册
- 2024-2025学年年高中政治 第四单元 当代国际社会 9.1 国际社会的主要成员:主权国家和国际组织说课稿2 新人教版必修2
- 医养结合养老机构运营中的医疗资源整合与社区医疗服务报告
- Integrated skills说课稿-2025-2026学年高中英语牛津译林版2020选修第二册-译林版2020
- 2025年光储充一体化项目在新能源汽车充电站的安全性评估报告
- 《数学记录天气》(教学设计)-六年级下册数学冀教版
- 第二章《声现象》单元教学设计和课时作业设计 苏科版八年级物理上册
- 简单离婚协议书模板
- 生猪定点屠宰场申请书
- 康复医学概论课件
- 2025年《公共基础知识》试题库(附答案)
- 高二《复活》课文解读
- 大圆满前行考试题及答案
- 【衢州】2025年浙江衢州市柯城区属事业单位招聘工作人员17人笔试历年典型考题及考点剖析附带答案详解
- 钢构农业大棚建设项目可行性研究报告
- 非货币支付管理办法
- 湖北省武汉2025-2026学年度高一上学期开学分班考试-英语(解析版)
- 2025年宜昌专业技术人员公需科目培训考试题及答案
评论
0/150
提交评论