matlab 区域生长算法生成二值图像边界区域
function ret=growseed() %=====区域生长算法======== %input :二值图像数据 %output:边界点二值图像数据 global I;global M; global N;global Y;global T;global newy;global newx;%==边界点x,y坐标 %获取多张图片的二值数据 tempI=draw(); %tempI 36*45*numbertotal count=length(tempI(1,1,:)); wide=length(tempI(:,1,1));%36 high=length(tempI(1,:,1));%45 result=zeros(wide,high,count); for k=1:count I=tempI(:,:,k); % figure,imshow(I),title('原始图像') I=double(I); [M,N]=size(I); [seedx,seedy]=searchseed(I); Y=zeros(M,N); %作一个全零与原图像等大的图像矩阵Y,作为输出图像矩阵 T=zeros(M,N);%标记点。。。 newx=0;newy=0; calseed(seedx,seedy); figure,imshow(Y); % if k>1&&k<count % result(:,:,k)=Y; % figure,imshow(Y); % else % result(:,:,k)=T; % % imshow(T); % % figure,imshow(T); % end endret=result; endfunction calseed(seedx,seedy) global M; global N; global Y; global I; global newx; global newy;global T; for i = -1 : 1for j = -1 : 1newseedx = seedx + i;newseedy = seedy+ j;%生长准则:判断生长点8邻域内像素的各自灰度值是否与生长点所在像素灰度值相等if newseedx> 0 && newseedx <= M && newseedy > 0 && newseedy <= N &&T(newseedx,newseedy)==0&&I(newseedx,newseedy)==1T(newseedx,newseedy)=1;if isequal(newseedx,newseedy)==1calseed(newseedx,newseedy);elseY(newx,newy)=1;%set边界点值为1end endend endendfunction ret=isequal(x,y)%====判断点的领域是否相等 %===输入1个点的x,y坐标 %==返回1 相等 global I; global newx; global newy; global M; global N; ret=1; tag=0; for i = -1 : 1if tag==0for j = -1 : 1if x+i> 0 && x+i <= M && y+j > 0 && y+j <= Nif I( x+i,y+j)==0ret=0;tag=1;newx=x+i;newy=y+j;endendendend endendfunction [x,y]=searchseed(I) %=========寻找种子点===== %Input:一张二值数据的图片 %Output:返回种子点的x,y坐标%======求数据为1的质心==== [M,N]=size(I); corx=0; cory=0; count=0; for i=1:Mfor j=1:Nif I(i,j)==1corx=corx+i;cory=cory+j;count=count+1;endend end x=round(corx/count); y=round(cory/count);end
处理结果
转载于:https://www.cnblogs.com/geekvan/p/8663385.html
matlab 区域生长算法生成二值图像边界区域相关推荐
- java实现区域生长算法_matlab 区域生长算法生成二值图像边界区域
function ret=growseed() %=====区域生长算法======== %input :二值图像数据 %output:边界点二值图像数据 global I;global M; glo ...
- SVPWM仿真和基于DSP28335的PIL(处理器在环) 仿真模型(将matlab仿真算法生成代码在DSP中在线运行返回数据给Matlab)验证算法可行性和实时性
SVPWM仿真和基于DSP28335的PIL(处理器在环) 仿真模型(将matlab仿真算法生成代码在DSP中在线运行返回数据给Matlab)验证算法可行性和实时性. 对于数字信号处理很有用. ID: ...
- matlab练习程序(二值图像连通区域标记法,一步法)
这个只需要遍历一次图像就能够完全标记了.我主要参考了WIKI和这位兄弟的博客,这两个把原理基本上该介绍的都介绍过了,我也不多说什么了.一步法代码相比两步法真是清晰又好看,似乎真的比两步法要好很多. 代 ...
- 区域生长算法原理及MATLAB实现
1. 基于区域生长算法的图像分割原理 数字图像分割算法一般是基于灰度值的两个基本特性之一:不连续性和相似性.前一种性质的应用途径是基于图像灰度的不连续变化分割图像,比如图像的边缘.第二种性质的主要应用 ...
- java实现区域生长算法_区域生长算法(附MATLAB代码实现)
标签: 一.理论概念 区域生长是按照事先定义的生长准则将一个像素或者子区域逐步聚合成一个完整独立的连通区域过程.对于图像感兴趣目标区域R,z为区域R上事先发现的种子点,按照规定的生长准则逐步将与种子点 ...
- OpenCv连通区域分析——Two-Pass 算法区域生长算法
连通区域(Connected Component)一般是指图像中具有相同像素值且位置相邻的前景像素点组成的图像区域.连通区域分析是指将图像中的各个连通区域找出并标记,通常连通区域分析处理的对象是一张二 ...
- Matlab形态学图像处理:二值图像分割 标记连通区域和重心位置 删除连通区域
Matlab形态学图像处理:二值图像分割 标记连通区域和重心位置 删除连通区域 [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/detail ...
- 【机器视觉学习笔记】二值图像连通区域提取算法(C++)
目录 原理 二值图像 连通区域(Connected Component) 连通区域分析(Connected Component Analysis,Connected Component Labelin ...
- 区域生长算法(附MATLAB代码实现)
一.理论概念 区域生长是按照事先定义的生长准则将一个像素或者子区域逐步聚合成一个完整独立的连通区域过程.对于图像感兴趣目标区域R,z为区域R上事先发现的种子点,按照规定的生长准则逐步将与种子点z一定邻 ...
最新文章
- shllter自动和手动实例
- ::selection 制作空心字
- Sqlserver 如何获取每组中的第一条记录
- 按职称分类统计人数access_建设工程监理从业人员超120万!2019年统计公报发布了!...
- Angular5 *ngIf 和 hidden 的区别
- 双系统重装win7/Xp后如何恢复ubuntu引导--转载
- High ASCII字符从bat文件到dos控制台的转化问题
- uni-app发布为H5页面白屏问题
- 1.《Spring学习笔记-MVC》系列文章,讲解返回json数据的文章共有3篇,分别为:...
- SQL日志文件损坏或丢失造成数据库置疑的解决办法
- 微信免费检测僵尸粉方法,微信免费检测僵尸粉工具
- 简述ip地址的abc类如何划分_IP地址ABC类解释
- 教你如何用bat程序给电脑清理缓存垃圾(普通版)
- mysql 免安装 net_mysql 免安装
- Error C4668 : ‘USE_RTTI‘ is not defined as a preprocessor macro, replacing with ‘0‘ for ‘#if/#elif‘
- 程序员常用资源工具集合
- 大数据毕设 - 大数据二手房数据分析与可视化(python 爬虫)
- 微信小程序 非webview分享给好友及生成分享海报
- nodejs中的读取文件fs与文件路径path
- 喜签中电32所,DevSui喜签中电32所,DevSuite助力管控项目研发全过程