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 }

浙公网安备 33010602011771号