叶 婷,程耀瑜,靳皓屹
(中北大学 信息与通信工程学院,山西 太原 030051)
基于VC++的数字阵列获取的设计
叶婷,程耀瑜,靳皓屹
(中北大学 信息与通信工程学院,山西 太原 030051)
摘要:数字阵列成像系统在无损检测领域发挥着重要作用,因此数字阵列的获取也有着深远的研究意义。以型号为XDAS-V3,探测间距为1.6 mm的X射线线阵探测器为阵列器件,使用与阵列器件相对应的软件开发包XAPI SDK,利用C++语言,编写程序实现数字阵列的获取。同时将所采数据保存,在MATLAB中进行仿真实验,最后得到相应的灰度图。
关键词:数字阵列;线阵探测器;C++;MATLAB
数字阵列是通过一些相关的阵列器件产生,按其感光单元的排列方式分为面阵列器件和线阵列器件,常见的有X射线探测器阵列、γ射线探测器阵列、CMOS图像传感器阵列,CCD图像传感器阵列,电荷注入器件(CID),光敏二极管阵列(PDA)等等[1]。数字阵列成像系统广泛应用于无损检测领域,同时无损检测也已经在大部分工业部门都有所涉及,并取得了巨大的进步。
产生数字阵列的器件是多种多样的,以成像物质为分类标准可分为:气体型阵列探测器,闪烁体型阵列探测器和半导体型阵列探测器[2]。下面介绍几种最常见的阵列器件。
1) X射线探测器阵列 主要利用的是X射线高穿透力,可透过许多对可见光不透明的物质的特点,应用于生活的方方面面,如安全检查,CT成像,多试点成像,食品检查,厚度测量,杂质粒子检测,矿物分选,垃圾分类等[3]。
2) CCD图像传感器阵列 一般的CCD有线阵CCD和面阵CCD两种。线阵CCD通过将接收到的一维光信号转换成时序的电信号输出来获取一维图像信号[4],面阵CCD将二维图像转变为视频输出信号,是二维图像传感器。
3) CMOS图像传感器 CMOS图像传感器是在CCD图像传感器的基础上发展起来的,它是一种单芯片成像系统,采用CMOS技术在同一硅芯片上同时集成图像传感器阵列、驱动和控制电路、信号处理电路、模/数转换器、全数字接口电路等功能模块,是一种新型的半导体器件[5]。
每种阵列器件都有各自的优缺点,应根据探测对象、条件及需求的不同,选择符合要求的探测器。英国Sens-Tech公司是一家X射线探测器、光电倍增管模块产品和信号数据采集系统的专业供应商,并且在光电探测领域有很多经验。本文选用的就是该公司生产的一款型号为XDAS-V3,探测间距为1.6 mm的X射线线阵探测器为阵列器件,它集信号探测、模拟信号放大、数字输出于一体,可方便地进行信号数字化及图像处理等方面的研发[6]。
1XDAS-V3探测系统硬件组成
XDAS-V3板是一种可用于X射线线扫描,多视点和CT系统中数据采集的模块化系统。它由探测板,信号处理板及数据接口板三部分组成。其连续运行扫描的最小时间为50 μs,非连续扫描的运行时间为10 μs,最高信噪比可达36 000∶1。
探测器使用了新型的背光式硅光电二极管阵列,被检测物体在通过X光源照射后,透过的X射线被线阵探测器接收,接收到的射线被闪烁体转化为微弱的可见光,对应的光电二级管把输出的可见光转变为电流信号。紧接着探测器头板输出的模拟信号传送到信号处理板中模拟多路复用器,然后通过16位A/D转化,A/D转化主要通过中心处理模块FPGA来实现。FPGA芯片主要完成对数据采集模块和USB传输模块各硬件时序控制信号的产生,数据信号的高速缓冲和周转,同时协调各器件间的配合运行,使得整套系统可以可靠稳定地工作。系统连续不断地扫描,一行数据移出的同时,下一行数据进入,从而形成二维数字阵列。
数据接口板通过一扁平电缆线与信号处理板相连,接口板的主要作用是将采集并处理之后的信号传送至计算机,以便进行后续的一些处理。它是探测系统中软硬件相结合的桥梁,有SCSI(小型计算机系统接口)电缆连接到并行RS485输出,本地USB2.0输出,局部GIGE输出,Channel Link等四种连接方式。本文选用USB2.0进行数据传输。图1和图2分别是系统原理框图和实物连接图。
图1 系统原理框图
图2 实物连接图
2数字阵列的获取
数字阵列获取是探测扫描系统中最为重要的一步,它直接关系着之后的研究能否进行。本文使用的是USB2.0进行数据传输,数据线一端与模块的接口板相连,一端与电脑主机相连,最大读取速率可达40 MB/s。
XDAS-V3系统模块带有自己的应用程序编程接口,用XAPI表示,里面包含了一些预先定义好的函数。XAPI包含在一个叫XAPI.dll的动态链接库中。本次研究采用的编程工具依然是比较经典的Visual C++6.0,因此应首先对所建工程加载对应的动态链接库,即XAPI.dll。具体做法如下:
1) 分别将其include,lib文件,以及动态链接库XAPI.dll放在程序可执行文件所在的目录下;
2) 启动VC6.0,在工具一栏中选择选项,然后选择目录,依次添加include,lib文件的路径。
动态链接库加载完毕,结合XAPI中的函数编写程序实现数据的获取,具体流程图如图3所示。
图3 数字阵列获取流程图
首先使用xapi_allocx()创建设备环境函数,之后用xapi_configurefromfile()加载配置文件,再利用xapi_configure()激活配置。接下来进行最为重要的一步采集数据,要完成此过程应首先启动数据采集通道,本系统中采用xapi_start()来完成此项功能。与此同时,在数据采集循环中,用xapi_getblock()来缓存数据,一行数据进入的同时一行数据移出,使数据处于不断更新的状态。一旦停止采集,函数中*pData value这个参数的值便会清零,xapi_getblock()也就恢复初始状态。其中图像数据块的大小由xapi_start()中linesperbuffer参数来确定,一个线阵列的字节数由相关的探测模块确定。最后用xapi_stop()控制程序停止数据的采集,并且要用xapi_free()把xapi_getblock()从采集板中获得的最后的数据释放掉,以便再次采集。
部分程序代码如下:
void RunTest(XAPI *x)
{
x->ConfigureFromFile("xapi.cfg");
// 显示运行信息
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();
//循环采集
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
{
// 显示数据存储块
cout << "ret: " << ret << " time: " << GetTickCount()-t << endl;
printbuffer(pData);
t = GetTickCount();
//数据存储结束
x->ReleaseBlock();
}
// 停止采集
cout << "Stopping... (ret=" << ret << ")" << endl;
x->Stop();
}
3实验结果及验证
本文使用的是XDAS-V3模块中单能量探测板,即128个通道中只有64个低能探测通道起作用,实际的A/D转化只有8位,同时可将获取到的数字阵列保存在txt文档中。如下图64个数据为一组,采集到的数据以十进制形式输出,数值介于0和255之间。
图4 采集数据
再将上述txt文件载入MATLAB中进行仿真,得到的灰度图像如图5所示。
图5 灰度图
4结论
本次设计以X射线阵列探测器为硬件基础,运用VC++开发工具,做到了数字阵列的实时采集,仿真所得的灰度图符合预期效果,为之后进行有关图像采集及处理的研究奠定了坚实的基础。
参考文献
[1]唐琼仙,周西林.阵列传感器在分析检测中的应用与发展[J].重庆科技学院学报(自然科学版),2010(6):147-152.
[2]杨杰,过惠平,李如松,等.X或γ射线阵列探测器的现状与发展[C].//第十三届全国核电子学与核探测技术学术年会,2006:255-258.
[3]者昊.数字影像设备(UDR)控制系统的设计与实现[D].兰州:兰州大学,2010.
[4]王玉红.基于面阵CCD运动目标的识别与跟踪研究[D].南京:南京林业大学,2008.
[5]王旭,刘成.低噪声CMOS图像传感器的研究[J].中国集成电路,2008(11):39-46.
[6]王明生,李铁鹰,陈政石.X射线线阵探测器在输送带检测系统中的应用[J].广东石油化工学院学报,2011(1):33-36.
收稿日期:2015-12-18
作者简介:叶婷(1991- ),女,山西临汾人,硕士研究生,研究方向为检测信号的获取与处理。
文章编号:1674- 4578(2016)02- 0050- 03
中图分类号:TP391
文献标识码: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