资源简介
采用区域生长的方式分割图像,用户可以用鼠标在其中选取一个种子点并按下回车键,之后会出现分割结果。
代码片段和文件信息
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文件,有实验介绍和调试
相关资源
- 巴特沃兹滤波器m文件,有实验介绍和
- Matlab指纹图像分割实验报告
- 无人驾驶车辆模型预测控制配套matl
- 基于matlab的QPSK仿真
- OFDM基于循环前缀的最大似然同步算法
- 结构动力学编程matlab
- 排队理论 Matlab仿真
- gmm matlab 代码
- 卡尔曼滤波跟踪视频目标matlab程序
- MATLAB 水和水蒸气计算函数
- MATLAB免疫遗传算法,在物流中心选址
- 整数规划思想求解数独游戏
- 形状上下文 代码 MATLAB
- 彩色遥感图像分类算法及 Matlab实现
- GMM Libraries for Matlab
- MATLAB迭代法计算信道容量
- PLA简单matlab实现
- 电流滞环整流matlab仿真模型
- 有源电力滤波器matlab仿真模型
- MATLAB ask psk fsk dpsk调制解调
- MATLAB仿真6个用户的CDMA的同步通信
- MATLAB单双目标定工具箱
- 分数阶PID的matlab工具箱
- T-S模糊辨识与广义预测控制MATLAB源程
- BP算法的改进在Matlab的实现研究
- 人脸识别系统 现成的matlab代码
- svpwm的matlab仿真227144
- 基于DWT的数字水印算法的MatLab实现
- yalmip 工具包
- 量子聚类算法matlab实现
评论
共有 条评论