葉 婷,程耀瑜,靳皓屹
(中北大學(xué) 信息與通信工程學(xué)院,山西 太原 030051)
?
基于VC++的數(shù)字陣列獲取的設(shè)計(jì)
葉婷,程耀瑜,靳皓屹
(中北大學(xué) 信息與通信工程學(xué)院,山西 太原 030051)
摘要:數(shù)字陣列成像系統(tǒng)在無(wú)損檢測(cè)領(lǐng)域發(fā)揮著重要作用,因此數(shù)字陣列的獲取也有著深遠(yuǎn)的研究意義。以型號(hào)為XDAS-V3,探測(cè)間距為1.6 mm的X射線線陣探測(cè)器為陣列器件,使用與陣列器件相對(duì)應(yīng)的軟件開(kāi)發(fā)包XAPI SDK,利用C++語(yǔ)言,編寫(xiě)程序?qū)崿F(xiàn)數(shù)字陣列的獲取。同時(shí)將所采數(shù)據(jù)保存,在MATLAB中進(jìn)行仿真實(shí)驗(yàn),最后得到相應(yīng)的灰度圖。
關(guān)鍵詞:數(shù)字陣列;線陣探測(cè)器;C++;MATLAB
數(shù)字陣列是通過(guò)一些相關(guān)的陣列器件產(chǎn)生,按其感光單元的排列方式分為面陣列器件和線陣列器件,常見(jiàn)的有X射線探測(cè)器陣列、γ射線探測(cè)器陣列、CMOS圖像傳感器陣列,CCD圖像傳感器陣列,電荷注入器件(CID),光敏二極管陣列(PDA)等等[1]。數(shù)字陣列成像系統(tǒng)廣泛應(yīng)用于無(wú)損檢測(cè)領(lǐng)域,同時(shí)無(wú)損檢測(cè)也已經(jīng)在大部分工業(yè)部門(mén)都有所涉及,并取得了巨大的進(jìn)步。
產(chǎn)生數(shù)字陣列的器件是多種多樣的,以成像物質(zhì)為分類(lèi)標(biāo)準(zhǔn)可分為:氣體型陣列探測(cè)器,閃爍體型陣列探測(cè)器和半導(dǎo)體型陣列探測(cè)器[2]。下面介紹幾種最常見(jiàn)的陣列器件。
1) X射線探測(cè)器陣列 主要利用的是X射線高穿透力,可透過(guò)許多對(duì)可見(jiàn)光不透明的物質(zhì)的特點(diǎn),應(yīng)用于生活的方方面面,如安全檢查,CT成像,多試點(diǎn)成像,食品檢查,厚度測(cè)量,雜質(zhì)粒子檢測(cè),礦物分選,垃圾分類(lèi)等[3]。
2) CCD圖像傳感器陣列 一般的CCD有線陣CCD和面陣CCD兩種。線陣CCD通過(guò)將接收到的一維光信號(hào)轉(zhuǎn)換成時(shí)序的電信號(hào)輸出來(lái)獲取一維圖像信號(hào)[4],面陣CCD將二維圖像轉(zhuǎn)變?yōu)橐曨l輸出信號(hào),是二維圖像傳感器。
3) CMOS圖像傳感器 CMOS圖像傳感器是在CCD圖像傳感器的基礎(chǔ)上發(fā)展起來(lái)的,它是一種單芯片成像系統(tǒng),采用CMOS技術(shù)在同一硅芯片上同時(shí)集成圖像傳感器陣列、驅(qū)動(dòng)和控制電路、信號(hào)處理電路、模/數(shù)轉(zhuǎn)換器、全數(shù)字接口電路等功能模塊,是一種新型的半導(dǎo)體器件[5]。
每種陣列器件都有各自的優(yōu)缺點(diǎn),應(yīng)根據(jù)探測(cè)對(duì)象、條件及需求的不同,選擇符合要求的探測(cè)器。英國(guó)Sens-Tech公司是一家X射線探測(cè)器、光電倍增管模塊產(chǎn)品和信號(hào)數(shù)據(jù)采集系統(tǒng)的專(zhuān)業(yè)供應(yīng)商,并且在光電探測(cè)領(lǐng)域有很多經(jīng)驗(yàn)。本文選用的就是該公司生產(chǎn)的一款型號(hào)為XDAS-V3,探測(cè)間距為1.6 mm的X射線線陣探測(cè)器為陣列器件,它集信號(hào)探測(cè)、模擬信號(hào)放大、數(shù)字輸出于一體,可方便地進(jìn)行信號(hào)數(shù)字化及圖像處理等方面的研發(fā)[6]。
1XDAS-V3探測(cè)系統(tǒng)硬件組成
XDAS-V3板是一種可用于X射線線掃描,多視點(diǎn)和CT系統(tǒng)中數(shù)據(jù)采集的模塊化系統(tǒng)。它由探測(cè)板,信號(hào)處理板及數(shù)據(jù)接口板三部分組成。其連續(xù)運(yùn)行掃描的最小時(shí)間為50 μs,非連續(xù)掃描的運(yùn)行時(shí)間為10 μs,最高信噪比可達(dá)36 000∶1。
探測(cè)器使用了新型的背光式硅光電二極管陣列,被檢測(cè)物體在通過(guò)X光源照射后,透過(guò)的X射線被線陣探測(cè)器接收,接收到的射線被閃爍體轉(zhuǎn)化為微弱的可見(jiàn)光,對(duì)應(yīng)的光電二級(jí)管把輸出的可見(jiàn)光轉(zhuǎn)變?yōu)殡娏餍盘?hào)。緊接著探測(cè)器頭板輸出的模擬信號(hào)傳送到信號(hào)處理板中模擬多路復(fù)用器,然后通過(guò)16位A/D轉(zhuǎn)化,A/D轉(zhuǎn)化主要通過(guò)中心處理模塊FPGA來(lái)實(shí)現(xiàn)。FPGA芯片主要完成對(duì)數(shù)據(jù)采集模塊和USB傳輸模塊各硬件時(shí)序控制信號(hào)的產(chǎn)生,數(shù)據(jù)信號(hào)的高速緩沖和周轉(zhuǎn),同時(shí)協(xié)調(diào)各器件間的配合運(yùn)行,使得整套系統(tǒng)可以可靠穩(wěn)定地工作。系統(tǒng)連續(xù)不斷地掃描,一行數(shù)據(jù)移出的同時(shí),下一行數(shù)據(jù)進(jìn)入,從而形成二維數(shù)字陣列。
數(shù)據(jù)接口板通過(guò)一扁平電纜線與信號(hào)處理板相連,接口板的主要作用是將采集并處理之后的信號(hào)傳送至計(jì)算機(jī),以便進(jìn)行后續(xù)的一些處理。它是探測(cè)系統(tǒng)中軟硬件相結(jié)合的橋梁,有SCSI(小型計(jì)算機(jī)系統(tǒng)接口)電纜連接到并行RS485輸出,本地USB2.0輸出,局部GIGE輸出,Channel Link等四種連接方式。本文選用USB2.0進(jìn)行數(shù)據(jù)傳輸。圖1和圖2分別是系統(tǒng)原理框圖和實(shí)物連接圖。
圖1 系統(tǒng)原理框圖
圖2 實(shí)物連接圖
2數(shù)字陣列的獲取
數(shù)字陣列獲取是探測(cè)掃描系統(tǒng)中最為重要的一步,它直接關(guān)系著之后的研究能否進(jìn)行。本文使用的是USB2.0進(jìn)行數(shù)據(jù)傳輸,數(shù)據(jù)線一端與模塊的接口板相連,一端與電腦主機(jī)相連,最大讀取速率可達(dá)40 MB/s。
XDAS-V3系統(tǒng)模塊帶有自己的應(yīng)用程序編程接口,用XAPI表示,里面包含了一些預(yù)先定義好的函數(shù)。XAPI包含在一個(gè)叫XAPI.dll的動(dòng)態(tài)鏈接庫(kù)中。本次研究采用的編程工具依然是比較經(jīng)典的Visual C++6.0,因此應(yīng)首先對(duì)所建工程加載對(duì)應(yīng)的動(dòng)態(tài)鏈接庫(kù),即XAPI.dll。具體做法如下:
1) 分別將其include,lib文件,以及動(dòng)態(tài)鏈接庫(kù)XAPI.dll放在程序可執(zhí)行文件所在的目錄下;
2) 啟動(dòng)VC6.0,在工具一欄中選擇選項(xiàng),然后選擇目錄,依次添加include,lib文件的路徑。
動(dòng)態(tài)鏈接庫(kù)加載完畢,結(jié)合XAPI中的函數(shù)編寫(xiě)程序?qū)崿F(xiàn)數(shù)據(jù)的獲取,具體流程圖如圖3所示。
圖3 數(shù)字陣列獲取流程圖
首先使用xapi_allocx()創(chuàng)建設(shè)備環(huán)境函數(shù),之后用xapi_configurefromfile()加載配置文件,再利用xapi_configure()激活配置。接下來(lái)進(jìn)行最為重要的一步采集數(shù)據(jù),要完成此過(guò)程應(yīng)首先啟動(dòng)數(shù)據(jù)采集通道,本系統(tǒng)中采用xapi_start()來(lái)完成此項(xiàng)功能。與此同時(shí),在數(shù)據(jù)采集循環(huán)中,用xapi_getblock()來(lái)緩存數(shù)據(jù),一行數(shù)據(jù)進(jìn)入的同時(shí)一行數(shù)據(jù)移出,使數(shù)據(jù)處于不斷更新的狀態(tài)。一旦停止采集,函數(shù)中*pData value這個(gè)參數(shù)的值便會(huì)清零,xapi_getblock()也就恢復(fù)初始狀態(tài)。其中圖像數(shù)據(jù)塊的大小由xapi_start()中l(wèi)inesperbuffer參數(shù)來(lái)確定,一個(gè)線陣列的字節(jié)數(shù)由相關(guān)的探測(cè)模塊確定。最后用xapi_stop()控制程序停止數(shù)據(jù)的采集,并且要用xapi_free()把xapi_getblock()從采集板中獲得的最后的數(shù)據(jù)釋放掉,以便再次采集。
部分程序代碼如下:
void RunTest(XAPI *x)
{
x->ConfigureFromFile("xapi.cfg");
// 顯示運(yùn)行信息
cout << "Time for one line is " << x->Get(XAPI_Px_LineTime) << endl;
cout << "Line width is " << x->Get(XAPI_Px_LineWidth) << " bytes" << endl;
// 配置探測(cè)器信息
x->Configure();
//循環(huán)采集
cout << "Getting 30 buffers of 1000 lines each..." << endl;
x->Start(1000);
int count = 0;
unsigned char* pData;
int ret, t = GetTickCount();
while ((ret = x->GetBlock(reinterpret_cast
{
// 顯示數(shù)據(jù)存儲(chǔ)塊
cout << "ret: " << ret << " time: " << GetTickCount()-t << endl;
printbuffer(pData);
t = GetTickCount();
//數(shù)據(jù)存儲(chǔ)結(jié)束
x->ReleaseBlock();
}
// 停止采集
cout << "Stopping... (ret=" << ret << ")" << endl;
x->Stop();
}
3實(shí)驗(yàn)結(jié)果及驗(yàn)證
本文使用的是XDAS-V3模塊中單能量探測(cè)板,即128個(gè)通道中只有64個(gè)低能探測(cè)通道起作用,實(shí)際的A/D轉(zhuǎn)化只有8位,同時(shí)可將獲取到的數(shù)字陣列保存在txt文檔中。如下圖64個(gè)數(shù)據(jù)為一組,采集到的數(shù)據(jù)以十進(jìn)制形式輸出,數(shù)值介于0和255之間。
圖4 采集數(shù)據(jù)
再將上述txt文件載入MATLAB中進(jìn)行仿真,得到的灰度圖像如圖5所示。
圖5 灰度圖
4結(jié)論
本次設(shè)計(jì)以X射線陣列探測(cè)器為硬件基礎(chǔ),運(yùn)用VC++開(kāi)發(fā)工具,做到了數(shù)字陣列的實(shí)時(shí)采集,仿真所得的灰度圖符合預(yù)期效果,為之后進(jìn)行有關(guān)圖像采集及處理的研究奠定了堅(jiān)實(shí)的基礎(chǔ)。
參考文獻(xiàn)
[1]唐瓊仙,周西林.陣列傳感器在分析檢測(cè)中的應(yīng)用與發(fā)展[J].重慶科技學(xué)院學(xué)報(bào)(自然科學(xué)版),2010(6):147-152.
[2]楊杰,過(guò)惠平,李如松,等.X或γ射線陣列探測(cè)器的現(xiàn)狀與發(fā)展[C].//第十三屆全國(guó)核電子學(xué)與核探測(cè)技術(shù)學(xué)術(shù)年會(huì),2006:255-258.
[3]者昊.數(shù)字影像設(shè)備(UDR)控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].蘭州:蘭州大學(xué),2010.
[4]王玉紅.基于面陣CCD運(yùn)動(dòng)目標(biāo)的識(shí)別與跟蹤研究[D].南京:南京林業(yè)大學(xué),2008.
[5]王旭,劉成.低噪聲CMOS圖像傳感器的研究[J].中國(guó)集成電路,2008(11):39-46.
[6]王明生,李鐵鷹,陳政石.X射線線陣探測(cè)器在輸送帶檢測(cè)系統(tǒng)中的應(yīng)用[J].廣東石油化工學(xué)院學(xué)報(bào),2011(1):33-36.
收稿日期:2015-12-18
作者簡(jiǎn)介:葉婷(1991- ),女,山西臨汾人,碩士研究生,研究方向?yàn)闄z測(cè)信號(hào)的獲取與處理。
文章編號(hào):1674- 4578(2016)02- 0050- 03
中圖分類(lèi)號(hào):TP391
文獻(xiàn)標(biāo)識(shí)碼:A
Design of Image Data Acquisition for X Ray Line Array Detector
Ye Ting, Cheng Yaoyu, Jin Haoyi
(SchoolofInformationandCommunicationEngineering,NorthUniversityofChina,TaiyuanShanxi030051,China)
Abstract:Digital array imaging system plays an important role in the field of nondestructive testing, so it is very important to obtain the digital array. Taking the X ray linear detector of XDAS-V3 which the detecting distance is 1.6 mm as array device and using the XAPI SDK software development kit and C++ language, the digital array is getting by writing program. At the same time, the collected data is stored in the MATLAB to be simulated, and the corresponding gray scale map is obtained.
Key words:digital array; linear array detector; C++; MATLAB