智能车制作

标题: 来点鄙人的小想法 用图说话吧,顺便分享一丢丢代码 [打印本页]

作者: miaobrother    时间: 2016-4-13 11:14
标题: 来点鄙人的小想法 用图说话吧,顺便分享一丢丢代码
就是一个普通弯道边线,自己的寻线思想贴上来吧,大神们有啥思路的呱唧呱唧!

//为跟线搜索算法参数赋初值
  L_last_memory=Left[4];
  R_last_memory=Right[4];
////////////////////////////前五行计算图像中线/////////////////////////////
        }                                           //底部五行全局扫描结束
   }
       else  if(line>=6)                                  // (i>=5)
       {   
     line=line-1;
////////////////////////////左边///////////////////////////////   
     if(L_last_memory>IMG_DIFF)
      Scan_Start=L_last_memory-IMG_DIFF;
    else
   {
        Scan_Start=0;
   }
     if(L_last_memory<(SONYCCD_W-IMG_DIFF))
      Scan_End=L_last_memory+IMG_DIFF;//取上一行黑线偏右IMG_DIFF列坐标
     else
   {
     Scan_End=SONYCCD_W-1;
    if(Line_Flag[line-1]&LEFT_LOST_W)  Scan_Start=SONYCCD_W-4;
   }
  if(Copy_Buffer[line][Scan_Start]==1)
     {
    j=Scan_Start;
     }
  else
  {
     for(j=Scan_Start;j<Scan_End;j++)
   {
    if(Copy_Buffer[line][j]==1)
    {
      flag=0;
       for(i=0;i<4;i++)
       {
       if((j+i)>=SONYCCD_W)     
      {      
       flag=3;
       break;
      }
      else  if(Copy_Buffer[line][j+i]==1)
         flag++;
       else if(Copy_Buffer[line][j+i]==0)
      {
       for(b=0;b<4;b++)
       {
         if(Copy_Buffer[line][j+i+b]==0)  
          flag++;
        if(Copy_Buffer[line][j+i+b]==1){ flag++;  break;}
       }
      }
       }
     if(flag>1)
     {
      Left[line]=j;
      Enable_lianxu=1;
      L_last_memory=j;
      break;
     }  
    }
   }
  }
  if(j==Scan_Start)
  {
    Line_Flag[line] |= LEFT_LOST_B;
                                                  //不允许连续两次  接近平行
for(b=0;b<15;b++)
   {
    if((Scan_Start-b)<=0)
    {
     zuo_Unvalue_flag=line;
     break;
    }
   else if(Copy_Buffer[line][Scan_Start-b]==0)
    {
     flag=0;
     for(i=0;i<6;i++)  
     {
      if((Scan_Start-b-i)<=0)
       ;      
      else if(Copy_Buffer[line][Scan_Start-b-i]==0) flag++;
     }
     if(flag>=3)
     {
      Left[line]=Scan_Start-b;
      L_last_memory=Scan_Start-b;
      break;
     }
    }
   }
   if( Scan_Start==0)
   {
    Left[line]=0;
   
    zuo_Unvalue_flag=line;
   }
else if((b==15)&&(Line_Flag[line-1]== LEFT_LOST_W)&&(Copy_Buffer[line+1][SONYCCD_W-1]==0))
{
  Left[line]=SONYCCD_W-1;
   left_lost_flag=1;
     L_lost_count++;
}
else if((b==15)&&(zuo_Unvalue_flag==0))     
  {
    if((Scan_Start-20)<=0) start_again=0;
       else  start_again=Scan_Start-20;
    for(b=start_again;b<Scan_Start;b++)
   {
    if(Copy_Buffer[line][b]==1)
    {   
        flag=0;
       for(i=0;i<4;i++)
       {
     if((b+i)>=SONYCCD_W)  
     {
       Left[line]=SONYCCD_W-1;
         left_lost_flag=1;
           L_lost_count++;
      break;
     }
      if(Copy_Buffer[line][b+i]==1)
        flag++;
       }
     if(flag>=2)  
     {
      Left[line]=b;
      L_last_memory=b;
      break;
     }            
    }
    }
   }
     L_last_memory=Left[line];
   
  if(((Left[line]-Left[line-1])>Jungle)||((Left[line]-Left[line-1])<-Jungle))  
    {  
   zuo_Unvalue_flag=line;
  }
  else if((Left[line]-Left[line-1])>0)
  {
   zuo_Unvalue_flag=line;
  }
  }
  else if(j==Scan_End)//未找到黑线
  {
    Line_Flag[line] |= LEFT_LOST_W;
  if(( Line_Flag[line-1]&0x40)&(Enable_lianxu==1))   zuo_Unvalue_flag=line;
  for(;j<SONYCCD_W-1;j++)
     {
  if(((Copy_Buffer[line][j])==1)&&((Copy_Buffer[line][j-1])==0)&&((Copy_Buffer[line][j-2])==0))  
      break;
     }
  if(j==(SONYCCD_W-1))
  {
   if(Copy_Buffer[line+1][SONYCCD_W-1]==0)
   {
    flag=0;
    for(b=SONYCCD_W-1;b>SONYCCD_W-5;b--)
    {
     if(Copy_Buffer[line+1][b]==0) flag++;
     else  break;
    }
   }
      Left[line]=SONYCCD_W-1;
    left_lost_flag=1;
      L_lost_count++;
       Line_Flag[line] |= 0x40U;
  }
     L_last_memory=Left[line];
if(flag!=4)
   if(((Left[line]-Left[line-1])>Jungle)||((Left[line]-Left[line-1])<-Jungle))
{
  zuo_Unvalue_flag=line;
}
  }
  
if(zuo_Unvalue_flag!=0)
{
  WEIZHI_NUM++;
  if(WEIZHI_NUM==1) Zuo_start=zuo_Unvalue_flag;
}

作者: miaobrother    时间: 2016-4-13 11:15
那根横着的黑线是 无效截止行哈
作者: miaobrother    时间: 2016-4-13 11:16
还是那句话 曲线拟合 真的想搞一搞,感觉很不错的样子 大家觉得呢
作者: miaobrother    时间: 2016-4-13 11:16
只有左边的,没有右边的  反正一个套路
作者: miaobrother    时间: 2016-4-13 11:18
顺便问问 有同用索尼CCD700线的兄弟没?  这图像质量真的是。。。。要是有数字摄像头那么黑白分明就好了哇
作者: lx941011    时间: 2016-4-13 11:45
我们用的Sony ccd,图像还好,没你这么多噪点
作者: 江理工吴灏    时间: 2016-4-13 13:22
正打算用  给点建议吧  图像的获取和存储怎么做  在行中断里面用定时器等时间间隔读取存入数组还是用dma?疑惑较多  希望兄弟能指点一二  能加一下qq好友是最好了
作者: miaobrother    时间: 2016-4-13 15:57
江理工吴灏 发表于 2016-4-13 13:22
正打算用  给点建议吧  图像的获取和存储怎么做  在行中断里面用定时器等时间间隔读取存入数组还是用dma?疑 ...



我那图像差的一啤,没什么可教你的

作者: miaobrother    时间: 2016-4-13 15:58
lx941011 发表于 2016-4-13 11:45
我们用的Sony ccd,图像还好,没你这么多噪点

兄弟,你这话让我有点打鸡血啊,我用了很多方法最好就这样。你的采集套路是啥

作者: 江理工吴灏    时间: 2016-4-13 16:04
lx941011 发表于 2016-4-13 11:45
我们用的Sony ccd,图像还好,没你这么多噪点

同求指点   能否加qq好友

作者: Quixote    时间: 2016-4-13 16:28
噪点挺多
作者: miaobrother    时间: 2016-4-13 16:31
Quixote 发表于 2016-4-13 16:28
噪点挺多

我真不明白这个是什么造成的。。真是日了狗了。买的某宝的视频分离板,难道有毒

作者: 六步上篮    时间: 2016-4-13 20:44
这图像咋这样
作者: miaobrother    时间: 2016-4-13 21:17
六步上篮 发表于 2016-4-13 20:44
这图像咋这样

解决了一大半,原来是硬件问题,还好我队友给力,自己画的比买的还好

作者: 东方斗魂    时间: 2016-4-14 11:10
跟第八届一个国赛队伍的寻线差不多
作者: 小焓焓    时间: 2016-4-14 13:30
找边界一般都能找到,关键是算中线的方法,这个就很多种了。
作者: lx941011    时间: 2016-4-15 19:32
miaobrother 发表于 2016-4-13 15:58
兄弟,你这话让我有点打鸡血啊,我用了很多方法最好就这样。你的采集套路是啥

我们用的大津法取得动态阈值,没有图像不用去噪也可以比较稳定

作者: miaobrother    时间: 2016-4-15 20:23
lx941011 发表于 2016-4-15 19:32
我们用的大津法取得动态阈值,没有图像不用去噪也可以比较稳定

这个我试过 大津太耗时间了,而且这个也不是动态阈值就能解决的




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