资源简介
采用区域生长的方式分割图像,用户可以用鼠标在其中选取一个种子点并按下回车键,之后会出现分割结果。

代码片段和文件信息
function J = regionGrow(I)
% 区域生长,需要以交互方式设定初始种子点,具体方法为鼠标单击图像中一点后,按下回车键
%
% 输入:I - 原图像
% 输出:J - 输出图像
if isinteger(I)
I=im2double(I);
end
figureimshow(I)title(‘原始图像‘)
[MN]=size(I);
[yx]=getpts; %获得区域生长起始点
x1=round(x); %横坐标取整
y1=round(y); %纵坐标取整
seed=I(x1y1); %将生长起始点灰度值存入seed中
J=zeros(MN); %作一个全零与原图像等大的图像矩阵J,作为输出图像矩阵
J(x1y1)=1; %将J中与所取点相对应位置的点设置为白
sum=seed; %储存符合区域生长条件的点的灰度值的和
suit=1; %储存符合区域生长条件的点的个数
count=1; %记录每次判断一点周围八点符合条件的新点的数目
threshold=0.15; %阈值,注意需要和double类型存储的图像相符合
while count>0
s=0; %记录判断一点周围八点时,符合条件的新点的灰度值之和
count=0;
for i=1:M
for j=1:N
if J(ij)==1
if (i-1)>0 && (i+1)<(M+1) && (j-1)>0 && (j+1)<(N+1) %判断此点是否为图像边界上的点
for u= -1:1 %判断点周围八点是否符合阈值条件
for v= -1:1
if J(i+uj+v)==0 && abs(I(i+uj+v)-seed)<=threshold&& 1/(1+1/15*abs(I(i+uj+v)-seed))>0.8
J(i+uj+v)=1;
%判断是否尚未标记,并且为符合阈值条件的点
%符合以上两条件即将其在J中与之位置对应的点设置为白
count=count+1;
s=s+I(i+uj+v); %此点的灰度之加入s中
end
end
end
end
end
end
end
suit=suit+count; %将n加入符合点数计数器中
sum=sum+s; %将s加入符合点的灰度值总合中
seed=sum/suit; %计算新的灰度平均值
end
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 37906 2012-11-25 10:06 coins.png
文件 1943 2012-11-25 10:11 regionGrow.m
文件 240 2012-11-25 10:19 程序说明.txt
----------- --------- ---------- ----- ----
40089 3
- 上一篇:Matlab指纹图像分割实验报告
- 下一篇:巴特沃兹滤波器m文件,有实验介绍和调试
相关资源
- matlab_OFDM调制解调(来自剑桥大学)
- Matlab路面裂缝识别69319
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 基于MATLAB的质点弹道计算与外弹道优
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
- 通过不同方法进行粗糙集属性约简m
评论
共有 条评论