智能车制作

标题: 跪求线性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