智能车制作

标题: 【分享代码】一段时间自适应曝光的代码,今晚上写的,跟随不算太好。 [打印本页]

作者: Quixote    时间: 2014-7-30 22:49
标题: 【分享代码】一段时间自适应曝光的代码,今晚上写的,跟随不算太好。
一段时间自适应曝光的代码,今晚上写的,跟随不算太好。有兴趣的同学可以自行改进。
/*变量初始化
    g_Con.timer = 0;
    g_barCode_feature.exposureTime = 10;
    g_barCode_feature.threshold = 140;

*/

/* CCD结构体 */
typedef
struct
{
    // uint8 status;//属性
    /*
    属性分配 ------
      0x80 : 增加曝光时间
      0x01 : 减少曝光时间
    */
    uint8 img[128];// 原始图像
    uint8 max;// 图像最大值
    uint8 min;// 图像最小值
    uint16 aver;// 图像平均值
    uint8 threshold;// 检测阈值
    uint16 exposureTime;// 曝光时间
}
__CCD_get_barCode;


/* 中断 */

void PIT0_IRQHandler()
{
    PIT_Flag_Clear(PIT0);
    if( g_barCode_feature.exposureTime == g_Con.timer )
    {
        g_barCode_feature = sg_ccdVar_AutoAdjust(g_barCode_feature);// 时间自适应调整
        g_Con.timer = 0;
    }
    g_Con.timer ++;// 控制时间自加
}


/* 自适应调整 */
__CCD_get_barCode sg_ccdVar_AutoAdjust( __CCD_get_barCode Gaia )
{
    CCD1get(Gaia.img);
    Gaia.max = 0;Gaia.min = 255;
    for(uint8 loop=0;loop<128;loop++)
    {
        Gaia.aver = Gaia.aver + Gaia.img[loop];
        if(Gaia.img[loop]>Gaia.max){Gaia.max = Gaia.img[loop];}
        if(Gaia.img[loop]<Gaia.min){Gaia.min = Gaia.img[loop];}
    }
    Gaia.aver = Gaia.aver/128;
    if( Gaia.aver > Gaia.threshold + 5 )
    {
        if(Gaia.aver > Gaia.threshold + 20)
        {
            if( (Gaia.exposureTime - (Gaia.aver - Gaia.threshold)) > 0 )
            {
                Gaia.exposureTime -= (Gaia.aver - Gaia.threshold);
            }
            else
            {
                Gaia.exposureTime = 1;
            }
        }
        else{Gaia.exposureTime--;}
    }
    if( Gaia.aver < Gaia.threshold - 5 )
    {
        if(Gaia.aver < Gaia.threshold - 20){Gaia.exposureTime += (Gaia.threshold - Gaia.aver);}
        else{Gaia.exposureTime++;}
    }
    if(Gaia.exposureTime<1){Gaia.exposureTime = 1;}
    return Gaia;
}





作者: 43380249    时间: 2014-7-30 22:52

作者: Quixote    时间: 2014-7-30 22:53
43380249 发表于 2014-7-30 22:52



作者: lm342794214    时间: 2014-7-30 22:53

作者: Quixote    时间: 2014-7-30 22:55
lm342794214 发表于 2014-7-30 22:53

在群里一声不吭……

作者: 旋风麦林    时间: 2014-7-30 22:56

作者: 43380249    时间: 2014-7-30 22:56
Quixote 发表于 2014-7-30 22:53

:lol

作者: Quixote    时间: 2014-7-30 22:59
- -地球村集体出来发笑脸么?
作者: .o烏龍茶o灬    时间: 2014-7-30 23:11
:lol
作者: ▲_important゜    时间: 2014-7-30 23:12

作者: westzhao    时间: 2014-7-30 23:13

作者: 邵志伟    时间: 2014-7-30 23:13
:(:(:(:(:Q:Q:Q:Q大神,完全看不懂怎么办
作者: 囧zZZ    时间: 2014-7-30 23:18

作者: aohuanxuan    时间: 2014-7-30 23:49

作者: 天荒地老    时间: 2014-7-30 23:57
:lol
作者: 空有一人    时间: 2014-7-31 10:04
收藏了
作者: abacrya、军    时间: 2014-7-31 12:31
我之前也是写了一下只适应曝光程序:我的i思路是,用规定的那3秒停顿时间,曝光时间充10US到6ms以每次间隔10US递增,递增一次采集一次信息,在进行处理,用差分法,,,,在6这个循环中,记录差值最大时所对应的曝光时间和差值最小(最小负值)时对应的曝光时间。然后取两个曝光时间的平均值作为(初始曝光时间),再以初始曝光时间采集一次信息,并求出平均曝光量作为  控制器的标准曝光量,在之后的过程中,每采集一次,求一次平均曝光量,在和标准曝光量做比较,来判断如何改变曝光时间;
作者: Quixote    时间: 2014-7-31 12:34
abacrya、军 发表于 2014-7-31 12:31
我之前也是写了一下只适应曝光程序:我的i思路是,用规定的那3秒停顿时间,曝光时间充10US到6ms以每次间隔1 ...

略屌……谢谢提供思路~不过我写这个程序是干别的,不是智能车,智能车的话感觉还是固定曝光时间,动态阈值为好。

作者: abacrya、军    时间: 2014-7-31 12:35
但是一直有一个问题:(假设赛道占64个像素点)在直道时,所在像素点不变,可以很好的进行调节,
                                  但是到弯道时,CCD采集到的赛道所在像素大于64,使得实际曝光时间大于标准曝               
                                光时间,程序会误认为曝光过度,于是就减小曝光时间,最后导致弯道模糊。
不知道楼主有没有遇到这种情况、、...一起讨论下
作者: 绿眼睛兔子    时间: 2014-7-31 12:50

作者: Quixote    时间: 2014-7-31 12:50
abacrya、军 发表于 2014-7-31 12:35
但是一直有一个问题:(假设赛道占64个像素点)在直道时,所在像素点不变,可以很好的进行调节,
         ...

没遇到过……我一直用固定时间曝光,你看看是不是出现了减法错误。。

作者: 于山boy    时间: 2014-7-31 14:17

作者: abacrya、军    时间: 2014-7-31 14:38
Quixote 发表于 2014-7-31 12:34
略屌……谢谢提供思路~不过我写这个程序是干别的,不是智能车,智能车的话感觉还是固定曝光时间,动态阈值 ...

楼主这个是干嘛用的呢?  好奇。。

作者: Quixote    时间: 2014-7-31 15:04
abacrya、军 发表于 2014-7-31 14:38
楼主这个是干嘛用的呢?  好奇。。

条形码识别

作者: A.Iniesta    时间: 2014-7-31 22:27

作者: 刻gu铭X-1n    时间: 2014-8-1 02:49

作者: 仰望,蘫迗    时间: 2014-8-1 23:35
好难懂
作者: Koala.D.Fly    时间: 2014-8-2 08:54
:lol
作者: 夏露咩咩咩    时间: 2016-6-3 07:16
abacrya、军 发表于 2014-7-31 12:35
但是一直有一个问题:(假设赛道占64个像素点)在直道时,所在像素点不变,可以很好的进行调节,
         ...

大神请问现在解决这个问题了吗?





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2