1、数字图像处理 实验四一、 实验目的1、 学习图像分割的概念及意义,重点掌握图像分割区域生长法。2、 理解灰度级门限化的概念并掌握其应用。3、 学习基于区域的分割技术,理解区域生长的意义并实现应用。二、 实验原理1、 图像分割的概念及其算法图象分割把图象空间按照一定的要求分成一些需要的那一部分的区域的技术。图像分割算法一般是基于亮度值的两个基本特征之一:不连续性和相似性。基于亮度的不连续变化分割图像一般应用在图像的边缘;依据事先指定的准则将图像分割为相似的区域的应用一般在门限处理、区域生长、区域分离与聚合等方面。2、 灰度级门限化一般来说图象是由具有不同灰度级的两类区域组成的,其特点为直方图具有
2、两个峰,分别与两个灰度级范围相对应,故可选择一个门限,将两个峰分开。比如想从亮的背景中分离出暗的物体,则可选择一门限值 T 将象素分为“亮”的和“暗” 的两类,从而把对象和背景分开。另外根据不同的需要,门限选择的方式有很多种,如半门限、双门限、可变门限、局部特征值门限化等。本次试验运用门限法寻找图像中的头骨,选择了两个门限来处理。3、 基于区域的分割区域生长是一种根据事前定义的准则将像素或子区域聚合成更大区域的过程。基本方法是以“种子”点开始将与种子性质相似(本实验中为灰度级的特定范围)的相邻像素附加到生长区域的每个种子点上。当没有像素满足加入这个区域的生长条件时,区域生长就会停止。本次实验首
3、先要辅助设定一个只存放“1” 、 “0”的矩阵,这是由于一幅图象通常是由代表物体的图案与背景组成,简称物体与背景;若想从一幅图象中“提取”物体,可以设法用专门的方法标出属于该物体的点,如把物体上的点标为“1”,而把背景点标为“0”,通过分割以后,可得一幅二值图象。通过这点我们可以由该矩阵最终“1”的个数与分布看来确定何时退出循环和得到最终的分割图像。接下来就是区域生长的过程,从种子点开始,在各个方向上生长出区域(实验中是四邻域) ,判断每一步所接受的邻近点的灰度级与先前物体的平均灰度级相差是否在设定值之内。另外整个实验中应保证原矩阵和辅助矩阵的对应关系,外加大循环则保证每个新生的点不被遗漏。三
4、、 实验过程及结果1、 区域生长分割区域由图像分割的前三幅图可知,当各个像素与种子之间的灰度级绝对差选择不同的时候,我们可以得到不同的结果;大概在 n=50 左右得到的分割图像是最好的。另一方面,我在第一次选择种子点时取的值相对较偏,比如取 seed=A(64,64),当 n=50 时,得到的即如果就不一样,我认为取 A(64,128)效果更佳。2、 门限寻找头骨没什么技术可言,主要是上下门限的选择问题;实验中由于原图像中个别灰度值的接近,仅用门限法是无法将我们需要的信息和不相关信息区分开的,因此图像中出现了一些小白点及原本不该出现的部位。实验 maltab 代码:function Image
5、_P(Row,Column,T)%Row 为矩阵的行号,Column 为矩阵的列号%T 为区域设置的阈值fp=fopen(d:Eimage_007.img,r);M=256;N=256;c=fread(fp,M*N,float64);fclose(fp);%将读取出来的向量转化为 256256 矩阵for m=1:Mfor n=1:NImage(m,n)=c(m-1)*256+n);end endsubplot(121);imshow(Image,1,256);title(原始的图像);Image1=ones(M+2,N+2);%设置一个矩阵模版使得原矩阵边界的 8 领域有效Queue1=Ro
6、w,Column; %将种子点的坐标放置于队列 1 中seed=Image(Row,Column);Image1(2:M+1,2:N+1)=zeros(M,N);Image1(Row+1,Column+1)=1;%将位于一块区域的位置作 1 标记num=0;sum=Image(Row,Column);Image_Out=256*ones(M,N);%将输出的矩阵初始化为白板Image_Out(Row,Column)=Image(Row,Column);num1=1;while num1=num seed=sum/num1;num2=num;num=num1; for m=1:num1-num2
7、Row=Queue1(m,1);Column=Queue1(m,2);for i=-1:1for j=-1:1 if Image1(Row+i+1,Column+j+1)=0Image1(Row+i+1,Column+j+1)=1;%为种子点作 1 标记num1=num1+1;Queue2(num1-num,:)=Row+i,Column+j;%新产生的种子点的坐标置于队列 2中sum=sum+Image(Row+i,Column+j); %累加种子点之和 endendendendQueue1=0,0;Queue1=Queue2;%将对列 2 的值交换给对列 1 之后置 0Queue2=0,0
8、;endsubplot(122)imshow(Image_Out,1,256)title(区域生长之后的图像)(1)分割大脑坐标为种子点的坐标为(100,100)阈值 T=38;得到的是大脑的区域生长坐标为(100,100)阈值为 T=45从上述的不同的阈值可以看出,在 T=45 阈值有点大,将一部分不是大脑的区域包括进来了;经过不断的尝试 T 值和种子的坐标,我们认为在种子为(100,100) ,T=38 时,得到的是一个比较理想的生长区域;(2)分割头骨种子的坐标为(4,180);阈值为 T=45,取得的是后半部分的头骨种子点(49,51);T=29 取得的另一半的头骨将前后部分的头骨合并合并后图像:四 实验小结:本次试验重点了解和理解了区域生长法的原理和选择种子点的一些技巧,在选取种子点的时候,要是需要分割的是白色的骨头,应该选择像素值较大的种子,那样分割出来的效果才是比较理想的,若是种子点的选取不好,那么会导致一些分割的结果不理想,比如阈值 T 稍微大一点,会得到一些不该有的区域,而阈值稍微小一些,就会出现一些本该有的区域没有得到分割出来。因此,种子点的选取时实验一个比较关键的地方。总体来说,这次实验的比较成功的