zoukankan      html  css  js  c++  java
  • [代码片段]OSTU算法

     用在片上系统上的

     1 //OSTU求图像的阈值
     2 u8 otsuThreshold(u8 **img, u16 height, u16 width)
     3 {
     4 //    int width = frame->width;
     5 //    int height = frame->height;
     6     u16 pixelCount[256];
     7     float pixelPro[256];
     8     u16 i, j, pixelSum = width * height, threshold = 0;
     9     //遍历灰度级[0,255]
    10     float w0, w1, u0tmp, u1tmp, u0, u1, u, deltaTmp, deltaMax = 0;
    11     //u8* data = (uchar*)frame->imageData;
    12 
    13     for(i = 0; i < 256; i++)
    14     {
    15         pixelCount[i] = 0;
    16         pixelPro[i] = 0;
    17     }
    18 
    19     //统计灰度级中每个像素在整幅图像中的个数
    20     for(i = 0; i < height; i++)
    21     {
    22         for(j = 0;j < width;j++)
    23         {
    24             pixelCount[ img[i][j] ]++;
    25         }
    26     }
    27     
    28     //计算每个像素在整幅图像中的比例
    29     for(i = 0; i < 256; i++)
    30     {
    31         pixelPro[i] = (float)pixelCount[i] / pixelSum;
    32     }
    33 
    34     for(i = 0; i < 256; i++)
    35     {
    36         w0 = w1 = u0tmp = u1tmp = u0 = u1 = u = deltaTmp = 0;
    37         for(j = 0; j < 256; j++)
    38         {
    39             if(j <= i)   //背景部分
    40             {
    41                 w0 += pixelPro[j];
    42                 u0tmp += j * pixelPro[j];
    43             }
    44             else   //前景部分
    45             {
    46                 w1 += pixelPro[j];
    47                 u1tmp += j * pixelPro[j];
    48             }
    49         }
    50         u0 = u0tmp / w0;
    51         u1 = u1tmp / w1;
    52         u = u0tmp + u1tmp;
    53         deltaTmp = w0 * pow((u0 - u), 2) + w1 * pow((u1 - u), 2);
    54         if(deltaTmp > deltaMax)
    55         {
    56             deltaMax = deltaTmp;
    57             threshold = i;
    58         }
    59     }
    60 
    61     return threshold;
    62 }
  • 相关阅读:
    hadoop之 解析HDFS的写文件流程
    Linux之 手动释放内存
    Heka 的编译
    go get 下载需要的相关工具
    峰值计算的方法
    thrift简介
    Bazaar 版本控制工具
    Homebrew
    虚拟机下centos时间不正确的方便解决方法
    golang 应用的部署相关技术
  • 原文地址:https://www.cnblogs.com/rongfangliu/p/3576166.html
Copyright © 2011-2022 走看看