智能车制作

标题: 各位好友,为什么我用滤波了之后,在远处的点会乱跳????????????望指教 [打印本页]

作者: 空格_Space    时间: 2013-4-16 01:43
标题: 各位好友,为什么我用滤波了之后,在远处的点会乱跳????????????望指教
int temp=40,i,j,k,m,n;
   unsigned int left=0,right=0,sum=0,z=0,y=0,z1=0,y1=0;
   for(i=0;i<60;i++)
   {
        left=0;
        right=0;
        z=0;
        y=0;
       for(j=temp;j<=78;j++)
       {
           if(Image[i][j]&&Image[i][j+1]&&Image[i][j+2])
           {
            
                 right=j;
                 y=1;
                 break;
           }
           
       }
        
       //y1++
       for(j=temp;j>=1;j--)
       {
           if(Image[i][j]&&Image[i][j-1]&&Image[i][j-2])
           {
            
               left=j;
               z=1;
               break;
           }
            
       }
      
       //z1++
//////////////////////////////////////////////////
              
//////////////////////////////////////////////////
        if(right>77&&left<2)
        {
            //MidLine[i]=0;  
            break;
        }
       /* if(right>=78&&left>=0)
         {
              temp=temp+(left-left_past);
         }
          if(left<=2&&right<=80)
          {
              temp=temp-(right_past-right);
          }
          */
         
         
           if (z==1&&y==1)
                  
                {
                  
                        if((left>2&&right<78)&&(right-left)>=30&&(right-left)<=70)
                        {
                             sum=left+right;
                             //if((right-left)>3)
                             
                              {
                                    
                                   temp=sum/2;
                                   Image[i][temp]=2;            
                                   MidLine[i]=temp;
                                   //m++;
                              }
                               /*else if((right-left)<=3)
                                          {
                                               MidLine[i]=0;
                                          } */
                        }
                }
                else   
               if(i<3)
                  MidLine[i]=MidLine[i-1];
                   else { temp=2*MidLine[i-1]-MidLine[i-2];
                       if(temp>=50)temp=50;
                       else if(temp<=30)temp=30;
                       MidLine[i]=temp;
                        }
              
   
         
   }
        
        MidLine[0]=MidLine[59];     
        for(i=2;i<60;i++)
          {
        
              
              if(abs_1(MidLine[i-1]-MidLine[i])>=3)   //duishi 黑线是连续的  值还需要确认  即相差多少就认为是错误
         
              {
              temp=2*MidLine[i-1]-MidLine[i-2];  
              if(temp>50)temp=50;
              else if(temp<30)temp=30;
              MidLine[i]=temp;
              //n++;
              }
          }
   
      //黑线的中值滤波程序!     
   
      for(i=1;i<60-1;i++)
          {
              temp=get_mid(MidLine[i-1],MidLine[i],MidLine[i+1]);
              MidLine[i]=temp;
          }
                                   
   
    return;
}






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