智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1086|回复: 0
打印 上一主题 下一主题

[软件类] 各位好友,为什么我用滤波了之后,在远处的点会乱跳????????????望指教

[复制链接]

30

主题

160

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1436
威望
775
贡献
323
兑换币
455
注册时间
2012-12-26
在线时间
169 小时
毕业学校
njyddx
跳转到指定楼层
1#
发表于 2013-4-16 01:43:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1贡献
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;
}

相关帖子

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-27 12:13 , Processed in 0.065434 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表