中级会员
 
- 积分
- 370
- 金钱
- 370
- 注册时间
- 2016-2-22
- 在线时间
- 109 小时
|

楼主 |
发表于 2016-3-19 16:22:22
|
显示全部楼层
[mw_shl_code=cpp,true]u16 MyThreshold()
{
float w0, w1, u0tmp, u1tmp, u0, u1, u, deltaTmp, deltaMax = 0;
float maxPro = 0.0;
u8 kk=0;
u16 GrayScale = 256;
u16 width = 480;
u16 height = 500;
u32 i, j, pixelSum = width * height, threshold = 0;
//Ö¸ÏòÏñËØêy¾YμÄÖ¸Õë
for(i = 0; i < GrayScale; i++)
{
pixelCount = 0;
pixelPro = 0;
}
//í3¼Æ»ò¶è¼¶ÖDÿ¸öÏñËØÔúÕû·ùí¼ÏñÖDμĸöêy
for(i = 0; i < height; i++)
{
for(j = 0;j < width;j++)
{
pixelCount[(int)test[j]]++; //½«ÏñËØÖμ×÷Îa¼Æêyêy×éμÄϱê
}
}
//¼ÆËãÿ¸öÏñËØÔúÕû·ùí¼ÏñÖDμıèày
for(i = 0; i < GrayScale; i++)
{
pixelPro = (float)pixelCount / pixelSum;
if( pixelPro > maxPro )
{
maxPro = pixelPro;
kk = i;
}
}
//±éàú»ò¶è¼¶[0,255]
for(i = 0; i < GrayScale; i++) // i×÷ÎaãDÖμ
{
w0 =0;
w1 = 0;
u0tmp =0;
u1tmp = 0;
u0 = 0;
u1 = 0;
u = 0;
deltaTmp = 0;
for(j = 0; j < GrayScale; j++)
{
if(j <= i) //±3¾°2¿·Ö
{
w0 += pixelPro[j];
u0tmp += j * pixelPro[j];
}
else //ǰ¾°2¿·Ö
{
w1 += pixelPro[j];
u1tmp += j * pixelPro[j];
}
}
if((w0==0)||(u0tmp==0)){u0=0;}
else{u0 = u0tmp / w0; }
if((w1==0)||(u1tmp==0)){u1=0;}
else{u1 = u1tmp / w1; }
u = u0tmp + u1tmp;
deltaTmp = w0 * pow((u0 - u), 2) + w1 * pow((u1 - u), 2);
if(deltaTmp > deltaMax)
{
deltaMax = deltaTmp;
threshold = i;
}
}
return threshold;
}
[/mw_shl_code] |
|