智能车制作

标题: CCD和摄像头滤波 [打印本页]

作者: startstart    时间: 2015-4-23 11:15
标题: CCD和摄像头滤波
    刚看了一篇经典滤波算法的文章,一共有11个滤波算法,原文:[attach]76497[/attach]


          和它们相比,对于我的滤波算法,我还是比较满意的
           对采集回来的数先进行二值化,阈值采用中间值,每个值左右对比,出现突变,则拿掉该值。


源代码如下:
//  *************采用最大值最小值作为阀值**********************/

          ccd_max=0;
          ccd_mix=100;
          for(row=1;row<128;row++)            
                {
                                                 if(Pixel[row]>ccd_max)     // 128点中最大值
                                                   ccd_max = Pixel[row];
                                                 
                                                 if(Pixel[row]<ccd_mix)     // 128点中最小值
                                                   ccd_mix = Pixel[row];          
                                         }
                                        ccd_maxhmix=  (ccd_max+ccd_mix)/2;
                                        if(ccd_maxhmix<90) {
                                          ccd_maxhmix=90;
                                        }
// ****** ******* 采用最大值最小值作为阀值    二值化    **********************/                       
                  for(row=0;row<128;row++)            //  二值化
               {
                        if(Pixel[row]>ccd_maxhmix)     //   以中间值作为阀值
                            Pixel[row]=1;
                        else  
                            Pixel[row]=0;
                                         }   
// ****************** ******* 二值化    **********************************/                       
                /*           for(row=0;row<128;row++)            //  二值化
               {
           if(Pixel[row]>PixelAverageValue)      //  PixelAverageValue 128点平均值 通过128个点的平均值确定阀值
                                                       Pixel[row]=1;
                                                    else  
                                                       Pixel[row]=0;
                                         }  */
// ************************去噪声*********************************/         
                    for(row=0;row<128;row++)             //  去噪声
                 {
                       if(Pixel[row]==0){          //  去噪声为0的时候
                         if((Pixel[row-1]==1)&&(Pixel[row+1]==1))
                             Pixel[row]=1;
                       }
                   
                     if(Pixel[row]==1){            //  去噪声为1的时候
                       if((Pixel[row-1]==0)&&(Pixel[row+1]==0))
                           Pixel[row]=0;
                     }
                                 }




如有更好的想法,加飞卡交流群: 79463909   大家一起学习交流      
也请大神过来赐教,大家一起学习交流

作者: startstart    时间: 2015-4-23 11:17
传上来后,页面大小变了,代码有点乱,大家凑合看下,如有疑问,进群聊
作者: zhou1994    时间: 2015-4-23 11:26
也是一个不周全的方案,先选择阈值后滤波,你可能就把干扰选进去了。
作者: startstart    时间: 2015-4-23 11:45
zhou1994 发表于 2015-4-23 11:26
也是一个不周全的方案,先选择阈值后滤波,你可能就把干扰选进去了。

如果用上一个滤波后采集值的话,会导致滞后,只能在给阈值做一个限制。你还有神马好的见解吗?

作者: zhou1994    时间: 2015-4-23 11:55
startstart 发表于 2015-4-23 11:45
如果用上一个滤波后采集值的话,会导致滞后,只能在给阈值做一个限制。你还有神马好的见解吗?

没什么好的见解。 不懂ccd的处理。

作者: 申继鹏    时间: 2015-4-23 12:34
为什么有两种二值化?一种是阈值是最大最小平均值,一种是128像素平均值?
作者: 飞思卡尔.呆萌    时间: 2015-4-23 21:49
这种二值化的方法不是很好,也不准确,余弦效应不可避免,还有就是最大值最小值只取一组有可能会出现误差,万一最大值是个噪点呢,最起码得再取一组次大值次小值取平均
作者: 飞思卡尔.呆萌    时间: 2015-4-23 21:51
去噪声的时候只出现两个点,也应该算是噪声
作者: 古先森    时间: 2016-5-23 23:13
取最大值不准确,我们的最大值会跳变到255




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