中级会员
- 积分
- 490
- 威望
- 233
- 贡献
- 167
- 兑换币
- 137
- 注册时间
- 2014-10-18
- 在线时间
- 45 小时
- 毕业学校
- 南昌大学
|
void YuZhiGet()//图像分三块大津法算法,找出最佳阈值
{
u32 u0=0,u1=0,w0=0,w1=0;//u0对应为小于遍历灰度的当前值,u1为大于当前灰度的遍历值。
//w0为小于遍历灰度点的比例。w1为大于的比例
u8 t=0;//遍历灰度值变量
u8 g=0,MaxG=0,T=0;//T对应最优灰度阈值,g为大津法公式中的变量,MaxG记录公式计算过程中的最大变量
for(t=0;t<255;t++)//t为遍历像素值
{
u8 PixelCouter[256]={0};//对应像素点数计数。
u8 Fen=V/3;
for(u8 k=1;K<=3;k++)
{
for(i=0;i<Fen;i++)//计算像素点个数,和阈值下与上的点数和
{
for(j=0;j<H;j++)
{
PixelCouter[Pix_Data[i][j]]++;
if(Pix_Data[i][j]<=t)BlackCouter++;
else WhiteCouter++;
}
}
for(i=0;i<=t;i++)
{
u0+=i*PixelCouter[i];//计算小于阈值t像素点的总和
}
u0=u0/BlackCouter;//算出小于等于t的像素的平均灰度
for(;i<255;i++)
{
u1+=i*PixelCouter[i];//计算大于阈值t像素点的总和
}
u1=u1/WhiteCouter;//算出大于t的像素的平均灰度
w0=BlackCouter/(H*Fen);//小于t像素点的个数比
w1=WhiteCouter/(H*Fen);//大于t像素点的个数比
g=w0*w1*(u0-u1)*2;//采用大律法的等价公式计算。
if(g>MaxG)
{
MaxG=g;
T=t;
}
yuzhiDID[k]=T;//算出对应分块阈值
}
}
}
|
|