您的位置:首页 > 其它

全功能智能车之CCD增加自适应光照能力(第十三篇)

2015-11-28 21:23 309 查看
全功能智能车之CCD增加自适应光照能力

其实就是增加了如下函数:

/*************************************************************************

* 函数名称:VerifyExposure

* 功能说明:曝光检验 自动选取最合适的曝光值

* 参数说明:

* 函数返回:无

* 修改时间:2015-11-28

× 作者:piaoran QQ:384710930

* 备 注:VerifyExposure();

*************************************************************************/

void VerifyExposure(void) {

u8 i,j,cnt_max,cnt_min;

s16 temp;

for(j=0;j<200;j++){ //最多调节100次

ImageCapture(Pixel); //获取图像

ccd_avg=PixelAverage(CCD_LENGTH,Pixel);

ccd_max=ccd_avg;

ccd_min=ccd_avg;

temp=exposureTime;

for(i=0;i<CCD_LENGTH;i++){

if(Pixel[i]>=(ccd_max-25)){

cnt_max++;

cnt_min=0;

if(cnt_max>=3) ccd_max=Pixel[i];

continue;

}

if(Pixel[i]<=(ccd_min+25)){

cnt_min++;

cnt_max=0;

if(ccd_min>=3) ccd_min=Pixel[i];

continue;

}

}

if(ccd_max<=2400) { //曝光不够

temp +=3;

if(temp>1000) temp=1000;

}

if(ccd_min>=1600) { //曝光过高

temp -=5;

if(temp<1) temp=1;

}

exposureTime=temp;

SendImageData(Pixel);

LCD_ShowxNum(20+8*8,70,ccd_max,4,16,0);//液晶显示

LCD_ShowxNum(20+22*8,70,ccd_min,4,16,0);

LCD_ShowxNum(20+8*8,90,exposureTime,4,16,0);

LCD_ShowxNum(20+22*8,90,ccd_avg,4,16,0);

delay_ms(50);

}

}

当然也完善了相应的功能,如取消了一个大数组,在发送函数做如下修改:

/*************************************************************************

* 函数名称:SendImageData

* 功能说明:

* 参数说明:

* 函数返回:无

* 修改时间:2015-11-28

× 作者:piaoran QQ:384710930

* 备 注:SendImageData(Pixel);

*************************************************************************/

void SendImageData(unsigned short * ImageData) {

unsigned char i,temp;

//0x00代表最暗,0xfe代表最亮 而采集回来的是12位的ADC值

for(i=0; i<CCD_LENGTH; i++) {

temp=(u8)(*ImageData>>4);

if(temp==0xff) temp=0xfe;

uart_putchar(USART1,temp);

ImageData++;

}

uart_putchar(USART1,0xff);

}

下面是实验图片:











可以卡到ccd_max和exposureTime都在上升,这就是自动调节曝光度的作用

下面是源代码:
http://download.csdn.net/detail/chengdong1314/9308725
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: