一種基于LabVIEW的EMCCD相機(jī)數(shù)據(jù)采集驅(qū)動(dòng)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于電子倍增CCD成像系統(tǒng)的圖像采集技術(shù),特別是一種基于LabVIEW的EMC⑶相機(jī)數(shù)據(jù)采集驅(qū)動(dòng)方法。
【背景技術(shù)】
[0002]隨著科學(xué)信息技術(shù)的飛速發(fā)展,世界已步入了光子的時(shí)代,人們獲取信息的手段在向不同波段等更廣闊的領(lǐng)域擴(kuò)展。圖像信息作為最直接最有效的信息,已得到了廣泛重視。如何獲得更清晰更準(zhǔn)確的圖像信息,成為了重要的研究?jī)?nèi)容。微光成像技術(shù)正是順應(yīng)了這一發(fā)展趨勢(shì),成為當(dāng)今世界發(fā)達(dá)國(guó)家大力發(fā)展的軍民兩用的新興高科技之一。
[0003]電子倍增CCD(ElectronMultiplicat1n Charge Coupled Device,EMCCD)是探測(cè)領(lǐng)域內(nèi)靈敏度極高的一種高端光電探測(cè)產(chǎn)品,作為新型的全固態(tài)微光成像器件,相比于傳統(tǒng)微光成像器件具有體積小、壽命長(zhǎng)、量子效率高、功耗低、靈敏度高等優(yōu)點(diǎn),在微光成像領(lǐng)域有很大的發(fā)展?jié)摿蛻?yīng)用前景,如圖1所示為電子倍增CCD結(jié)構(gòu)示意圖。但是現(xiàn)有的電子倍增CCD相機(jī)存在不可避免的缺陷是:數(shù)據(jù)讀出方式受限,無(wú)法與其他硬件相連接使用,造成使用范圍非常有限。
[0004]LabVIEW是一種程序開(kāi)發(fā)環(huán)境,由美國(guó)國(guó)家儀器(NI)公司研制開(kāi)發(fā),類似于C和BASIC開(kāi)發(fā)環(huán)境,但是LabVIEW與其他計(jì)算機(jī)語(yǔ)言的顯著區(qū)別是:其他計(jì)算機(jī)語(yǔ)言都是采用基于文本的語(yǔ)言產(chǎn)生代碼,而LabVIEW使用的是圖形化編輯語(yǔ)言G編寫程序,產(chǎn)生的程序是框圖的形式。LabVIEW開(kāi)發(fā)環(huán)境集成了工程師和科學(xué)家快速構(gòu)建各種應(yīng)用所需的所有工具,旨在幫助工程師和科學(xué)家解決問(wèn)題、提高生產(chǎn)力和不斷創(chuàng)新。但如何利用LabVIEW軟件來(lái)連接EMCCD相機(jī)、成功地控制EMCCD相機(jī)的拍攝和數(shù)據(jù)采集也是一大技術(shù)難題。
[0005]雖然Andor公司提供了Solis軟件,可以與相機(jī)連接并拍攝,但是它的使用范圍僅限制于軟件本身,無(wú)法與后續(xù)的數(shù)據(jù)處理硬件相結(jié)合,僅可拍照,作用單一,沒(méi)有實(shí)時(shí)性。其次,當(dāng)相機(jī)出現(xiàn)故障時(shí),無(wú)法方便的知曉故障原因。此外,當(dāng)實(shí)驗(yàn)是基于LabVIEW時(shí)就無(wú)法與之連接并進(jìn)行數(shù)據(jù)采集,也就無(wú)法實(shí)現(xiàn)控制拍攝幀數(shù)和暫停查看的功能,并且LabVIEW是連接成像系統(tǒng)、圖像處理系統(tǒng)硬件的橋梁,因此具有相當(dāng)大的技術(shù)缺陷。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的在于提供一種基于LabVIEW的EMC⑶相機(jī)數(shù)據(jù)采集驅(qū)動(dòng)方法。
[0007]實(shí)現(xiàn)本發(fā)明目的的技術(shù)解決方案為:一種基于LabVIEW的EMCCD相機(jī)數(shù)據(jù)采集驅(qū)動(dòng)方法,首先調(diào)用相機(jī)內(nèi)部函數(shù),對(duì)相機(jī)進(jìn)行初始化;其次,設(shè)置相機(jī)各模塊的模式;然后計(jì)算相機(jī)相關(guān)拍攝參數(shù),獲取相機(jī)探測(cè)器像素大小;開(kāi)辟圖像存儲(chǔ)陣列;再次,設(shè)置For循環(huán),進(jìn)行圖像采集和實(shí)現(xiàn)暫停功能;最后調(diào)用ShutDown命令函數(shù)釋放內(nèi)存空間。
[0008]本發(fā)明與現(xiàn)有技術(shù)相比,其顯著優(yōu)點(diǎn):(I)在一開(kāi)始就調(diào)用初始化函數(shù),初始化成功后再進(jìn)行下面工作,從而簡(jiǎn)化相機(jī)初始化次數(shù),加快了響應(yīng)時(shí)間,具有良好的實(shí)時(shí)性,減少很多不必要的函數(shù)調(diào)用,使程序得到了極大的簡(jiǎn)化。(2)通過(guò)設(shè)置加在調(diào)用相機(jī)采集圖像的命令函數(shù)和傳輸圖像命令函數(shù)的For循環(huán)的N值來(lái)自由控制相機(jī)的拍攝幀數(shù)。通過(guò)給獲取圖像命令函數(shù)增加For循環(huán),增大For循環(huán)的N參數(shù)可以實(shí)現(xiàn)在不停止相機(jī)拍攝的情況下可以暫停,查看任意單幀圖像細(xì)節(jié)的功能。(3)利用LabVIEW軟件界面,可隨時(shí)查看相機(jī)各部分工作狀態(tài),增加可控性,便于快速找到錯(cuò)誤和修改。(4)不再受限于只能使用Andor公司的Solis軟件,而可以使相機(jī)可以與其他LabVIEW驅(qū)動(dòng)的硬件相結(jié)合,達(dá)到數(shù)據(jù)采集、圖像處理等不同目的,彌補(bǔ)了Solis不能與LabVIEW連接使用的缺陷,使用范圍更廣,具有更高的實(shí)用價(jià)值,同時(shí)達(dá)到自由控制相機(jī)的拍攝幀數(shù),可在不停止相機(jī)拍攝的情況下暫停查看當(dāng)前單幀圖像細(xì)節(jié)的目的。
[0009]下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)描述。
【附圖說(shuō)明】
[0010]圖1是電子倍增CXD結(jié)構(gòu)示意圖。
[0011 ]圖2是本發(fā)明的流程示意圖。
【具體實(shí)施方式】
[0012]結(jié)合圖2,本發(fā)明基于LabVIEW的EMCCD相機(jī)數(shù)據(jù)采集驅(qū)動(dòng)方法,首先調(diào)用相機(jī)內(nèi)部函數(shù),對(duì)相機(jī)進(jìn)行初始化;其次,設(shè)置相機(jī)各模塊的模式;然后計(jì)算相機(jī)相關(guān)拍攝參數(shù),獲取相機(jī)探測(cè)器像素大小;開(kāi)辟圖像存儲(chǔ)陣列;再次,設(shè)置For循環(huán),進(jìn)行圖像采集和實(shí)現(xiàn)暫停功能;最后調(diào)用ShutDown命令函數(shù)釋放內(nèi)存空間。實(shí)現(xiàn)上述過(guò)程的具體步驟如下:
[0013]步驟一,通過(guò)USB接口,連接相機(jī)和電腦,通過(guò)NI MAX確定相機(jī)連接成功。
[0014]步驟二,打開(kāi)LabVIEW,創(chuàng)建庫(kù)函數(shù)節(jié)點(diǎn),調(diào)用atmcd32d.dll庫(kù)文件中的Initialize函數(shù),對(duì)相機(jī)進(jìn)行初始化。
[0015]步驟三,設(shè)置相機(jī)各模塊功能模式,包括快門模式、光圈模式、讀取模式和數(shù)據(jù)獲取模式,即在LabVIEW中建立順序結(jié)構(gòu),每個(gè)序列用來(lái)設(shè)置一個(gè)功能模式,所有模式的設(shè)置順序任意,具體操作如下:
[0016](I)調(diào)用SDK中的庫(kù)文件atmcd32d.dl I中的SetTriggerMode函數(shù)設(shè)置相機(jī)快門模式,給SetTriggerMode函數(shù)輸入一個(gè)常量O,即應(yīng)用相機(jī)的內(nèi)觸發(fā)模式;
[0017](2)調(diào)用SDK中的庫(kù)文件atmcd32d.dll中的SetGateMode函數(shù)設(shè)置相機(jī)光圈模式,給SetGateMode函數(shù)輸入一個(gè)常量3,即使相機(jī)光圈一直打開(kāi);
[0018](3)調(diào)用SDK中的庫(kù)文件atmcd32d.dl I中的SetReadMode函數(shù)設(shè)置相機(jī)讀取模式,給SetReadMode函數(shù)輸入一個(gè)常量4,即應(yīng)用相機(jī)讀取圖像;
[0019](4)調(diào)用SDK中的庫(kù)文件atmcd32d.dll中的SetAcquis1-t1nMode函數(shù)設(shè)置相機(jī)的獲取模式,給SetAcquis it 1nMode函數(shù)輸入一個(gè)常量I,即應(yīng)用相機(jī)Single Scan模式。
[0020]步驟四,設(shè)置相機(jī)相關(guān)參數(shù),包括曝光時(shí)間和增益大小,具體操作如下:
[0021 ] (I)調(diào)用SDK中的庫(kù)文件atmcd32d.dl I中的SetExposure-Time函數(shù)設(shè)置相機(jī)的曝光時(shí)間,曝光時(shí)間值設(shè)置在0.02可得到最佳拍攝效果;
[0022](2)調(diào)用SDK中的庫(kù)文件atmcd32d.dll中的SetEMGainMode函數(shù)設(shè)置相機(jī)增益大小,增益值范圍為O?300,根據(jù)自己需要設(shè)置,獲取相機(jī)探測(cè)器像素信息。
[0023]步驟五,傳遞用戶設(shè)置信息給相機(jī),計(jì)算相機(jī)拍攝單幀需要時(shí)間,即曝光時(shí)間、積累時(shí)間和Kinetic周期時(shí)間的總和,以及用戶設(shè)置增益時(shí)間。具體操作如下:
[0024](I)調(diào)用SDK中的庫(kù)文件atmcd32d.dl I中的GetEMCCDGain函數(shù),使相機(jī)獲取用戶設(shè)置的增益大?。?br>[0025](2)調(diào)用SDK中的庫(kù)文件 atmcd32d.dll 中的GetAcquisit1nTimings函數(shù),使相機(jī)獲取用戶設(shè)置的曝光時(shí)間,并且計(jì)算出拍攝一幀需要的總時(shí)間,其中總時(shí)間為AccumulateCycle Time、Kinetic cycle Time和曝光時(shí)間的總和,Accumulate Cycle Time和Kineticcycle Time在Single Scan模式下全部設(shè)置為0。
[0026]步驟六,獲取相機(jī)探測(cè)器像素信息,即調(diào)用SDK中的庫(kù)文件atmcd32d.dll中的GetDetector函數(shù),獲取探測(cè)器水平方向和垂直方向的像素?cái)?shù)。
[0027]步驟七,運(yùn)用LabVIEW的初始化矩陣功能預(yù)先開(kāi)辟一塊內(nèi)存,設(shè)置獲取圖像的起始存儲(chǔ)地址。運(yùn)用LabVIEW的初始化矩陣功能預(yù)先開(kāi)辟一塊內(nèi)存,然后調(diào)用SDK中的庫(kù)文件atmcd32d.dl I 中的 Set Image 函數(shù),設(shè)置參數(shù) Horz.Binning 的值為 I,設(shè)置參數(shù) Vert.binning的值為I,設(shè)置Horz.Start的值為I,設(shè)置Vert.start的值為I。
[0028]步驟八,設(shè)置For循環(huán),命名為FORl,在FORl循環(huán)函數(shù)中調(diào)用相機(jī)采集圖像的命令函數(shù)和傳輸圖像命令函數(shù),進(jìn)行連續(xù)采集,并將采集的圖像存儲(chǔ)到預(yù)先開(kāi)辟的陣列中。設(shè)置For循環(huán),命名為FORl,在FORl中調(diào)用相機(jī)的開(kāi)始拍攝命令StartAcquisit1n函數(shù)和相機(jī)的數(shù)據(jù)傳輸函數(shù)GetAcquiredData函數(shù),將預(yù)先開(kāi)辟的矩陣傳輸給GetAcquiredData函數(shù)并且通過(guò)GetAcquiredData函數(shù)輸出并顯示圖像。
[0029]步驟九,給相機(jī)數(shù)據(jù)傳輸并顯示函數(shù)增加For循環(huán),命名為F0R2,通過(guò)增大F0R2循環(huán)的N參數(shù)實(shí)現(xiàn)拍攝途中暫停,查看當(dāng)前單幀圖像的細(xì)節(jié)功能。設(shè)置For循環(huán),命名為F0R2,令F0R2的N為I,則顯示為不斷變化的圖像;令5000,則顯示為當(dāng)前單幀圖像,從而起到暫停的作用。
[0030]步驟十,將所有調(diào)用函數(shù)的第一個(gè)返回值輸出并在LabVIEW的前面板中顯示出所拍的圖像。
[0031]步驟十一,調(diào)用ShutDown命令函數(shù)釋放內(nèi)存空間,關(guān)閉相機(jī)。
[0032]本發(fā)明方法調(diào)用的函數(shù)均來(lái)自Andor公司提供的軟件開(kāi)發(fā)包。
[0033]實(shí)施例
[0034]本發(fā)明以Andor公司的EMCCD相機(jī),如Luca相機(jī)為例進(jìn)行說(shuō)明。
[0035]1、通過(guò)USB接口,連接Luca相機(jī)和電腦,通過(guò)NI MAX確定相機(jī)連接成功。
[0036]2、打開(kāi)LabVIEW,創(chuàng)建庫(kù)函數(shù)節(jié)點(diǎn),調(diào)用Andor公司提供的atmcd32d.dll庫(kù)文件中的Initialize函數(shù),對(duì)相機(jī)進(jìn)行初始化。
[0037]3、設(shè)置相機(jī)功能模式,包括快門模式、光圈模式、讀取模式和數(shù)據(jù)獲取模式。即:在LabVIEW中建立順序結(jié)構(gòu),每個(gè)序列用來(lái)設(shè)置一個(gè)功能模式,所有模式的設(shè)置順序可以任意。具體操作如下:
[0038](I)調(diào)用Andor公司SDK中的庫(kù)文件atmcd32d.dl I中的SetTriggerMode函數(shù)設(shè)置相機(jī)快門模式,給SetTr iggerMode函數(shù)輸入一個(gè)常量O,即應(yīng)用相機(jī)的內(nèi)觸發(fā)模式。
[0039](2)調(diào)用Andor公司SDK中的庫(kù)文件atmcd32d.dl I中的SetGateMode函數(shù)設(shè)置相機(jī)光圈模式,給SetGateMode函數(shù)輸入一個(gè)常量3,即