图像分割最大类间方差法.doc

图像分割最大类间方差法.doc

ID:59217962

大小:20.50 KB

页数:6页

时间:2020-09-09

图像分割最大类间方差法.doc_第1页
图像分割最大类间方差法.doc_第2页
图像分割最大类间方差法.doc_第3页
图像分割最大类间方差法.doc_第4页
图像分割最大类间方差法.doc_第5页
资源描述:

《图像分割最大类间方差法.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、OPENCV的二值化操作中,有一种“大津阈值处理”的方法,使用函数cvThreshold(image,image2,0,255,CV_THRESH_OTSU) 实现,该函数就会使用大律法OTSU得到的全局自适应阈值来进行二值化图片,而参数中的threshold不再起作用。OTSU算法OTSU算法也称最大类间差法,有时也称之为大津算法,由大津于1979年提出,被认为是图像分割中阈值选取的最佳算法,计算简单,不受图像亮度和对比度的影响,因此在数字图像处理上得到了广泛的应用。它是按图像的灰度特性,将图像分成背景和前景两部分。因方差是灰度分布均匀性的一种度量,背景和前景之间的类间方差越大,

2、说明构成图像的两部分的差别越大,当部分前景错分为背景或部分背景错分为前景都会导致两部分差别变小。因此,使类间方差最大的分割意味着错分概率最小。设灰度图像灰度级是L,则灰度范围为[0,L-1],利用OTSU算法计算图像的最佳阈值为:t = Max[w0(t) * (u0(t) - u)^2 + w1(t) * (u1(t) - u)^2)]其中的变量说明:当分割的阈值为t时,w0为背景比例,u0为背景均值,w1为前景比例,u1为前景均值,u为整幅图像的均值。使以上表达式值最大的t,即为分割图像的最佳阈值。以下是一段在OpenCV中实现的C语言程序,即一个使用OTSU算法提取图像阈值的

3、函数,输入参数为一个图像指针,返回分割该图像的最佳阈值。其中的变量说明:当分割的阈值为t时w0为背景像素点占整幅图像的比例u0为w0平均灰度w1为前景像素点占整幅图像的比例u1为w1平均灰度u为整幅图像的平均灰度公式:g = w0*pow((u-u0),2) + w1*pow((u-u1),2) int MyAutoFocusDll::otsuThreshold(IplImage *frame)  {   const int GrayScale = 256; int width = frame->width;   int height = frame->height;   int 

4、pixelCount[GrayScale];   float pixelPro[GrayScale];   int i, j, pixelSum = width * height, threshold = 0;   uchar* data = (uchar*)frame->imageData;  //指向像素数据的指针 for(i = 0; i < GrayScale; i++)   {    pixelCount[i] = 0;    pixelPro[i] = 0;   }    //统计灰度级中每个像素在整幅图像中的个数   for(i = 0; i < height; i+

5、+)   {    for(j = 0;j < width;j++)    {     pixelCount[(int)data[i * width + j]]++;  //将像素值作为计数数组的下标  }   }    //计算每个像素在整幅图像中的比例   float maxPro = 0.0; int kk=0; for(i = 0; i < GrayScale; i++)   {    pixelPro[i] = (float)pixelCount[i] / pixelSum;    if( pixelPro[i] > maxPro )  {   maxPro = pixe

6、lPro[i];   kk = i;  } }   //遍历灰度级[0,255]   float w0, w1, u0tmp, u1tmp, u0, u1, u, deltaTmp, deltaMax = 0;   for(i = 0; i < GrayScale; i++)    //i作为阈值 {    w0 = w1 = u0tmp = u1tmp = u0 = u1 = u = deltaTmp = 0;    for(j = 0; j < GrayScale; j++)    {     if(j <= i)   //背景部分     {      w0 += pixel

7、Pro[j];      u0tmp += j * pixelPro[j];     }     else   //前景部分     {      w1 += pixelPro[j];      u1tmp += j * pixelPro[j];     }    }    u0 = u0tmp / w0;    u1 = u1tmp / w1;    u = u0tmp + u1tmp;    deltaTmp = w0 * pow((u0 - u), 2) + w

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。