游騰飛,鐘舜聰,2*,鐘劍鋒,張秋坤,羅曼婷
(1.福州大學(xué)機械工程及自動化學(xué)院,福建福州350108;2.福建省醫(yī)療器械和生物技術(shù)重點實驗室,福建福州350000)
自1991年David Huang 等人[1]提出光學(xué)相干層析技術(shù)(optical coherence tomography,OCT)以來,該技術(shù)就得到了迅速的發(fā)展。OCT 技術(shù)朝著更高分辨率、實時性、功能化和信息特異化方向發(fā)展,同時,OCT 系統(tǒng)朝著小型化方向發(fā)展,更好地滿足使用需求[2]。因為頻域OCT 系統(tǒng)不需要參考臂進行深度方向的掃描,相比時域OCT 系統(tǒng)大大縮短了成像時間,使得OCT系統(tǒng)實時成像成為可能[3-5]。為了再提高成像速度,頻域OCT 系統(tǒng)從一維頻域OCT 系統(tǒng)發(fā)展到二維的頻域OCT 系統(tǒng)[6-7]。因為二維系統(tǒng)一次采集成像便可產(chǎn)生二維的樣品信息圖像,相比一維OCT 系統(tǒng)需要進行多次采集來構(gòu)成相同的二維的樣品圖像而言,二維OCT系統(tǒng)在成像速度上大為提高,提高了OCT 系統(tǒng)成像的實時性。
頻域OCT 系統(tǒng)中包含CCD 相機、PZT 移相器、線性電動移動平臺等,為此,研究者需要開發(fā)出能夠協(xié)調(diào)驅(qū)動這些硬件的控制軟件,使得所搭建的OCT 系統(tǒng)形成有機整體,并對數(shù)據(jù)進行處理和圖像重構(gòu)等工作。
VC++編程能力和代碼的執(zhí)行效率高,對硬件的控制能力強。但是在圖形處理和數(shù)據(jù)分析運算等方面代碼復(fù)雜、編程難度大,不利于需要圖形處理和數(shù)據(jù)分析運算的軟件的開發(fā)和維護。Matlab 具有強大的數(shù)據(jù)處理分析能力和繪圖能力,使得其在算法研究等科學(xué)領(lǐng)域中廣泛運用[8-12]。但是Matlab 代碼不能離開其運行環(huán)境而獨立運行,并對底層的硬件控制能力和效率都不如VC++高。為此,在軟件開發(fā)過程中,要是能結(jié)合VC++和Matlab 各自的優(yōu)點[13],就可以降低軟件開發(fā)難道,提高軟件的開發(fā)效率。
本研究采用VC++與Matlab 混合編程技術(shù)開發(fā)二維頻域光學(xué)相干層析成像系統(tǒng)。
二維相干層析系統(tǒng)示意圖如圖1所示。由圖1 可見,和一維頻域光學(xué)相干層析系統(tǒng)的組成相類似,二維相干層析系統(tǒng)可以分為:光源、樣品臂、參考臂、信號探測端等部分。不同之處在于平行光入射到分光鏡之前,會先經(jīng)過柱透鏡。經(jīng)過柱透鏡后,平行光會被匯聚成一條線。利用這條匯聚的光線照射到待測樣品表面,那么一次采集便能生成這條光線上待測樣品的結(jié)構(gòu)信息。相比一維的單點成像需要多次采集而拼構(gòu)成一條二維的待測樣品的結(jié)構(gòu)信息而言,二維的系統(tǒng)大大提高了成像速度。
圖1 二維相干層析系統(tǒng)示意圖
由圖1 可見,光源發(fā)出的寬帶弱相干光被透鏡聚焦后進去光纖傳輸,而后從光纖輸出的光通過透鏡后準(zhǔn)直成一束平行光。該束平行光通過柱透鏡后聚焦成一條線,透過分光鏡后,被分成兩束。其中一束入射到PZT 參考鏡中并被參考鏡發(fā)射回來形成參考光;另一束入射到待測樣品并被待測樣品后向散射或者反射回來,形成樣品光。參考光和樣品光返回分光鏡后相遇,倘若參考臂和樣品臂光程在一個相干長度范圍內(nèi),那么兩束光將發(fā)生干涉,形成干涉光。該干涉光在被CCD 相機采集之前,還需要使用光柵將該干涉光按波長分開,最后被CCD 相機采集并上傳到電腦中進行數(shù)據(jù)處理分析和圖像重構(gòu)。
系統(tǒng)中柱透鏡使用型號為THORLABS 公司的LJ1821L1-B,焦距f=50 mm。線性移動平臺使用THORLABS 公司型號為MTS50/M-Z8 的電動平臺。該電動平臺行程為50 mm,分辨率為29 nm。CCD 相機使用深圳迪美捷公司型號為DC140M 相機,該相機有效像素為1 360×1 024,在該分辨率下幀率為7.5 fps,像元尺寸為4.65 μm×4.65 μm。驅(qū)動PZT 移相器的NI 卡采用NI 公司型號為NI USB-6009 的NI 卡。該NI 卡具有12 位數(shù)字I/O 輸出端,輸出電壓范圍為0~5 V。
在硬件系統(tǒng)搭建完畢后,還需要開發(fā)出相應(yīng)的控制軟件系統(tǒng),才能使整套系統(tǒng)正常工作,為后續(xù)對光學(xué)相干層析的研究提供便利。為獲得高效的代碼執(zhí)行效率、硬件控制能力,以及數(shù)據(jù)分析和圖像處理能力,本研究利用VC ++和Matlab 混合編程技術(shù),充分利用軟件各自的優(yōu)點,開發(fā)高效的控制軟件。
在VC++中調(diào)用Matlab 進行混合編程比較常用的方法有:①利用Matlab 引擎;②利用Matlab 自帶的MCC 編譯器;③利用MATCOM 編譯器;④利用Matlab的COM Build 工具等方法。以上方法各具優(yōu)點和不足,根據(jù)實際需要,選擇合適的方法,才能取得事半功倍的效果。二維光學(xué)相干層析技術(shù)需要進行二維甚至三維的顯示以及比較復(fù)雜的圖像處理,如果能夠充分利用Matlab 提供的圖像工具箱和圖像函數(shù),那么對軟件的開發(fā)將大大減小難度,代碼直觀,利于升級和維護。為此,選擇在VC ++中調(diào)用Matlab 引擎的方法相比其他方法具有明顯的優(yōu)勢。
基于VC ++和Matlab 開發(fā)的軟件,所需驅(qū)動的硬件設(shè)備包括:①NI 卡,用于控制PZT 移相器產(chǎn)生移相;②線性電動移動平臺,用于帶動待測樣品進行橫向掃描;③面陣CCD 相機,用于對干涉光進行采集。這些設(shè)備產(chǎn)商都有提供SDK 工具包,便于根據(jù)需要進行二次開發(fā)。程序界面如圖2所示。
圖2 控制軟件運行界面
如圖2所示,軟件主要包括干涉圖像顯示區(qū)、線性電動移動平臺控制界面以及一些輸入框和控制按鈕。干涉圖像顯示區(qū)主要是用于顯示CCD 相機采集到的干涉信號(如圖2 中左半部分黑白相間的干涉條文)。CCD 相機自身可以根據(jù)光強條件自動調(diào)節(jié)曝光時間等參數(shù),也可以根據(jù)需要人工對包括曝光時間、對比度等參數(shù)進行設(shè)定。
電動平臺控制界面用于對線性電動移動平臺的控制,達到對樣品進行掃描的目的??梢愿鶕?jù)需要設(shè)定電動平臺的加速度、最大速度以及步進距離等運動參數(shù)。
當(dāng)需要對待測樣品進行實時成像的時候,本研究調(diào)節(jié)好光路,選擇成像所需的方法,單機“監(jiān)測數(shù)據(jù)”按鈕,程序便開始驅(qū)動CCD 相機進行干涉信號的采集,驅(qū)動PZT 移相器移相以及調(diào)用Matlab 引擎進行數(shù)據(jù)處理分析和圖像顯示。
程序流程圖如圖3所示。
圖3(a)為一次實時成像的流程圖,在關(guān)閉實時成像之前,程序一直按照該流程進行重復(fù)的圖像顯示。各硬件初始化完成后,單擊“監(jiān)測數(shù)據(jù)”按鈕,程序控制NI 卡輸出預(yù)設(shè)定的電壓(電壓程序預(yù)設(shè)定好,也可根據(jù)需要在界面輸入而修改默認設(shè)定),移相器接受電壓而伸長(移相),而后驅(qū)動CCD 采集在該相位的干涉圖,并傳輸并存儲到計算機內(nèi)存中,完成一副干涉圖的采集。如果還需另一個相位的圖像,則NI 卡重新輸出另一電壓值,驅(qū)動PZT 移相器產(chǎn)生另一伸長量,CCD 相機再進行一次數(shù)據(jù)采集,并存儲到計算機內(nèi)存中。如果不需其他相位的干涉圖,則程序調(diào)用Matlab引擎,對剛保存在計算機內(nèi)存的數(shù)據(jù)進行處理分析,并完成繪圖進行顯示。至此便完成一次實時成像。
圖3 控制流程圖
如果需要對圖像的數(shù)據(jù)進行保存,方便日后使用和分析處理,也可以單擊“采集數(shù)據(jù)”按鈕進行數(shù)據(jù)采集??刂屏鞒虉D如圖3所示。采集數(shù)據(jù)之前,先設(shè)定好數(shù)據(jù)所保存的位置,電動移動平臺的步距以及所需采集的次數(shù)等。在完成各硬件初始化后,NI 卡輸出電壓,驅(qū)動PZT 移相器產(chǎn)生移相,接著CCD 相機采集待測樣品某個位置在該相位下的干涉數(shù)據(jù),保存到剛才設(shè)定的位置。如果還需其他相位的數(shù)據(jù)采集,則NI 卡再次輸出電壓,PZT 發(fā)生移相器發(fā)生相移,然后CCD 再次采集數(shù)據(jù)并保存數(shù)據(jù)。如果待測樣品該位置數(shù)據(jù)采集結(jié)束,則驅(qū)動電動移動平臺運動一個步距的距離,重新按照上述再次進行另外一個位置的數(shù)據(jù)的采集。
筆者在完成二維頻域光學(xué)相干層析系統(tǒng)的硬件搭建和軟件開發(fā)調(diào)試后,進行對樣品進行成像,測試系統(tǒng)的可行性。所使用待測樣品為透明膠帶。該種透明膠帶由塑料薄膜層和膠水層組成。塑料薄膜層、膠水層以及空氣這三者之間它們的折射率都不相同,因此在光通過他們的分界面時,由于折射率的變化,光會產(chǎn)生反射現(xiàn)象,那么對該透明膠帶進行成像,會分出兩層三個界面。
CCD 相機獲取的干涉信號除了攜帶樣品結(jié)構(gòu)信息的干涉條文,還包含很強的直流噪聲,以及自相干噪聲等。為了防止直流噪聲以及自相干噪聲等對最后的結(jié)果產(chǎn)生影響,筆者在對干涉信號進行傅里葉變換前,需要先去除直流噪聲。
經(jīng)過對CCD 采集的干涉信號去除直流分量后,筆者對信號做傅里葉變換,最終便可以形成待測樣品的結(jié)構(gòu)信息。透明膠帶結(jié)構(gòu)信息圖如圖4所示。
圖4(a)左半部分(或右半部分)可以看出具有3條亮線,其中一條比較明亮,另外兩條比較弱。其中比較亮的一條為透明膠帶不黏的那一面的表面,中間那條表示的透明膠帶的塑料薄膜和膠水薄膜的分層界面,最左邊的一條為膠水和基體的分界面面。圖4(b)左半部分(或右半部分)也可以清晰地看出曲線具有3個峰,相應(yīng)地對應(yīng)不同的分層界面??梢钥闯鲈摻Y(jié)果也是符合透明膠帶的實際情況的。
圖4 透明膠帶結(jié)構(gòu)信息圖
然而,如果僅僅去除直流分量后做傅里葉變換,傅里葉變換后將會產(chǎn)生共軛鏡像,如圖4所示,在圖像的左右各有一個以光程差為零的點為對稱軸相對稱的圖像。假如零光程差的位置在樣品內(nèi)部,則勢必造成樣品的結(jié)構(gòu)信息圖像與其共軛鏡像相重疊,無法分辨樣品結(jié)構(gòu)信息的問題。
為解決該問題方法有:①將零光程差的位置調(diào)節(jié)到樣品外部,這樣就不會造成混疊;②去除共軛鏡像。
本研究采用第二種方法,采用五步移相法,重新構(gòu)造復(fù)數(shù)函數(shù)[14],再進行傅里葉變換,從而去除共軛鏡像,去除共軛鏡像后透明膠帶結(jié)構(gòu)信息如圖5所示。圖5 中(a)圖和(b)圖中均只有圖4 中對應(yīng)的(a)圖和(b)圖的左半部分的樣品結(jié)構(gòu)信息了。
對比圖4 和圖5 可知,五步移相法不僅把共軛鏡像去除,而且還增強了圖像的信噪比。
基于VC++和Matlab 的二維頻域光學(xué)相干層析成像系統(tǒng)具有易于操作,便于維護和升級的特點。在系統(tǒng)測試過程中,筆者對一層透明膠帶進行了成像,成像結(jié)果符合實際,證明了系統(tǒng)是可行的。
圖5 去除共軛鏡像后透明膠帶結(jié)構(gòu)信息
由于一次成像便能產(chǎn)生二維的樣品結(jié)構(gòu)信息,相比一維頻域光學(xué)相干層析成像系統(tǒng),二維頻域光學(xué)相干層析具有快速成像的優(yōu)點,并且軟件集成度高,功能全面,界面友好,對光學(xué)相干層析系統(tǒng)的開發(fā)具有促進作用。
[1]HUANG D.,SWANSON E.,LIN C.et al.,Optical coherence tomography[J].Science,1991,254(22):1178-1181.
[2]吳 凌.OCT 三維重建與多普勒成像研究[D].浙江:浙江大學(xué)光電信息工程學(xué)系,2007.
[3]馬振鶴,王瑞康,張 帆,等.快速高分辨率的頻域光學(xué)相干層析成像系統(tǒng)研究[J].納米技術(shù)與精密工程,2005,3(3):232-235.
[4]DE BOER J F,CENSE B,PARK B H,et al.Improved signal-to-noise ratio in spectral domain compared with time-domain optical coherence tomography[J].Optics letters,2003,28(21):2067-2069.
[5]LEITGEB R A,HIZENBERGER C K,F(xiàn)ERCHER A F.Performance of fourier domain versus time domain optical coherence tomography[J].Optics express,2003,11(8):889-894.
[6]WITTE S,BACLAYON M,PETERMAN E J G.et al.Single-shot two-dimensional full-range optical coherence tomography achieved by dispersion control[J].Optics express,2009,14(17):11335-11349.
[7]ZHONG Jian-feng,ZHONG Shun-cong,ZHANG Qiu-kun.et al.Two-dimensional optical coherence tomography for real-time structural dynamical characterization[J].Optics and Lasers in Engineering,2015(66):74-79.
[8]石成英,張利民,陳登科.基于VC++與Matlab 聯(lián)合編程的測量系統(tǒng)軟件開發(fā)研究[J].計算機數(shù)字工程,2013,41(9):1535-1537.
[9]李 卓,李益民.Matlab 與VC ++混合編程技術(shù)在圖像處理中的應(yīng)用研究[J].電腦知識與技術(shù),2011,7(22):5450-5452.
[10]沈莉麗.基于Matlab 與VC ++混合編程的數(shù)字信號處理系統(tǒng)[J].信息化研究,2010,36(5):43-45.
[11]董建婷,王 杰.VC ++調(diào)用Matlab 實現(xiàn)圖像處理的3種常用方法比較[J].現(xiàn)代電子技術(shù),2012,35(16):46-49.
[12]許雪開.VC ++與Matlab 混合編程[J].機電工程,2007,24(2):26-27.
[13]鐘舜聰,丁 康,孫智娟.Matlab 與C/C++混合編程在信號處理中的應(yīng)用[J].微計算機應(yīng)用,2000(5):305
[14]何梓昂.FD-OCT 去復(fù)共軛成像的研究[D].杭州:浙江大學(xué)光電信息工程學(xué)系,2008.