吳雪梅
(西安文理學院化學工程學院,陜西 西安 710065)
近年來傅里葉變換近紅外光譜儀在近紅外光譜分析中得到了廣泛地應(yīng)用[1-3]。干涉圖相位校正是傅里葉變換近紅外光譜儀中的重要步驟,相位校正質(zhì)量的高低直接影響到光譜的預(yù)測性能。最早提出的相位校正算法是Mertz算法[4],它認為實測干涉圖相對于理想干涉圖有一定的延時,從而導(dǎo)致光譜有線性的相位誤差,通過頻域進行相位校正,可消除相位誤差的影響從而提高光譜的質(zhì)量。隨后的Forman算法[5]在干涉圖領(lǐng)域直接對干涉圖進行相位校正。Mertz算法與Forman算法校正方式不同,但在數(shù)學上已證明這兩種算法是等效的[6]。目前大部分傅里葉變換光譜儀都內(nèi)置了Mertz算法進行相位校正。R.Furstenberg和J.White[7-8]讓干涉圖通過全通濾波器的方式實現(xiàn)了相位校正。與Mertz算法不同,全通濾波器法認為相位誤差是非線性的。不管是Mertz算法、Forman算法還是全通濾波器算法,它們所描述的相位誤差都可以用參數(shù)來表示,如Mertz或Forman算法中相位誤差與波長之間的關(guān)系可通過一元函數(shù)來表示,全通濾波器算法中相位誤差與波長之間的關(guān)系可用非線性函數(shù)來表示。所以可以認為,Mertz或Forman算法是全通濾波器法的特例,即非線性函數(shù)關(guān)系退化為線性關(guān)系的情況。因此,可以采用參數(shù)化的模型來描述干涉圖的相位誤差,即認為相位誤差與波長之間存在某種非線性關(guān)系(如多項式關(guān)系),通過實測干涉圖來擬合這種關(guān)系并用于相位校正。采用這種方法的核心是通過實測干涉圖來擬合出模型的參數(shù)。
Mertz算法、Forman算法及全通濾波器算法的另一個不足:對每條干涉圖都要進行相位校正,計算量較大。實際上,一臺儀器在相同條件下測試所引入的相位誤差是幾乎不變的,因此可以利用前期多條干涉圖進行相位校正的結(jié)果對后續(xù)測量的干涉圖進行相位校正,以提高處理效率。本文將研究利用參數(shù)化模型的干涉圖相位校正方法,并利用模型參數(shù)對測量干涉圖進行相位校正。
為方便求解,此處將模型設(shè)置為多項式,即相位誤差與波數(shù)之間存在函數(shù)關(guān)系。
(1)
式中,φ(v)為是相位誤差,v為波數(shù),v0為參考波數(shù),an為多項式系數(shù),N為多項式階數(shù)。
該模型中,認為所有干涉圖的相位誤差都是上式的結(jié)果,實測的干涉圖利用上式的函數(shù)關(guān)系即可實現(xiàn)干涉圖相位校正。設(shè)第k條干涉圖進行傅里葉變換后得到的光譜為xk(v),其中,v=v0,v1,…,vM,v0為需要校正的最小波數(shù),vM為需要校正的最大波數(shù),利用式(1)進行相位校正后,所得到的光譜sk(v)為:
(2)
其中,j為虛數(shù)單位
若干涉圖被完全校正,那么sk(v)為實數(shù),但實際測量中,存在一些誤差與偶然因素,sk(v)還會有虛部。顯然,sk(v)的虛部越小,干涉圖校正效果越好。為了使各條干涉圖都得到較好的校正,需要使下式取得最小值。
(3)
式中,函數(shù)Im(·)表示對復(fù)數(shù)取虛部,K為干涉圖數(shù)目。上式的含義是使各干涉圖校正后光譜的虛部平方和最小。
顯然很難利用sk(v)直接求得多項式系數(shù)an或相位誤差φ(v),對an的求解需采用最優(yōu)化算法進行求解,計算出an后,代入式(1)即可求出相位誤差,利用該相位誤差便可代入式(2)計算干涉圖(可以是建模用的干涉圖,也可以是非建模使用的干涉圖)對應(yīng)的光譜。
這里采用粒子群優(yōu)化算法[9]進行優(yōu)化求解,粒子的第n維代表多項式系數(shù)an。
步驟2.1.1:設(shè)定模型階數(shù)N及粒子群參數(shù),如粒子群規(guī)模、粒子維數(shù)(N+1)、最大迭代次數(shù)、優(yōu)化目標等。
步驟2.1.2:對K條實測干涉圖進行傅里葉變換(去趾函數(shù)選blackmanharris),確定需要的波數(shù)v0~vM,獲得光譜xk(v)。
步驟2.1.3:將式(3)作為代價函數(shù),采用粒子群優(yōu)化算法進行優(yōu)化計算,獲得最優(yōu)解an。
步驟2.1.4:將計算出的an存儲,供干涉圖校正使用。
步驟2.2.1:對干涉圖進行傅里葉變換(去趾函數(shù)選blackmanharris),選擇需要的波數(shù)v0~vM,構(gòu)成光譜x(v)。
步驟2.2.2:將an系數(shù)代入式(2),計算光譜s(v)。
步驟2.2.3:取s(v)的實部作為干涉圖校正后的光譜。
以上步驟獲得的是干涉圖對應(yīng)的光譜,在光譜分析中,往往需要被測樣品的吸光度,對吸光度的計算可以采用下式:
(4)
式中,sb(v)為背景光譜,獲得它的方法同樣按上述步驟。
本實驗對象是乙醇溶液,先配制濃度為2%~61%的溶液60個,相鄰濃度間隔1%。采用Bruker近紅外傅里葉變換光譜儀VERTEX70測量各溶液的干涉圖與光譜(光譜是儀器采用Mertz算法進行相位校正的)。測量過程中對干涉圖進行雙邊采樣,測量點數(shù)為15240,所得光譜的最大波數(shù)為15798.25cm-1。根據(jù)吸光度曲線,選擇波數(shù)范圍為7500~13000cm進行建模與分析。建模過程中,將模型階數(shù)N設(shè)置為3,粒子群規(guī)模為20,最大迭代次數(shù)為3000,優(yōu)化目標為0。
分別利用儀器所測光譜圖(即Mertz算法校正相位誤差的光譜)與本算法校正的光譜進行溶液濃度預(yù)測,預(yù)測算法是偏最小二乘法(PLS)。在預(yù)測與建模中,設(shè)置數(shù)據(jù)預(yù)處理方法為自動尺度(auto scale),并采用留一交叉檢驗法確定隱變量數(shù)。濃度為3%,6%,……,60%(間隔3%)的樣本作為預(yù)測集,其余樣本作為校正集進行建模與預(yù)測。實驗結(jié)果如表1所示。
表1 不同方法預(yù)測結(jié)果對比
從以上結(jié)果可以看出,采用本文方法后,校正后的干涉圖所得光譜比Mertz算法校正干涉圖所得光譜預(yù)測能力略好,一旦利用本文方法確定了干涉圖相位校正參數(shù)后,新測的干涉圖便可利用校正步驟進行相位校正,無需再采用Mertz算法確定相位誤差。本文方法能替代Mertz算法進行干涉圖相位校正,提高干涉圖處理效率。
本文認為干涉圖相位誤差與波數(shù)之間存在較復(fù)雜的穩(wěn)定關(guān)系,該關(guān)系可通過多項式進行描述。對干涉圖進行相位校正算法共分兩部分,第一部分利用部分干涉圖進行多項式相位誤差擬合,通過優(yōu)化計算確定模型參數(shù)。第二部分利用確定的參數(shù)對干涉圖進行相位校正,以獲得校正后的光譜。通過實驗證明,本方法進行干涉圖相位校正后所得的光譜在組分預(yù)測性能上比Mertz算法好。由于在確定模型參數(shù)后,該方法不需要像Mertz算法一樣對每條干涉圖重新計算相位誤差,從而使得相位校正效率大大提高。本方法能替代Mertz算法進行干涉圖相位校正。