区域生长原理
步骤:
1.选取区域生长的起始点(种子)
2.确定区域生长的规则
3.确定结束生长的条件
4.寻找符合生长条件的点,纳入生长区域
5.以新纳入的点作为种子,继续步骤4,直到满足结束生长条件
理论基础
图像中同一个物体的像素往往具有一定的相似性,或许表现在颜色上,或许表现在明暗上,特别是在物体的边缘部分,像素的性质会发生比较明显的改变,这个相似性可以做为将其与其他物体区分开来的特征。而区域生长从某一点开始寻找周围与其在某些性质上相似的像素点(比如像素差值在某一阈值内的点),将其纳入同一个区域,从而可以将属于同一个物体的部分图片分割出来。
matlab代码
本人基于以上认识,编写区域生长的程序。该程序可以实现多种子区域生长,将物体与背景分割开来。本实验所用的图片如下
实验代码如下
function My_RegionGrowing(I,reg_maxdist)
%J=My_RegionGrowing(I,1);
close all
imshow(I);title('点击图片获取区域生长起始点');hold on;
[y0,x0]=ginput();%获取鼠标位置
plot(y0,x0,'p');hold off;%打起始印点
y0=int16(y0);%数据转换,防止矩阵索引错误
x0=int16(x0);
I=int16(I);%数据转换,uint8-->int16。使得像素差值可以为负数
[row, col] = size(I); % 输入图像的维数
[p_c1,p_c2]=size(y0); % 起始点