智能车制作

标题: 求大神,为啥我写的这个中值滤波好像没啥效果的 [打印本页]

作者: p141592653    时间: 2013-6-10 11:48
标题: 求大神,为啥我写的这个中值滤波好像没啥效果的
求大神,为啥我写的这个中值滤波好像没啥效果的,代码测试过是没啥问题的呀,不知为啥没什么效果,还是有时候会有很多噪点,下面的异或是交换两个数
void mid_value_filter()
{
  int i,j;
  u8 tmp[3];
  for(i=h-1;i>=0;i--)
  {
    for(j=0;j<l-2;j++)
    {
        tmp[0]=photos1[i][j];
  tmp[1]=photos1[i][j+1];
  tmp[2]=photos1[i][j+2];
  if(tmp[1]>tmp[0])
  {
   tmp[0]=tmp[1]^tmp[0];
   tmp[1]=tmp[1]^tmp[0];
   tmp[0]=tmp[1]^tmp[0];
  }
  if(tmp[2]>tmp[1])
  {
   tmp[1]=tmp[1]^tmp[2];
   tmp[2]=tmp[1]^tmp[2];
   tmp[1]=tmp[1]^tmp[2];
  }
        if(tmp[1]>tmp[0])
  {
   tmp[0]=tmp[1]^tmp[0];
   tmp[1]=tmp[1]^tmp[0];
   tmp[0]=tmp[1]^tmp[0];
  }
  if(tmp[2]>tmp[1])
  {
   tmp[1]=tmp[1]^tmp[2];
   tmp[2]=tmp[1]^tmp[2];
   tmp[1]=tmp[1]^tmp[2];
  }
  photos1[i][j]=tmp[1];
    }
  }
}

作者: 夏日的冰    时间: 2013-6-10 12:18
代码尽量写简洁一点!
作者: p141592653    时间: 2013-6-10 12:30
夏日的冰 发表于 2013-6-10 12:18
代码尽量写简洁一点!

这个不是问题,关键是效果好像没出来

作者: 夏日的冰    时间: 2013-6-10 12:39
没看你代码,测试过是没啥问题。你是怎么测试的?中值滤波有范围的,最明显的优点滤掉是单个突变点。如果噪音的突变超过1个就不行了。你看看是滤波器问题还是你的噪点不在中值滤波范围内!
作者: p141592653    时间: 2013-6-10 12:50
夏日的冰 发表于 2013-6-10 12:39
没看你代码,测试过是没啥问题。你是怎么测试的?中值滤波有范围的,最明显的优点滤掉是单个突变点。如果噪 ...

我觉得是超过了范围了,我看到有些噪点是连续的。。。有没有什么好的解决办法呢
作者: 夏日的冰    时间: 2013-6-10 13:01
p141592653 发表于 2013-6-10 12:50
我觉得是超过了范围了,我看到有些噪点是连续的。。。有没有什么好的解决办法呢

可以结合限幅与加权滤波!滤掉连续突变点,适用于虑大并且连续的噪点,但也并非万能,需要具体的情况分析!





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