C# 光谱平滑去噪

 

  由于光谱仪内部元件在光谱测定过程中产生一些噪声,对光谱曲线有一定干扰,因此需要对原始光谱曲线进行平滑去噪处理,平滑去噪通常有傅立叶级数近似法、移动平均法和静态平均等方法。本文采用移动平均法对所测植物光谱曲线进行平滑去噪,选取光谱曲线上待测点前后某一波段范围的平均值,作为该点的值。计算公式如下:

  

  本文选择前后5个数据进行平均,下面用C#语言实现:

  private List<PointF> pointsXY = new  List<PointF>();//存储原始光谱信息数据

  private List<PointF> pointsXY_Smooth = new  List<PointF>();//存储平滑去噪后光谱信息数据

 1         pointsXY_Smooth.Clear();           
 2             for (int i = pointsXY.Count-1; i >= 0; i--)
 3             {
 4                 float yy = 0;
 5                 if (i < 5)
 6                 {
 7                     for (int m = 0; m < i; m++)
 8                     {
 9                         yy += pointsXY[i - m].Y;
10                     }
11                 }
12                 else
13                 {
14                     for (int m = 0; m < 5; m++)
15                     {
16                         yy += pointsXY[i-m].Y;
17                     }
18                 }                
19                 pointsXY_Smooth.Add(new PointF
20                 {
21                     X = pointsXY[i].X,
22                     Y = yy/5
23                 });
24             }

 

posted @ 2017-03-04 13:17  gis实践者  阅读(2916)  评论(0)    收藏  举报