智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 620|回复: 1
打印 上一主题 下一主题

CCD 5110 显示

[复制链接]

14

主题

77

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1580
威望
768
贡献
484
兑换币
491
注册时间
2014-9-13
在线时间
164 小时
跳转到指定楼层
1#
发表于 2015-1-23 14:49:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5110显示CCD采集到的图像,图像显示黑线为白色,白色赛道为黑色。
我想设置为黑线为黑色,白色赛道不显示(或者为白的),不知道如何设置?

附山外二值化程序,不知道是不是改动山外二值化程序,可以显示,如果是,需要怎么改?
求大神指导
/*!
*  @brief      简单的一个二值化 算法(不稳定,仅测试)
*  @since      v5.0
*/
// diff_threshold 差分阈值 ,不同的角度,不同的环境而有所不同
//可根据 maxdif 最大差分值来配置,或者直接固定阈值
#define diff_threshold    ((maxdif> 12) ? ((maxdif*80)/100) :10)     // 差分阈值
//#define diff_threshold    10
#define safe_isolation    3
void bin(uint8 *bin,uint8 * img,uint8 * difimg,uint16 len,uint8 maxdif)
{
    uint16 tmplen = len;
    uint8  thldnum = 0;        //阈值次数
    uint8  thresholdimg;
    uint8  tmpnum;

    memset(bin,0xFF,len);  //全部当作

    while(tmplen--)
    {
        if((tmplen == 0)|| (tmplen > len))
        {
            return;
        }

        if(difimg[tmplen] > diff_threshold)                  //找到 差分阈值
        {
            thldnum++;

            //寻找最大差分阈值
            while(tmplen--)
            {
                if((tmplen == 0)|| (tmplen > len))
                {
                    return;
                }

                if(difimg[tmplen] < difimg[tmplen+1] )    //tmplen+1 为最大阈值
                {
                     break;
                }
            }

            //tmplen + 1 是 差分最大值 ,切换到 颜色扫描
            if((img[tmplen] <= img[tmplen+1]) ||(img[tmplen+1] <= img[tmplen+2]) )  // 前面 黑色 ,后面 白色
            {
                //选择 差分值最大值的前一个 作为 阈值
                thresholdimg = (img[tmplen+1] + img[tmplen+2])/2;

                //扫描下一个 高于 此阈值 (比此点更白)
                while(img[tmplen] <= thresholdimg)
                {
                    bin[tmplen] = 0;                //黑色
                    tmplen--;
                    if(tmplen == 0)      //结尾了 ,直接退出
                    {
                        if(img[tmplen] <= thresholdimg)
                        {
                             bin[tmplen] = 0;                //黑色
                        }
                        return ;
                    }
                    else if (tmplen > len)
                    {
                         return;
                    }
                }
                tmplen -= safe_isolation;
                if((tmplen == 0)|| (tmplen > len))
                {
                    return;
                }

                //等待差分值降低
                while(difimg[tmplen] > diff_threshold)
                {
                    tmplen--;
                    if((tmplen == 0)|| (tmplen > len))
                    {
                        return;
                    }
                }
            }
            else
            {
                //前白 后 黑
                if(thldnum == 1)
                {
                    //后面的 内容都是 黑色的
                    tmpnum  = tmplen + 1;
                    while(tmpnum < len)
                    {
                        bin[tmpnum] = 0;                //黑色
                        tmpnum ++;
                    }
                }
            }


        }
    }
}


回复

使用道具 举报

14

主题

77

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1580
威望
768
贡献
484
兑换币
491
注册时间
2014-9-13
在线时间
164 小时
2#
 楼主| 发表于 2015-1-23 14:50:53 | 只看该作者
附图片

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-20 23:30 , Processed in 0.102151 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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