图像分割实验报告_第1页
图像分割实验报告_第2页
图像分割实验报告_第3页
图像分割实验报告_第4页
图像分割实验报告_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、图像分割实验报告一、 实验目的1. 掌握图像分割的基本思想,了解其分割技术及其计算策略;2. 学会从图像处理到分析的关键步骤,掌握图像分割过程;3. 了解图像分割的意义,进一步加深对图像分析和理解;4. 掌握基本分割方法:迭代分割和OTSU图像分割,并编程实现。二、 实验原理(一)迭代阈值分割选取的基本思路是:首先根据图像中物体的灰度分布情况,选取一个近似阈值作为初始阈值,一个较好的方法就是将图像的灰度均值作为初始阈值,然后通过分割图像和修改阈值的迭代过程获得认可的最佳阈值。迭代式阈值选取过程可描述如下:1. 计算初始化阈值g0=(gmax+gmin)2;2. 根据 g0,将图像分为两部分,分

2、别计算灰度值期望,取其平均值为 g1;3. 如此反复迭代,当|gn -gn-1|足够小时,停止迭代,取T=gn 即为最终阈值。(二)OTSU图像分割(最大类间方差法)是一种自适应的阈值确定的方法,是按图像的灰度特性,将图像分成背景和目标两部分。背景和目标之间的类间方差越大,说明构成图像的两部分的差别越大, 当部分目标错分为背景或部分背景错分为目标都会导致两部分差别变小。因此,使类间方差最大的分割意味着错分概率最小。以最佳门限将图像灰度直方图分割成两部分,使两部分类间方差取最大值,即分离性最大。OTSU阈值选取过程可描述如下:1.记T为目标与背景的分割阈值,目标点数占图像比例为w1, 平均灰度为

3、u1;背景点数占图像比例为w2,平均灰度为u1;2.图像的总平均灰度为:u=w1*u1+w2*u2;3.目标和背景图象的方差:g=w1*(u1-u)*(u1-u)+w1*(u2-u)*(u2-u)=w1*w2*(u1-u2)*(u1-u2);4.当方差g最大时,可以认为此时前景和背景差异最大,此时的灰度T是最佳阈值。二、实验内容1. 利用C+编程实现迭代阈值图像分割算法;2. 利用C+编程实现OTSU动态阈值图像分割算法。三、实验框图找出图像灰度值最大值max ,最小值min开始1.迭代分割T=(max+min)/2;iF256=0;iB256=0;F256=0;B256=0iBk+;Bk+x

4、(i,j)NiFk+;Fk+x(i,j)X(i , j)?>TYYY结束j<255i<255i=0NYi+Tmp=TTmp= (u1+u2)/2;Nj+T=Tmpu1=Fk/iFk;u2=Bk/iBk; YNx(x,j)=255x(x,j)=0x(x,j)?>TNYj=0K+NK<255k=0找出灰度值max ,min开始2.OSTUiF256=0;iB256=0;F256=0;B256=0;T=0iBk+;Bk+x(i,j)NiFk+;Fk+x(i,j)X(i , j)?>TYYY结束j<255i<255i=0i+w1=iFk/(256*256

5、);w2=iBk/(256*256);u1=Fk/iFk;u2=Bk/iBk; Tmp=w1k*(u1k-u)*(u1k- u)+w2k*(u2k-u)*(u2k-u);Nj+YNx(x,j)=255x(x,j)=0x(x,j)?>TNT1=Tmp;T=kYTmp>TYj=0K+NK<=maxk=min四、实验结果与分析图 1原图图 2迭代图像分割图 3OTSU图像分割实验分析:由图2可知:迭代所得的阈值分割的图象效果良好,能区分出图像的目标和背景的主要区域,但在图像的细微处还没有很好的区分度。部分区域微小数据的变化(如机翼五角星标识下方)引起分割效果的明显改变,目标和背景的

6、数据只是稍有变化但分割效果却反差极大。由图可得:对于直方图双峰不明显或图像目标和背景比例差异悬殊迭代法所选取的阈值不如最大类间方差法(OTSU)(差异不是很大,很细微)。但是对于直方图双峰明显谷底较深的图像迭代分割可以较快地获得满意结果。五、实验程序段(具体见实验框架)1.迭代图像分割:void CImageProcessingDoc:Onimagediedaifenge() / TODO: Add your command handler code hereint m_Width, m_Height, m_SaveWidth;int i,j,k,T,Tmp;double Foreground

7、Sum=0,BackgroundSum=0,u1,u2,min=255,max=0; m_Width = m_pDibInit->GetWidth();m_Height = m_pDibInit->GetHeight();m_SaveWidth = m_pDibInit->GetSaveWidth();int m,iForeground=0,iBackground=0;for(j=0;j<m_Height;j+) for(i=0;i<m_Width;i+)if (m_pDibInit->m_pDibBitsj*m_SaveWidth + i)>=max

8、)max=m_pDibInit->m_pDibBitsj*m_SaveWidth + i;/求最大灰度值if (m_pDibInit->m_pDibBitsj*m_SaveWidth + i)<=min)min=m_pDibInit->m_pDibBitsj*m_SaveWidth + i;/求最小灰度值T=int(max+min)/2);/T为迭代初始阈值for(k=0;k<255;k+) for(j=0;j<m_Height;j+) for(i=0;i<m_Width;i+)m=m_pDibInit->m_pDibBitsj*m_SaveWi

9、dth + i;if(m>=T) iForeground=iForeground+1; ForegroundSum=ForegroundSum+double(m); else iBackground=iBackground+1; BackgroundSum=BackgroundSum+double(m);/根据阈值对图像目标和背景分类u1=ForegroundSum/iForeground; u2=BackgroundSum/iBackground; Tmp=int(u1+u2)/2); /新的迭代阈值if(Tmp=T) break; /迭代结束,分割阈值为Tmpelse T=Tmp;C

10、String msg;msg.Format("分割阈值T=%d",T);AfxMessageBox(msg);for(j=0;j<m_Height;j+) for(i=0;i<m_Width;i+)if (m_pDibInit->m_pDibBitsj*m_SaveWidth + i>=T)m_pDibInit->m_pDibBitsj*m_SaveWidth + i=255;elsem_pDibInit->m_pDibBitsj*m_SaveWidth + i=0;UpdateAllViews(NULL);2.OTSU图像分割:void

11、 CImageProcessingDoc:OnimageOTSU() / TODO: Add your command handler code hereint m_Width, m_Height, m_SaveWidth;m_Width = m_pDibInit->GetWidth();m_Height = m_pDibInit->GetHeight();m_SaveWidth = m_pDibInit->GetSaveWidth();int i,j,k;double ForegroundSum256=0,BackgroundSum256=0,u1256=0,u2256=0

12、;double w1256=0,w2256=0,iForeground256=0,iBackground256=0; double Tmp=0.0,u,T1=0.0,sum=0;int m,min=255,max=0,T=0;for(j=0;j<m_Height;j+) for(i=0;i<m_Width;i+)if (m_pDibInit->m_pDibBitsj*m_SaveWidth + i)>=max)max=m_pDibInit->m_pDibBitsj*m_SaveWidth + i;/求最大灰度值if (m_pDibInit->m_pDibBi

13、tsj*m_SaveWidth + i)<=min)min=m_pDibInit->m_pDibBitsj*m_SaveWidth + i;/求最小灰度值for(k=min;k<=max;k+)/遍历图像中所有灰度值for(j=0;j<m_Height;j+) for(i=0;i<m_Width;i+)m=m_pDibInit->m_pDibBitsj*m_SaveWidth + i;if(m>k) iForegroundk=iForegroundk+1; /目标点数ForegroundSumk=ForegroundSumk+m; /目标区域灰度值之和

14、else iBackgroundk=iBackgroundk+1; /背景点数BackgroundSumk=BackgroundSumk+m;/背景区域灰度值之和w1k=double(iForegroundk/(m_Width*m_Height);/目标点数占图像比例w2k=double(iBackgroundk/(m_Width*m_Height);/背景点数占图像比例u1k=double(ForegroundSumk/iForegroundk); /目标区域平均灰度u2k=double(BackgroundSumk/iBackgroundk); /背景区域平均灰度u=w1k*u1k+w2k*u2k;/图像总平均灰度Tmp=w1k*(u1k-u)*(u1k-u)+w2k*(u2k-u)*(u2k-u);if(Tmp>=T1) T1=Tmp;T=k;/求出最大Tmp,找出最佳阈值TCString msg;msg.Format("最佳阈值T=%d",T);AfxMessage

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论