智能车制作
标题:
各位好友,为什么我用滤波了之后,在远处的点会乱跳????????????望指教
[打印本页]
作者:
空格_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://111.231.132.190/)
Powered by Discuz! X3.2