您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业财务 > 大津法原理-otsu-
最大类间方差法(大津法,OTSU)最大类间方差法是由日本学者大津(NobuyukiOtsu)于1979年提出的,是一种自适应的阈值确定的方法,又叫大津法,简称OTSU。它是按图像的灰度特性,将图像分成背景和目标2部分。背景和目标之间的类间方差越大,说明构成图像的2部分的差别越大,当部分目标错分为背景或部分背景错分为目标都会导致2部分差别变小。因此,使类间方差最大的分割意味着错分概率最小。对于图像I(x,y),前景(即目标)和背景的分割阈值记作T,属于前景的像素点数占整幅图像的比例记为1,其平均灰度1;背景像素点数占整幅图像的比例为2,其平均灰度为2。图像的总平均灰度记为,类间方差记为g。假设前景为0到j,后景为j到255。再假设n0,n1,…n255为对应灰度为0到255的像素点的个数。1=(n0+n1+…+nj)/(n0+n1+..+n255)1=(0*n0+1*n1+…+j*nj)/(n0+n1+…+nj)2=(nj+1+nj+2+…+n255)/(n0+n1+..+n255)2=((j+1)*nj+1+(j+2)*nj+2+…+255*n255)/(nj+1+nj+2+…+n255)=(0*n0+1*n1+…+255*n255)/(n0+n1+..+n255)假设图像的背景较暗,并且图像的大小为MN,图像中像素的灰度值小于阈值T的像素个数记作1N,像素灰度大于阈值T的像素个数记作2N,则有:11NMN(1.1)22NMN(1.2)12NNMN(1.3)121(1.4)1122(1.5)221122()()g(1.6)将式(1.5)代入式(1.6),得到等价公式:21212()g(1.7)采用遍历的方法得到使类间方差最大的阈值T,即为所求。OpenCV代码:intmyOtsu(constIplImage*frame)//大津法求阈值{#defineGrayScale256//frame灰度级intwidth=frame-width;intheight=frame-height;intpixelCount[GrayScale]={0};floatpixelPro[GrayScale]={0};inti,j,pixelSum=width*height,threshold=0;uchar*data=(uchar*)frame-imageData;//统计每个灰度级中像素的个数for(i=0;iheight;i++){for(j=0;jwidth;j++){pixelCount[(int)data[i*width+j]]++;}}//计算每个灰度级的像素数目占整幅图像的比例for(i=0;iGrayScale;i++){pixelPro[i]=(float)pixelCount[i]/pixelSum;}//遍历灰度级[0,255],寻找合适的thresholdfloatw0,w1,u0tmp,u1tmp,u0,u1,deltaTmp,deltaMax=0;for(i=0;iGrayScale;i++){w0=w1=u0tmp=u1tmp=u0=u1=deltaTmp=0;for(j=0;jGrayScale;j++){if(j=i)//背景部分{w0+=pixelPro[j];u0tmp+=j*pixelPro[j];}else//前景部分{w1+=pixelPro[j];u1tmp+=j*pixelPro[j];}}u0=u0tmp/w0;u1=u1tmp/w1;deltaTmp=(float)(w0*w1*pow((u0-u1),2));if(deltaTmpdeltaMax){deltaMax=deltaTmp;threshold=i;}}returnthreshold;}参考文献:NobuyukiOtsu发表的原文AThresholdSelectionMethodfromGray-LevelHistograms,Systems,ManandCybernetics,IEEETransactionson,vol.9,no.1,pp.62-66,Jan.1979
本文标题:大津法原理-otsu-
链接地址:https://www.777doc.com/doc-4913455 .html