国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于VC++的數(shù)字陣列獲取的設(shè)計

2016-07-23 08:27程耀瑜靳皓屹
山西電子技術(shù) 2016年2期

葉 婷,程耀瑜,靳皓屹

(中北大學(xué) 信息與通信工程學(xué)院,山西 太原 030051)

?

基于VC++的數(shù)字陣列獲取的設(shè)計

葉婷,程耀瑜,靳皓屹

(中北大學(xué) 信息與通信工程學(xué)院,山西 太原 030051)

摘要:數(shù)字陣列成像系統(tǒng)在無損檢測領(lǐng)域發(fā)揮著重要作用,因此數(shù)字陣列的獲取也有著深遠(yuǎn)的研究意義。以型號為XDAS-V3,探測間距為1.6 mm的X射線線陣探測器為陣列器件,使用與陣列器件相對應(yīng)的軟件開發(fā)包XAPI SDK,利用C++語言,編寫程序?qū)崿F(xiàn)數(shù)字陣列的獲取。同時將所采數(shù)據(jù)保存,在MATLAB中進(jìn)行仿真實驗,最后得到相應(yīng)的灰度圖。

關(guān)鍵詞:數(shù)字陣列;線陣探測器;C++;MATLAB

數(shù)字陣列是通過一些相關(guān)的陣列器件產(chǎn)生,按其感光單元的排列方式分為面陣列器件和線陣列器件,常見的有X射線探測器陣列、γ射線探測器陣列、CMOS圖像傳感器陣列,CCD圖像傳感器陣列,電荷注入器件(CID),光敏二極管陣列(PDA)等等[1]。數(shù)字陣列成像系統(tǒng)廣泛應(yīng)用于無損檢測領(lǐng)域,同時無損檢測也已經(jīng)在大部分工業(yè)部門都有所涉及,并取得了巨大的進(jìn)步。

產(chǎn)生數(shù)字陣列的器件是多種多樣的,以成像物質(zhì)為分類標(biāo)準(zhǔn)可分為:氣體型陣列探測器,閃爍體型陣列探測器和半導(dǎo)體型陣列探測器[2]。下面介紹幾種最常見的陣列器件。

1) X射線探測器陣列 主要利用的是X射線高穿透力,可透過許多對可見光不透明的物質(zhì)的特點,應(yīng)用于生活的方方面面,如安全檢查,CT成像,多試點成像,食品檢查,厚度測量,雜質(zhì)粒子檢測,礦物分選,垃圾分類等[3]。

2) CCD圖像傳感器陣列 一般的CCD有線陣CCD和面陣CCD兩種。線陣CCD通過將接收到的一維光信號轉(zhuǎn)換成時序的電信號輸出來獲取一維圖像信號[4],面陣CCD將二維圖像轉(zhuǎn)變?yōu)橐曨l輸出信號,是二維圖像傳感器。

3) CMOS圖像傳感器 CMOS圖像傳感器是在CCD圖像傳感器的基礎(chǔ)上發(fā)展起來的,它是一種單芯片成像系統(tǒng),采用CMOS技術(shù)在同一硅芯片上同時集成圖像傳感器陣列、驅(qū)動和控制電路、信號處理電路、模/數(shù)轉(zhuǎn)換器、全數(shù)字接口電路等功能模塊,是一種新型的半導(dǎo)體器件[5]。

每種陣列器件都有各自的優(yōu)缺點,應(yīng)根據(jù)探測對象、條件及需求的不同,選擇符合要求的探測器。英國Sens-Tech公司是一家X射線探測器、光電倍增管模塊產(chǎn)品和信號數(shù)據(jù)采集系統(tǒng)的專業(yè)供應(yīng)商,并且在光電探測領(lǐng)域有很多經(jīng)驗。本文選用的就是該公司生產(chǎn)的一款型號為XDAS-V3,探測間距為1.6 mm的X射線線陣探測器為陣列器件,它集信號探測、模擬信號放大、數(shù)字輸出于一體,可方便地進(jìn)行信號數(shù)字化及圖像處理等方面的研發(fā)[6]。

1XDAS-V3探測系統(tǒng)硬件組成

XDAS-V3板是一種可用于X射線線掃描,多視點和CT系統(tǒng)中數(shù)據(jù)采集的模塊化系統(tǒng)。它由探測板,信號處理板及數(shù)據(jù)接口板三部分組成。其連續(xù)運(yùn)行掃描的最小時間為50 μs,非連續(xù)掃描的運(yùn)行時間為10 μs,最高信噪比可達(dá)36 000∶1。

探測器使用了新型的背光式硅光電二極管陣列,被檢測物體在通過X光源照射后,透過的X射線被線陣探測器接收,接收到的射線被閃爍體轉(zhuǎn)化為微弱的可見光,對應(yīng)的光電二級管把輸出的可見光轉(zhuǎn)變?yōu)殡娏餍盘?。緊接著探測器頭板輸出的模擬信號傳送到信號處理板中模擬多路復(fù)用器,然后通過16位A/D轉(zhuǎn)化,A/D轉(zhuǎn)化主要通過中心處理模塊FPGA來實現(xiàn)。FPGA芯片主要完成對數(shù)據(jù)采集模塊和USB傳輸模塊各硬件時序控制信號的產(chǎn)生,數(shù)據(jù)信號的高速緩沖和周轉(zhuǎn),同時協(xié)調(diào)各器件間的配合運(yùn)行,使得整套系統(tǒng)可以可靠穩(wěn)定地工作。系統(tǒng)連續(xù)不斷地掃描,一行數(shù)據(jù)移出的同時,下一行數(shù)據(jù)進(jìn)入,從而形成二維數(shù)字陣列。

數(shù)據(jù)接口板通過一扁平電纜線與信號處理板相連,接口板的主要作用是將采集并處理之后的信號傳送至計算機(jī),以便進(jìn)行后續(xù)的一些處理。它是探測系統(tǒng)中軟硬件相結(jié)合的橋梁,有SCSI(小型計算機(jī)系統(tǒng)接口)電纜連接到并行RS485輸出,本地USB2.0輸出,局部GIGE輸出,Channel Link等四種連接方式。本文選用USB2.0進(jìn)行數(shù)據(jù)傳輸。圖1和圖2分別是系統(tǒng)原理框圖和實物連接圖。

圖1 系統(tǒng)原理框圖

圖2 實物連接圖

2數(shù)字陣列的獲取

數(shù)字陣列獲取是探測掃描系統(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包含在一個叫XAPI.dll的動態(tài)鏈接庫中。本次研究采用的編程工具依然是比較經(jīng)典的Visual C++6.0,因此應(yīng)首先對所建工程加載對應(yīng)的動態(tài)鏈接庫,即XAPI.dll。具體做法如下:

1) 分別將其include,lib文件,以及動態(tài)鏈接庫XAPI.dll放在程序可執(zhí)行文件所在的目錄下;

2) 啟動VC6.0,在工具一欄中選擇選項,然后選擇目錄,依次添加include,lib文件的路徑。

動態(tài)鏈接庫加載完畢,結(jié)合XAPI中的函數(shù)編寫程序?qū)崿F(xiàn)數(shù)據(jù)的獲取,具體流程圖如圖3所示。

圖3 數(shù)字陣列獲取流程圖

首先使用xapi_allocx()創(chuàng)建設(shè)備環(huán)境函數(shù),之后用xapi_configurefromfile()加載配置文件,再利用xapi_configure()激活配置。接下來進(jìn)行最為重要的一步采集數(shù)據(jù),要完成此過程應(yīng)首先啟動數(shù)據(jù)采集通道,本系統(tǒng)中采用xapi_start()來完成此項功能。與此同時,在數(shù)據(jù)采集循環(huán)中,用xapi_getblock()來緩存數(shù)據(jù),一行數(shù)據(jù)進(jìn)入的同時一行數(shù)據(jù)移出,使數(shù)據(jù)處于不斷更新的狀態(tài)。一旦停止采集,函數(shù)中*pData value這個參數(shù)的值便會清零,xapi_getblock()也就恢復(fù)初始狀態(tài)。其中圖像數(shù)據(jù)塊的大小由xapi_start()中l(wèi)inesperbuffer參數(shù)來確定,一個線陣列的字節(jié)數(shù)由相關(guān)的探測模塊確定。最后用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;

// 配置探測器信息

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(&pData), 10000)) == XAPI_OK)

{

// 顯示數(shù)據(jù)存儲塊

cout << "ret: " << ret << " time: " << GetTickCount()-t << endl;

printbuffer(pData);

t = GetTickCount();

//數(shù)據(jù)存儲結(jié)束

x->ReleaseBlock();

}

// 停止采集

cout << "Stopping... (ret=" << ret << ")" << endl;

x->Stop();

}

3實驗結(jié)果及驗證

本文使用的是XDAS-V3模塊中單能量探測板,即128個通道中只有64個低能探測通道起作用,實際的A/D轉(zhuǎn)化只有8位,同時可將獲取到的數(shù)字陣列保存在txt文檔中。如下圖64個數(shù)據(jù)為一組,采集到的數(shù)據(jù)以十進(jìn)制形式輸出,數(shù)值介于0和255之間。

圖4 采集數(shù)據(jù)

再將上述txt文件載入MATLAB中進(jìn)行仿真,得到的灰度圖像如圖5所示。

圖5 灰度圖

4結(jié)論

本次設(shè)計以X射線陣列探測器為硬件基礎(chǔ),運(yùn)用VC++開發(fā)工具,做到了數(shù)字陣列的實時采集,仿真所得的灰度圖符合預(yù)期效果,為之后進(jìn)行有關(guān)圖像采集及處理的研究奠定了堅實的基礎(chǔ)。

參考文獻(xiàn)

[1]唐瓊仙,周西林.陣列傳感器在分析檢測中的應(yīng)用與發(fā)展[J].重慶科技學(xué)院學(xué)報(自然科學(xué)版),2010(6):147-152.

[2]楊杰,過惠平,李如松,等.X或γ射線陣列探測器的現(xiàn)狀與發(fā)展[C].//第十三屆全國核電子學(xué)與核探測技術(shù)學(xué)術(shù)年會,2006:255-258.

[3]者昊.數(shù)字影像設(shè)備(UDR)控制系統(tǒng)的設(shè)計與實現(xiàn)[D].蘭州:蘭州大學(xué),2010.

[4]王玉紅.基于面陣CCD運(yùn)動目標(biāo)的識別與跟蹤研究[D].南京:南京林業(yè)大學(xué),2008.

[5]王旭,劉成.低噪聲CMOS圖像傳感器的研究[J].中國集成電路,2008(11):39-46.

[6]王明生,李鐵鷹,陳政石.X射線線陣探測器在輸送帶檢測系統(tǒng)中的應(yīng)用[J].廣東石油化工學(xué)院學(xué)報,2011(1):33-36.

收稿日期:2015-12-18

作者簡介:葉婷(1991- ),女,山西臨汾人,碩士研究生,研究方向為檢測信號的獲取與處理。

文章編號:1674- 4578(2016)02- 0050- 03

中圖分類號:TP391

文獻(xiàn)標(biāo)識碼: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