中船重工安譜(湖北)儀器有限公司 鄭學書 鄭 舟 陳 君
在現代分析儀器中,一種最常見的系統工作模式就是由采集系統采集模擬信號,然后通過AD轉換轉化成可供計算機分析使用的數字信號進行計算分析。在離子遷移譜技術中就廣泛使用了此類技術,離子電離和遷移之后形成連續的電信號,以曲線圖譜的形式呈獻給計算機系統。通過分析離子遷移譜的譜峰位置反推離子遷移的時間,進而確定物質類別。
在離子遷移譜譜峰識別中,通常會遇到基線浮動、噪聲干擾、峰形重疊等復雜情況,這給峰值查找和識別帶來了不小的挑戰,閾值法通常需要設計合理的閾值,但是實際應用中針對基線浮動的情況很難設計動態的閾值;基于導數的峰值查找算法往往容易受到峰形噪聲的干擾,特征峰甚至在求導之后可能被放大的噪聲掩蓋;小波變換和傅立葉變換雖然能夠在放大特診峰的同時弱化噪聲,但是計算復雜度較高,需要較高的計算成本。
在閾值法中,直接根據原始圖譜相對設定閾值的大小進行判斷,從左往右逐個值掃描,如果某個值大于設定閾值,則判定為峰起點,往右掃描過程中如果某個值小于設定閾值,則判定為峰終點,然后在起點和終點之間選擇值最大的位置作為峰的最高點。這種方式無法獲取峰的拐點信息,同時峰的起點和終點直接與設定的閾值相關,如果閾值設定過高,則會漏判,如果閾值設定過低,則會誤判。
一階導數法是一種最直觀的峰形識別算法,當原始圖譜一階導數為正且增大至設定閾值時,判定為峰的起點,當圖譜一階導數從正變為負,判定為峰的頂點,當圖譜的一階導數為負,且逐步增大至絕對值小于設定閾值,判定為峰終點。
二階導數法相比一階導數法靈敏度更高,同時能夠處理基線浮動的情況。但是二階導數由于經歷了兩次求導過程,對曲線上的細微噪聲進行了多次放大,導致二階導數上的噪聲和毛刺較為嚴重,這對于特征峰的識別較為不利。圖1是一個典型的導數法譜峰識別示意圖。
傅立葉變換揭示了時域與頻域之間內在的聯系,反映了“整個”時間范圍內信號的“全部”頻譜成分,是研究連續信號不可缺少的工具。由于離子遷移技術中的譜峰通常只會在某個特定的頻段內出現,因而可以將整個信號從高頻的噪聲信號中提取出來進行分析,但是傅立葉變換存在一個明顯的缺點,即無法反映非平穩信號在局部區域的頻域特征及其對應關系。

圖1 導數法譜峰識別
小波變換的興起,得益于其對信號的時域和頻域局域分析能力及其對一維有界函數的最優逼近性能,也得益于多分辨率分析概念。小波變換的核心思想來源于拉伸和平移。相對導數法和閾值法,小波變換和傅立葉變換一樣具有較高的計算復雜度,在某些特定的使用場景中具有一定的局限性。
在設計譜峰查找算法之前,需要對離子遷移譜技術中常見的峰形進行分析,以便準確的把握特征峰的形態特性,針對性的進行算法設計。通過觀察發現,特征譜峰一般以四種峰形為主,分別是獨立峰、駝型重疊峰、左肩型重疊峰和右肩型重疊峰。對于獨立峰,在峰的整個曲線段內不與任何其他峰重疊,由峰的形狀決定整段曲線的形狀;對于另外三種重疊峰,都是由于相鄰兩個峰的某一部分重疊造成的,重疊段的曲線是多個峰共同疊加的結果。圖2分別給出了四種常見峰形的示意圖。
對于獨立峰,判定峰起點、峰拐點、峰終點以及峰頂點都較為容易,而對于重疊峰,根據重疊區域的不同,往往很難確定這些具體參數。而且,根據離子遷移譜技術的理論原理,峰面積與被檢測物質濃度之間存在對應關系,在一些定量的檢測儀器中需要根據峰面積對物質濃度進行計算,這就對重疊峰的識別提出了實際的需求。綜合圖2所示的四種峰形,整理獲得如下特征點特性:
(1)峰起點:一個峰的起點需滿足該位置往后一段區間的一階導數呈現從0上升的趨勢
(2)左拐點:左拐點所在位置及鄰近位置處的一階導數從上升趨勢變為下降趨勢,且右側一段區間的一階導數值大于0;
(3)峰頂點:峰頂點所在位置應呈現一階導數從0下降的趨勢;
(4)左肩峰頂點:如果在找到峰左拐點之后向后查找,發現某位置一階導數從0上升,則表明此處是一個左肩峰;
(5)右拐點:右拐點所在位置附近的一階導數從下降趨勢表位上升趨勢,且右側鄰近區間的一階導數值小于0;
(6)峰終點:若是駝型重疊峰之間的谷點,峰終點處的原始曲線需從下降趨勢變為上升趨勢。若是非駝型重疊峰的峰終點,要同時滿足兩個條件:臨近區間內原始曲線不再下降;同時一階導數逐漸上升;
(7)右肩峰頂點:如果在找到右拐點之后向后查找,發現某位置一階導數從上升趨勢變為下降趨勢,且最左側鄰近區間的一階導數小于0,則表明下一個相鄰的峰是右肩峰。

圖2 四種圖譜峰形

圖3 滑動窗口示意圖

圖4 判定上升趨勢的判定過程
基于滑動窗口的譜峰識別算法的基本原理是基于曲線段的模式匹配,當處于滑動窗口的曲線段滿足匹配模式,即可將當前檢測點判定為峰形的某個特征點。從上述分析可知,匹配模式同時利用了原始圖譜和一階導數的曲線變化特征。圖3給出了識別獨立峰的峰起點、左拐點、峰頂點、右拐點以及峰終點的滑動窗口示意圖。
綜合分析算法實現原理,算法核心是判斷滑動窗口內的曲線變化模式,具體實現中通過calTrend()函數判斷滑動窗口內的曲線段變化趨勢。為了最大化的放大曲線段變化趨勢,弱化抖動和噪聲誤差,calTrend()使用累加趨勢法進行判斷。此處以判定上升趨勢為例進行說明,初始設定累加基數B=0,累加趨勢值P=0,從滑動窗口內的data[0]開始,若data[i]<=data[i+1],則B=B+1,P=P+B,若data[i]>data[i+1],則置B=0;如此重復直至到達窗口結束。如果累加趨勢值P大于設定閾值,則判定為曲線具有上升趨勢。圖4是一個判定上升趨勢的判定過程示意圖。
圖4中,計算的最終上升趨勢值為P=18,在窗口長度為10的情況下,一般設定判定閾值為14,因此可以判定該窗口內的數據呈現上升趨勢。可以發現,對于連續的上升過程,累加基數不斷被放大,因此連續上升的過程越長對最終的上升趨勢值P影響越大,這是連續上升趨勢被放大的體現,相反的,對于偶爾的噪聲和抖動,例如上圖中兩個5之間的數值3,計算過程中僅將B歸0而不影響P的值,這是噪聲和抖動被弱化的提現。通過這種方式,可以實現對滑動窗口內曲線段的趨勢判斷,進而實現譜峰識別。
算法設置之后使用C語言進行了實現,在某離子遷移譜項目中進行了調用,根據實際情況,設定窗口長度為10,趨勢判斷閾值為14進行了測試。測試結果表明,算法能夠在絕大多數情況下正確識別出圖譜的譜峰,且計算復雜度較低,對運行環境的要求相對寬松,在實際項目開發過程中能夠直接進行調用和參數設定,具有良好的擴展性和移植性。
與此同時,測試發現該算法也存在一定的缺陷,例如對于三種類型的重疊峰,在重疊面積較大的情況下算法可能產生漏判,后續可以通過增加曲線擬合等方式對譜峰識別結果進行二次篩選。
[1]王曉榮,程明霄.譜峰識別的計算機設計與實現[J].南京工業大學學報(自科版),2001,23(5).
[2]趙欣洋.離子遷移譜圖的譜峰識別系統的設計與實現[D].大連理工大學,2016.
[3]汪魯才,陳超華,王桃,等.水質檢測中色譜譜峰尋峰算法的設計與實現[J].計算機工程與應用,2017, 53(11).
[4]劉銘暉,董作人,辛國鋒,等.基于Voigt函數擬合的拉曼光譜譜峰判別方法[J].中國激光,2017(5).
[5]陳新華,姚璉,李安林,等.離子遷移譜的智能識別法及應用于易制毒化學品稽查[J].計算機與應用化學, 2007, 24(9).
[6]蔣顏瑋,趙將,邵晟宇,等.離子遷移譜檢測儀信號處理方法研究[J].測試技術學報,2013,27(6).
[7]周鵬,張文斌,王軍星,等.基于高斯擬合的光纖型SPR信號的峰值檢測算法[J].光譜學與光譜分析,2016.