自动阈值迭代法及Otsu法实验报告_第1页
自动阈值迭代法及Otsu法实验报告_第2页
自动阈值迭代法及Otsu法实验报告_第3页
自动阈值迭代法及Otsu法实验报告_第4页
自动阈值迭代法及Otsu法实验报告_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上数字图像处理实验自动阈值迭代法及Otsu法姓名:学好:指导老师:王韬时间:2012年5月自动阈值迭代法及Otsu法实验报告1、 实验原理 大津法由大津于1979年提出,对图像Image,记t为前景与背景的分割阈值,前景点数占图像比例为w0,平均灰度为u0;背景点数占图像比例为w1,平均灰度为u1。图像的总平均灰度为:u=w0*u0+w1*u1。从最小灰度值到最大灰度值遍历t,当t使得值g=w0*(u0-u)2+w1*(u1-u)2 最大时t即为分割的最佳阈值。对大津法可作如下理解:该式实际上就是类间方差值,阈值t分割出的前景和背景两部分构成了整幅图像,而前景取值u0,

2、概率为 w0,背景取值u1,概率为w1,总均值为u,根据方差的定义即得该式。因方差是灰度分布均匀性的一种度量,方差值越大,说明构成图像的两部分差别越大, 当部分目标错分为背景或部分背景错分为目标都会导致两部分差别变小,因此使类间方差最大的分割意味着错分概率最小。 2、 实验步骤自动阈值(迭代法)步骤 (1)估计一个阈值T(比如均值) (2)用阈值T将灰度直方图分割成两个区域R1、R2 (3)分别计算两个区域R1、R2内的灰度平均值u1和u2 (4)选择新阈值T=(u1+u2)/2(5)重复上述工作35次,直到前后两次的阈值不变自动阈值(Otsu法)步骤 (1).计算直方图 (2).设置初值:w

3、i(0)以及ui(0) (3).从1到最大值设置阈值T。更新wi (t)以及ui (t)。计算b(t) * b(t)。 (4).选取最大b(t) * b(t)对应的T3、 实验程序#include <afx.h>#include <windows.h>#include <iostream.h>#include <stdlib.h>#include <math.h>int nWidth; /图像宽度int nHeight; /图像高度int nColorBits; /每个像素所占位数int nColor; /图像颜色数int nLen;

4、 /图像文件大小,以字节数计int nByteWidth; /图像每行字节数BYTE *lpBitmap; /指向图像首字节的指针BYTE *lpBits; /指向图像实际数据的指针void OpenFile(CString FileName);void SaveFile(CString FileName);void OtusTHreshold(void);/*函数名称OpenFile() 功能:读取一幅BMP图像*/void OpenFile(CString FileName)/创建文件语句HANDLE hFile=:CreateFile(FileName,GENERIC_READ,FILE

5、_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);if(hFile=0)printf("不能打开文件,请重新选择!n");return; /读取图像文件 DWORD WriteNum; BITMAPFILEHEADER BFH;/文件头 ReadFile(hFile,&BFH,14,&WriteNum,NULL);/读取文件头,共14个字节 if(BFH.bfType!='MB')|(WriteNum!=sizeof(BITMAPFILEHEADER) printf(&quo

6、t;不是BMP位图文件或数据有误!n"); return; nLen=GetFileSize(hFile,NULL)-sizeof(BITMAPFILEHEADER);/获取文件的长度 lpBitmap=new BYTEnLen;/存放图像,包括图像的信息头、调色板和像素数据 ReadFile(hFile,lpBitmap,nLen,&WriteNum,NULL);/读取图像数据 /设置全局变量的值 BITMAPINFOHEADER *BIH=(BITMAPINFOHEADER *)lpBitmap);/图像文件的信息头 nWidth=BIH->biWidth;/图像的

7、宽度 nHeight=BIH->biHeight;/图像的高度 nColorBits=BIH->biBitCount;/图像的颜色数 nByteWidth=(nWidth*nColorBits+31)/32*4;/图像的扫描宽度 nColor=(nColorBits>8)?0:(1<<nColorBits);/调色板中的颜色数 lpBits=lpBitmap+sizeof(BITMAPINFOHEADER)+sizeof(RGBQUAD)*nColor;/指向图像数据的实际位置CloseHandle(hFile);/关闭文件句柄/*函数名称SaveFile() 功

8、能:保存一幅BMP图像*/void SaveFile(CString FileName)/创建一个文件来保存图像文件 HANDLE hFile=:CreateFile(FileName,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);if(hFile=0)printf("不能创建文件,请重新选择!n");return;/创建一个文件头,并保存到创建的文件中unsigned long WriteNum; BITMAPFILEHEADER BFH;BFH.bfType=&

9、#39;MB'BFH.bfSize=nLen+sizeof(BITMAPFILEHEADER); BFH.bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+nColor*sizeof(RGBQUAD);BFH.bfReserved1=BFH.bfReserved2=0;WriteFile(hFile,&BFH,sizeof(BITMAPFILEHEADER),&WriteNum,NULL);/保存改变的位图文件数据WriteFile(hFile,(BITMAPINFOHEADER*)lpBitmap,

10、nLen,&WriteNum,NULL);CloseHandle(hFile);/关闭文件句柄/*图像分割Otsu法*/void Otus(void)int i,j;/循环变量int nGrayHistogram256;/灰度直方图数组,并初始化memset(nGrayHistogram,0,sizeof(nGrayHistogram);/统计各个灰度级对应的像素个数,并存放到灰度直方图数组中int nPixel;for(j=0;j<nHeight;j+)for(i=0;i<nWidth;i+)nPixel=lpBitsnByteWidth*j+i;/获取当前像素点的灰度值

11、nGrayHistogramnPixel+;/对灰度值统计计数float u0,u1;/c0组和c1组的均值float w0,w1;/c0组和c1组的概率int nCount0;/c0组的像素总数int nT,nBestT;/阈值和最佳阈值(对应方差最大时的阈值)float fVaria,fMaxVaria=0;/方差和最大方差/统计直方图中像素点的总数,并存放到nSum中int nSum=0;for(i=0;i<256;i+) nSum+=nGrayHistogrami;/令阈值nT从0遍历到255for(nT=0;nT<256;nT+)/当阈值为nT时,计算c0组的均值和概率u

12、0=0;nCount0=0;for(i=0;i<=nT;i+)u0+=i*nGrayHistogrami;nCount0+=nGrayHistogrami;u0/=nCount0;w0=(float)nCount0/nSum;/当阈值为nT时,计算c1组的均值和概率u1=0;for(i=nT+1;i<256;i+)u1+=i*nGrayHistogrami;u1/=(nSum-nCount0);w1=1-w0;fVaria=w0*w1*(u0-u1)*(u0-u1);/计算两组间的方差 if(fVaria>fMaxVaria)/记录最大方差和最佳阈值fMaxVaria=fVaria;nBestT=nT;/利用最佳阈值对源图像作分割处理for(j=0;j<nHeight;j+)for(i=0;i<nWidth;i+)if(lpBitsj*nByteWidth+i<nBestT)lpBitsj*nByteWidth+i=0;elselpBitsj*nByteWidth+i=255;void main()char OpenFileName200;char SaveFileName200;cout<<"请输入图像路径"<< endl;gets(OpenFileName)

温馨提示

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

评论

0/150

提交评论