金牌会员
- 积分
- 2816
- 威望
- 1417
- 贡献
- 787
- 兑换币
- 915
- 注册时间
- 2017-9-21
- 在线时间
- 306 小时
|
不知道怎么自己原理理解错了还是怎么,大津法返回来的阈值是一个定值,程序如下- void get_theos()
- {
- const uint16 hui_du = 256; //灰度级数
- const unsigned long long pixelsum = ROW * COL; //像素总数
- double zhifangtu[256]={0}; //直方图数组
- double pixelcount[256]={0}; //各个灰度级数的概率
- uint16 i=0,j=0,x=0,y=0,t=0;
- double p0=0,p1=0,u1=0,u0=0,u00=0,u11=0;
- double threshold=0;
- double fangcha=0.0,fangchamax=0.0;
-
- for(i=0;i<ROW;i++)
- for(j=0;j<COL;j++)
- zhifangtu[image[i][j]]++; //算出直方图
- /*********测试直方图************/
- // for(t=0;t<hui_du;t++)
- //SCI_Up_acc_gyr((short) zhifangtu[t],(short) 0);
- ///uart_putchar(UART2,zhifangtu[t]);
-
- for(x=0;x<hui_du;x++)
- {
- pixelcount[x]=zhifangtu[x]/pixelsum;
- // if((0<pixelcount[x])&&(pixelcount[x]<1))
- // y++;
- }
-
- for(x=0;x<hui_du;x++)
- {
- p0=p1=u0=u1=fangcha=u00=u11=0.0;
- for(y=0;y<hui_du;y++)
- {
- if(y<=x)
- {
- u00+=y*pixelcount[y];
- p0+=pixelcount[y];
- }
- else
- {
- u11+=y*pixelcount[y];
- }
- }
- p1=1-p0;
- u0=u00/p0;
- u1=u11/p1;
- fangcha=p0*p1*(u0-u1)*(u0-u1);
- if(fangcha>fangchamax)
- {
- fangchamax=fangcha;
- threshold=i;
- }
- }
- // SCI_Up_acc_gyr((short) threshold,(short) y);
- }
-
复制代码
|
|