智能车制作
标题:
跪求线性ccd双峰法处理例程
[打印本页]
作者:
小白菜的奋斗
时间:
2014-5-4 00:37
标题:
跪求线性ccd双峰法处理例程
发到我邮箱
962950706@qq.com
先谢过了,真在网上找不到例程
作者:
stxhb
时间:
2014-5-4 01:22
帮顶
作者:
abacrya、军
时间:
2014-5-4 11:23
帮忙顶个 一起交流下
645106160@qq.com
作者:
nimanima
时间:
2014-5-4 11:31
这都要跪
作者:
一誓灬千年
时间:
2014-5-4 18:03
我想知道什么是双峰法....难道我想歪了?
作者:
幼麟
时间:
2014-5-5 12:58
是经过一次求导后的吧
作者:
小鹿允2
时间:
2016-2-21 08:40
//-----------------------------------------前瞻是60cm-------------------------------------------
uint8 pixel2_min=40;
uint8 pixel2_max;
uint8 lad2=5;
uint8 ccd2_last_latch;
unsigned char white_value2=0; //用于记录白色灰度的值
unsigned char black_value2=0; //用于记录黑色灰度的值
//**************************************************************************************************
//双峰直方图测动态阀值
//**************************************************************************************************
uint8 ccd2_rere_left,ccd2_re_left;
uint8 black_latch2=0;
uint8 white_latch2=LATCH_LINE;// white_latch=34
void get_latch2(void) //双峰直方图测动态阀值 //如ccd2_rere_left果出现问题,请检查电池是否有电
{
uint8 i=0;
pixel2_max=pixel2_min+lad2*34;
for (i=0;i<LATCH_LINE;i++)
line_latch[i]=0; //灰度值数组初始化
for (i=8;i<=120;i++) //目前取的是从8到120个点
if(pixel2[i]>pixel2_min&&pixel2[i]<pixel2_max) //舍去太大或太小的点
line_latch[(pixel2[i]-pixel2_min)/lad2]++; //相应灰度值的组别对应的+1
total=line_latch[LATCH_LINE-1]+line_latch[LATCH_LINE-2]+line_latch[LATCH_LINE-3];
//白点方向的连续三组分布总和
for(i=LATCH_LINE-2;i>1;i--) //找连续三组和最大的地方
{
if(line_latch[i]+line_latch[i-1]+line_latch[i-2]>=total)
{
total=total+line_latch[i-2]-line_latch[i+1]; //向暗处移动,找白色的最大分布点
}
else
{
white_latch2=i; //此处为白线灰度
break;
}
}
total=line_latch[0]+line_latch[1]+line_latch[2]; //黑点方向的连续三组分布总和
for(i=1;i<LATCH_LINE-2;i++)
{
if(line_latch[i]+line_latch[i+1]+line_latch[i+2]>=total)
{
total=total+line_latch[i+2]-line_latch[i-1]; //向亮处移动,找黑色的最大分布点
}
else
{
black_latch2=i; //此处为黑线灰度
break;
}
}
latch_space=char_abs(white_latch2-black_latch2); //黑白峰间距
if(latch_space>=2)
{
ccd2_latch=(black_latch2+white_latch2)/2; //图像检测阀值
//比较阀值数组附近的两组,得出数据点最少的一组作为阀值点
latch1 = line_latch[ccd2_latch] < line_latch[ccd2_latch-1]? ccd2_latch:ccd2_latch-1;
latch2 = line_latch[ccd2_latch] < line_latch[ccd2_latch+1]? ccd2_latch:ccd2_latch+1;
ccd2_latch = line_latch[latch1]<line_latch[latch2]?latch1:latch2;
ccd2_latch=ccd2_latch*lad2+pixel2_min+1; //具体可能还需要进行调整
ccd2_last_latch=ccd2_latch;
}
else
{
ccd2_latch=ccd2_last_latch;
}
white_value2=white_latch2*lad2+pixel2_min;
black_value2=black_latch2*lad2+pixel2_min;
}
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2