基于光谱曲线波形相似度的光谱匹配方法

文档序号:6512879阅读:4742来源:国知局
基于光谱曲线波形相似度的光谱匹配方法
【专利摘要】本发明公开了一种基于光谱曲线波形相似度的光谱匹配方法。包括以下的步骤:1)制作待测样本;2)采集所有试验样本的光谱;3)计算原始光谱的一阶导数;4)去除一阶导数中的零值,使用紧邻零值一阶导数的非零一阶导数值替换零值一阶导数值;5)计算并统计两条光谱在相同波段的所有一阶导数的比值的平均值,将该平均值作为两条光谱之间的匹配度。本发明采用曲线波形相似度作为光谱匹配指标来判断光谱之间的相似度,降低了光谱匹配方法对光谱绝对强度的依赖。采用该方法具有更高的分类识别精度,对于提高光谱数据库查询速度和光谱数据库查询精确度具有重要的意义,有助于实现光谱数据信息共享和研究结果的推广。
【专利说明】基于光谱曲线波形相似度的光谱匹配方法
【技术领域】
[0001]本发明涉及一种光谱匹配方法,尤其是涉及一种基于光谱曲线波形相似度的光谱匹配方法。
【背景技术】
[0002]光谱分析法具有快速、无损、样本制作简单、多指标同时检测的优势。目前,光谱技术在众多的领域得以应用,如:使用红外分析法分析农副产品水分、蛋白质、糖类和脂肪的含量,转基因鉴别,对石油的成分进行测定等;使用中红外和拉曼光谱进行物质成分鉴定,农药残留,转基因鉴别等。随着光谱分析技术应用范围的不断拓展,大量的光谱数据需要管理和维护,分析结果和结论希望被共享。因此,光谱数据库管理系统应运而生。光谱匹配技术是支撑光谱数据库系统运行的最为重要的技术之一,它的精确与否关系到从数据库中所取得信息是否可用。因此,一个高精确度的光谱匹配方法是光谱数据库系统成败的关键。传统的全光谱匹配方法均直接采用光谱的吸光度(或反射率,或能量值)作为光谱匹配源数据。这些方法由于对光谱的绝对强度要求过于苛刻,往往无法正确匹配。因此,一种不直接依赖光谱吸光度值(或反射率值,或能量值)的光谱匹配方法是十分必要的。

【发明内容】

[0003]为了克服上述【背景技术】中存在的问题,本发明的目的在于提供一种基于光谱曲线波形相似度的光谱匹配方法,通过光谱曲线的线型相似度,降低了光谱匹配方法对光谱绝对强度的依赖。
[0004]本发明采用的技术方案的步骤如下:
1)制作实验样本;
2)采集实验样本光谱并将光谱各自独立保存为xlsx格式的文件;
3)计算实验样本光谱曲线的一阶导数:所述光谱的第i点的一阶导数为第1、i+l点之间的线段斜率;
4)去除零值一阶导数:采用紧邻零值一阶导数的非零一阶导数替换零值一阶导数值;
5)计算实验样本光谱与参照光谱之间的匹配度:计算并统计相比较的两条光谱在相同波段的所有一阶导数的比值的平均值,将该平均值作为相比较的两条光谱之间的匹配度。
[0005]所述步骤4)中去除零值一阶导数,具体方法是:
采用紧挨零值一阶导数的非零一阶导数值替换零值一阶导数,转换后光谱一阶导数仅有负值和正值,负值一阶导数表示光谱在对应的区域为单调递减,正值一阶导数表示光谱在对应的区域为单调递增。
[0006]所述步骤5)中计算相比较的两条光谱之间的匹配度,具体方法是:
在相同的波段,比较相比较的两条光谱的一阶导数大小,使用绝对值较小者与绝对值较大者的比值作为该标段范围内两条光谱的相似度,依次计算相比较的两条光谱在所有波段范围内的相似度,最后计算所有波段相似度的平均值。[0007]所述单调递减或单调递增不包含光谱的绝对强度,因此,基于曲线波形相似度的光谱匹配方法是一种模糊匹配方法。
[0008]本发明具有的有益效果是:
本发明采用曲线波形相似度作为光谱匹配指标来判断光谱之间的相似度,降低了光谱匹配方法对光谱绝对强度的依赖。采用该方法具有更高的分类识别精度,对于提高光谱数据库查询速度和光谱数据库查询精确度具有重要的意义,有助于实现光谱数据信息共享和研究结果的推广。
【专利附图】

【附图说明】
[0009]图1是原始光谱曲线。
[0010]图2是一阶导数光谱曲线。
[0011]图3是基于曲线波形相似度的光谱匹配方法流程图。
【具体实施方式】
[0012]下面结合附图和【具体实施方式】对本发明做进一步的说明。
[0013]如图3所示,本发明包括如下步骤:
1)制作实验样本;
2)采集实验样本光谱并将光谱各自独立保存为xlsx格式的文件;
3)计算实验样本光谱曲线的一阶导数:所述光谱的第i点的一阶导数为第1、i+l点之间的线段斜率;
4)去除零值一阶导数:采用紧邻零值一阶导数的非零一阶导数替换零值一阶导数值;
5)计算实验样本光谱与参照光谱之间的匹配度:计算并统计相比较的两条光谱在相同波段的所有一阶导数的比值的平均值,将该平均值作为相比较的两条光谱之间的匹配度。
[0014]所述步骤4)中去除零值一阶导数,具体方法是:
采用紧挨零值一阶导数的非零一阶导数值替换零值一阶导数,转换后光谱一阶导数仅有负值和正值,负值一阶导数表示光谱在对应的区域为单调递减,正值一阶导数表示光谱在对应的区域为单调递增。
[0015]所述步骤5)中计算相比较的两条光谱之间的匹配度,具体方法是:
在相同的波段,比较相比较的两条光谱的一阶导数大小,使用绝对值较小者与绝对值较大者的比值作为该标段范围内两条光谱的相似度,依次计算相比较的两条光谱在所有波段范围内的相似度,最后计算所有波段相似度的平均值。
[0016]所述单调递减或单调递增不包含光谱的绝对强度,因此,基于曲线波形相似度的光谱匹配方法是一种模糊匹配方法。
[0017]如图1、图2所示,分别为原始光谱(即实验样本光谱或参照光谱)曲线及它的一阶导数光谱曲线。原始光谱曲线为分段函数,其一阶导数光谱曲线亦为分段函数。每个原始光谱曲线的分段对应一个一阶导数值,每个一阶导数值等于对应光谱分段的斜率,即光谱的第i个点与第i+ι个点之间的线段的斜率为第i个一阶导数值(为方便起见,将第1、i+l个数据点之间导数值赋值于第i个光谱数据点的一阶导数保存单元)。
[0018]实施例: 本实例采用苹果近红外光谱作为测试对象,对基于曲线波形相似度的光谱匹配方法进行详细的说明。
[0019]I)采集样本近红外光谱。具体过程:将苹果样本分别经过样本筛选、样本清洗、样本标号、光谱采集区域选择、样本状态调整等步骤;打开光谱仪,将各项参数设置为预定参数,打开光源进行光谱仪预热,100分钟后开始光谱采集;将苹果样品按照I号光谱采集区域对准光斑,果梗和花萼间的连线呈水平状摆放在事先安放好的软质样品支架上,检查样本周围是否有漏光,确认无漏光后开始光谱采集;按照上述方式,继续采集2、3号光谱采集区域光谱;计算1、2、3号光谱采集区域所采集光谱的平均光谱avg,将此光谱作为样本光
-1'TfeP曰。
[0020]所述样本为甘肃红富士 1-100号,陕西红富士 1-100号和山东红富士 1-100号。
[0021]2)将所采集的样本光谱及样本信息导入光谱数据库。将光谱数据转换为字符串,保存到光谱数据库中。
[0022]所述数据库采用Microsoft SQL Server 2008 R2作为数据库管理系统。
[0023]所述光谱数据格式为.xlsx格式文件。
[0024]所述字符串包括光谱的吸光度字符串和光谱的波段字符串。
[0025]所述字符串中的每个吸光度值使用链接。
[0026]具体转换方法是:
从起始波段开始,依次将第i个(从O到η-1,η为光谱数据点数,本实施例中η等于2179)吸光度值转换为字符串,并使用“链接为目标字符串。具体过程通过下面的程序实现:
CString temp=””;(临时字符串变量,用于转换和保存当前吸光度转换得到的字符串)。
[0027]CString aim=””;(目标字符串变量,用于拼接和保存已经转换的所有吸光度字符串X
[0028]for(int i=0; i〈n; i++)(从起始波段到终止波段,挨个转换并拼接,直到所有的吸光度值都转换完毕)。
[0029]{temp.Format ( “%f”,absorbance [i]);(将第 i 个吸光度值转换为字符串)。
[0030]aim=aim+temp+”_”;}(拼接字符串)。
[0031]所述波段字符串组成形式为:“起始波段+终止波段+数据点数”。按照上述方式,依次将所有样品光谱添加到数据库中。
[0032]3)打开一条未知样品光谱,进行数据库查询。具体实现方法是:通过应用软件打开一条样品光谱,点击软件菜单中的“数据库查询”菜单项,进行数据库查询。查询过程将计算样品光谱和所有参照光谱之间的相似度。
[0033]所述软件为作者开发的数据库系统前台操作软件。
[0034]所述参照光谱为保存在光谱数据库中光谱。光谱还原程序负责将以字符串形式保存的参照光谱(reference)还原为原始的光谱。具体的还原过程由以下程序实现:
int i=0;(用于记录当前还原的数据点序号)。
[0035]int mark=0;(用于标记字符串中连接符为位置)。
[0036]int Iength=O;(计算原字符串长度)。
[0037]CString temp=”” ;(临时保存当前数据点吸光度字符串)。[0038]do{(循环控制,没有连接符为止)。
[0039]mark=reference.Find( ;(从左向右寻找当前参照光谱字符串中的第一个连接符)。
[0040]temp=reference.Left (mark);(截取当前参照光谱字符串中的第一个吸光度字符串X
[0041]absorbance [i] =aoti (temp);(将当前数据点吸光度字符串转换为浮点型数据,实现光谱吸光度数据的还原和保存)。
[0042]Iength=Ien(reference);(计算当前参照光谱字符串的长度)。
[0043]reference=reference.Right (length-mark-l);(截断参照光谱字符串,删除已经还原的部分)。
[0044]i++;(数组下标自增)。
[0045]} while (mark>0)(当没有连接符时,结束还原过程)。
[0046]按照以上操作步骤,将参照光谱逐一还原。
[0047]4)光谱匹配。在完成对参照光谱的还原之后,应用程序依次计算样品光谱和参照光谱之间的相似度。具体过程:计算样品光谱和参照光谱一阶导数,去除一阶导数中的零值,按照本发明涉及的全光谱匹配算法计算光谱相似度。该过程可以通过以下的程序实现:
计算和转换样品光谱一阶导 数:
for (int i=0; i〈n_l; i++)(在全光谱范围内计算光谱一阶导数)。
[0048]{sample, firstderivate[i].y=( sample, absorbance[i+1]-sample
? absorbance [i]) / (sample, band [i+1] -sample.band[i]);(计算样品光谱的一阶导数)。
[0049]if (sample, f isrtderivate [i].y==0)(判断当前样品光谱当前位置为一阶导数是否为0,如果为0,则将使用前面的非O值替换)。
[0050]sample, firstderivate [i].y= sample, firstderivate [1-1].y;(替换零值一阶导数)。
[0051]sample, fisrtderivate[i].x=sample.band[i];(使用原始光谱第 i 个数据点的波段值对第i个一阶导数的波段值进行赋值)。
[0052]计算和转换所有参照光谱的一阶导数:
for (int i=0; i<records; i++)(对所有的参照光谱,计算并转换其一阶导数。) for (int j=0; j<n; j++)(对每一条光谱,计算并转换其一阶导数)。
[0053]{reference[i].firstderivate[j].y=(reference[i].absorbance[j+1]-
reference [i].absorbance [ j]) / (reference [i].band [j + 1]-reference [i].band[j]);(计算第i个参照光谱的第j个一阶导数)。
[0054]if (reference [i].f irstderivate [ j].y==0)(判断第 i 个参照光谱的第 j 个一阶导数值是否为0)。
[0055]reference[i].firstderivate[j].y= reference[i].firstderivate[j-1].y;(如果第i个参照光谱的第j个一阶导数值等于零,将其使用第j-1个一阶导数值替换)。
[0056]reference [i].firstderivate [j].x=reference [i].band[j] ;}(为第 i 个参照光谱的第j个一阶导数的波段值赋值)。
[0057]按照以上方式将所有的参照光谱从字符串形式还原为原始光谱数据形式。
[0058]计算样品光谱和参照光谱之间的匹配度:
float count=0;(统计变量申明,用于统计参照光谱与样品光谱一阶导数相等的点数)。
[0059]float temp=0;(临时变量申请)。
[0060]float *HIT=new float [records];(匹配度保存变量申请)。
[0061]for (int i=0; i<records; i++)(与所有的参照光谱进行匹配)。
[0062]{count=0;(对上次循环累计值清零)。
[0063]for (int j=0; j〈n_l; j++)(在全光谱范围内循环,进行光谱匹配)。
[0064]{if (abs (sample, f isrtderivate [ j].y) <abs (reference [i].f irstderivate [ j].y))
temp=sample.fisrtderivate[j].y/ reference[i].firstderivate[j].y;else temp= reference[i].firstderivate[j].y/sample.fisrtderivate[j].y;(使用绝对值较小的一阶导数与绝对比较大的一阶导数的比值作为当前波段的相似度)。
[0065]count=count+temp;}(累加当前波段匹配度)。
[0066]HIT[i] =Count/(η-1) ;}(计算平均匹配度,相似度阈值为0-1,O表示完全不匹配,I表示完全匹配)。
[0067]按照以上方式,计算样品光谱与所有参照光谱之间的匹配度。
[0068]上述【具体实施方式】用来解释和说明本发明,而不是对本发明进行限制,在本发明的精神和权利要求的保护范围内,对本发明做出的任何修改和改变都落入本发明的保护范围。
【权利要求】
1.一种基于光谱曲线波形相似度的光谱匹配方法,其特征在于包括如下步骤: 1)制作实验样本; 2)采集实验样本光谱并将光谱各自独立保存为xlsx格式的文件; 3)计算实验样本光谱曲线的一阶导数:所述光谱的第i点的一阶导数为第1、i+l点之间的线段斜率; 4)去除零值一阶导数:采用紧邻零值一阶导数的非零一阶导数替换零值一阶导数值; 5)计算实验样本光谱与参照光谱之间的匹配度:计算并统计相比较的两条光谱在相同波段的所有一阶导数的比值的平均值,将该平均值作为相比较的两条光谱之间的匹配度。
2.根据权利要求1所述的一种基于光谱曲线波形相似度的光谱匹配方法,其特征在于:所述步骤4)中去除零值一阶导数,具体方法是: 采用紧挨零值一阶导数的非零一阶导数值替换零值一阶导数,转换后光谱一阶导数仅有负值和正值,负值一阶导数表示光谱在对应的区域为单调递减,正值一阶导数表示光谱在对应的区域为单调递增。
3.根据权利要求1所述的一种基于光谱曲线波形相似度的光谱匹配方法,其特征在于:所述步骤5)中计算相比较的两条光谱之间的匹配度,具体方法是: 在相同的波段,比较相比较的两条光谱的一阶导数大小,使用绝对值较小者与绝对值较大者的比值作为该标段范围内两条光谱的相似度,依次计算相比较的两条光谱在所有波段范围内的相似度,最后计算所有波段相似度的平均值。
4.根据权利要求2所述的一种基于光谱曲线波形相似度的光谱匹配方法,其特征在于:所述单调递减或单调递增不包含光谱的绝对强度,因此,基于曲线波形相似度的光谱匹配方法是一种模糊匹配方法。
【文档编号】G06F17/30GK103488751SQ201310437964
【公开日】2014年1月1日 申请日期:2013年9月24日 优先权日:2013年9月24日
【发明者】应义斌, 周万怀, 谢丽娟 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1