智能车制作

 找回密码
 注册

扫一扫,访问微社区

楼主: bobo_12300
打印 上一主题 下一主题

大津动态阈值适用于线性CCD吗?

  [复制链接]

0

主题

10

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2247
QQ
威望
1082
贡献
707
兑换币
707
注册时间
2012-11-25
在线时间
229 小时
31#
发表于 2013-6-1 01:47:36 | 只看该作者
我用了这程序输出的阈值都好接近最大像素点的值,基本上就是最大的像素点了。好像没什么效果
回复 支持 反对

使用道具 举报

3

主题

35

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1045
威望
533
贡献
310
兑换币
287
注册时间
2012-11-11
在线时间
101 小时
32#
发表于 2013-6-1 09:18:11 | 只看该作者
顶。我也是不会呀!!!
回复 支持 反对

使用道具 举报

37

主题

358

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3787
威望
1857
贡献
918
兑换币
704
注册时间
2012-3-12
在线时间
506 小时
33#
 楼主| 发表于 2013-6-2 09:48:12 | 只看该作者
dsgthlr 发表于 2013-6-1 01:47
我用了这程序输出的阈值都好接近最大像素点的值,基本上就是最大的像素点了。好像没什么效果

这个程序没问题~~测试过的,只是有个变量的数据类型不对
回复 支持 反对

使用道具 举报

37

主题

358

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3787
威望
1857
贡献
918
兑换币
704
注册时间
2012-3-12
在线时间
506 小时
34#
 楼主| 发表于 2013-6-2 09:51:14 | 只看该作者
/*以下是CCD图像的算法*/

/*大津法二值化,浮动阈值
函数入口:CCD采集数据数组首地址
函数出口:二值化的浮动阈值*/

uchar nList[256]={0};
uchar otsu(uchar *pSrc)
{
    uchar j=0,tr=0,num=0,cnt=0;
    uint i=0;
    u32 avfor=0,avback=0;    //u32  long int   
    uint cnts=0;
    u32 total=0,total_low=0,total_high=0,g=0,max=0;
    //清空直方图
    for(i=0;i<256;i++)
    {
        nList[i]=0;
        
    }
    //计算直方图
        for(j=0;j<128;j++)
        {   
            num=*(pSrc+j);//获取灰度值
            //nList[num]++;//直方图统计图像所有像素点
            nList[num]+=1;
            total+=num;//total计算图像的灰度值总和
        }

    for(i=0;i<256;i++)
    {
        cnt=nList[i];//当前灰度值的计数数量
        if(cnt==0)   continue;
        total_low+=cnt*i;//计算灰度值从0到当前值的像素点灰度值的总和
        cnts+=cnt;//计算灰度值从0到当前值的像素点数目的总和
        if(cnts==128)  break;//统计完所有像素点,之后的灰度值已经没有任何像素点符合,计算完毕,退出

        total_high=total-total_low;//背景灰度=灰度总和-前景灰度(还没有归一化)
        avfor=(int)(total_low/cnts);//前景归一化
        avback=(int)(total_high/(128-cnts));//背景归一化  
        g=(avback-avfor)*(avback-avfor)*(cnts*128-cnts*cnts)/(128*128)    ;//计算方差     
        if(max<g)
        {
            max=g;
            tr=i;//方差最大的灰度值即为大津阈值
        }
       // if(i==80)
         // i=80;
    }  
    return tr;
}


这个是没错误的
回复 支持 反对

使用道具 举报

0

主题

10

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2247
QQ
威望
1082
贡献
707
兑换币
707
注册时间
2012-11-25
在线时间
229 小时
35#
发表于 2013-6-3 22:05:30 | 只看该作者
bobo_12300 发表于 2013-6-2 09:48
这个程序没问题~~测试过的,只是有个变量的数据类型不对

{:soso_e113:}嗯嗯  有个地方我写错了 。确实可以
回复 支持 反对

使用道具 举报

24

主题

195

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2037
威望
895
贡献
456
兑换币
576
注册时间
2013-1-18
在线时间
343 小时
36#
发表于 2013-6-7 15:07:27 | 只看该作者
bobo_12300 发表于 2013-4-6 15:07
/*大津法二值化,浮动阈值
函数入口:CCD采集数据数组首地址
函数出口:二值化的浮动阈值*/

楼主你好!这个算法直接用在摄像头上可以的么??
回复 支持 反对

使用道具 举报

24

主题

195

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2037
威望
895
贡献
456
兑换币
576
注册时间
2013-1-18
在线时间
343 小时
37#
发表于 2013-6-7 15:08:32 | 只看该作者
dsgthlr 发表于 2013-6-3 22:05
嗯嗯  有个地方我写错了 。确实可以

你好!请问你是用在线性ccd,还是摄像头上呢?
回复 支持 反对

使用道具 举报

0

主题

10

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2247
QQ
威望
1082
贡献
707
兑换币
707
注册时间
2012-11-25
在线时间
229 小时
38#
发表于 2013-6-7 18:17:43 | 只看该作者
登高使者 发表于 2013-6-7 15:08
你好!请问你是用在线性ccd,还是摄像头上呢?

线性CCD
回复 支持 反对

使用道具 举报

24

主题

195

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2037
威望
895
贡献
456
兑换币
576
注册时间
2013-1-18
在线时间
343 小时
39#
发表于 2013-6-7 18:20:14 | 只看该作者
dsgthlr 发表于 2013-6-7 18:17
线性CCD

线性ccd为什么还要用这个算法呢?你们不是只有一行数据的吗?
回复 支持 反对

使用道具 举报

0

主题

10

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2247
QQ
威望
1082
贡献
707
兑换币
707
注册时间
2012-11-25
在线时间
229 小时
40#
发表于 2013-6-8 09:45:22 | 只看该作者
登高使者 发表于 2013-6-7 18:20
线性ccd为什么还要用这个算法呢?你们不是只有一行数据的吗?

看了楼主说可以就拿来用用看。。你有其他算法?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-6-27 01:18 , Processed in 0.048985 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表