于洪雨,贺 迪,朱锦辉
(1.江苏省灌南县中医院 信息科,江苏 连云港 222500;2.天津市恒源传感器研发部,天津 300391;3.天津理工大学 光电学院,天津 300391)
在注射液装瓶前对注射液使用库尔特计数仪器检测药水中杂质的个数以及大小,这是传统的前期检测方法。较大的粒子在通过检测通道时可能把通道堵死,属于接触式测量,有它的缺点,不能够直观地观察到微粒的形态和大小。后期的装瓶过程中可能会有微小的杂质落入到封装好的注射液成品中去,若很小,则可以经过人体的循环系统排出体外,若比较大的杂质(60μm),则很有可能堵塞毛细血管,对人体造成伤害,因此装瓶完成后,必须对灌装好的注射药瓶进行非接触式测量。现在很多抽检过程都是使用显微系统,依靠人眼在较强光下进行目测。这种方法很容易造成人眼的疲劳,而且需要经验性很强,还不适合大量的检测。笔者所做的这款仪器就是利用机器视觉系统代替人眼,通过电脑的相关程序对采集到的图像进行观察和分析,可以长时间高可靠性地对注射液中的杂质的有无以及大小进行检测。
图1所示为注射液微粒检测系统,其分为传动部分、视觉部分以及中心控制处理等部分。传动部分由伺服电机和传送带装置等组成,视觉部分包括一台视觉相机和光源部分,中心控制部分使用工控机以及单片机。图中的钳位定位装置主要由机械触点开关以及步进电机组成,在整个过程中起到压缩、松瓶的作用,防止安剖瓶在高速旋转过程中飞出来。光源部分采用大功率高亮度LED,MCU对光源进行控制,只在图像采集的过程中点亮LED,类似于闪光灯。
图1 系统结构图Fig.1 System structure
传动部分使用伺服电机,控制部分采用Microchip公司的dsPIC30f3014芯片,由单片机的PWM模块负责频率的发生、控制电机的转速以及转动的时间,由于控制数据的传输不大[1],采用RS232接口进行控制数据的接收。视觉相机采用黑白(B/W)面阵CCD图像传感器,对CCD图像传感器出来的模拟信号进行A/D转换,数据格式为YUV分量,提取其中的Y分量。然后使用TI的1394芯片传送到工控机中,1394-2传输速率可以达到800 Mb/s,CCD分辨率752×480,帧率30f/s,使用酷睿双核2.4GHz处理器,512MB内存,每副图像的处理时间在100~600ms之间,为了便于使用,在系统中使用了“自动”对焦系统,使用软件判断物体是否在焦距上。自动调焦功能设想使用步进电机旋转镜头,该自动系统正在开发之中。
界面以及图像的处理算法使用了VisualC++编程,在电脑和单片机之间使用了串口进行通讯,采用多线程的方式。通讯的内容包括光源的开关、电机的转动以及各种参数的设置等等,各个系统在中心软件的协调下工作。在实验过程中,采用国家药物标准粒子60μm以及40μm规格的两种注射液。由于粒子比较小,所以采用镜头对注射液中的粒子进行放大。
开始的时候,粒子沉在底下,采用电机对标准粒子瓶进行旋转,电机的转速可以由上位机进行调节,通过单片机进行直接的控制,这样粒子就分布在旋转的液体中,在旋转一定时间后,对该注射液标准粒子瓶进行抓拍。由于光源亮度比较小,拍摄的图像中出现了虚像以及杂光,为此,加大LED的发射电流,使电流>100mA,由单片机控制光源的亮灭,模拟闪光灯操作,这样出来的图像比较清晰,对于这样的图像,进行膨胀和腐蚀的基本操作,设定阈值,滤掉拍摄过程中可能出现的干扰信号。
图2中的模糊的点是瓶壁上的污点,通过运动物体的检测,可以去除此干扰源。
图2 处理前拍摄的图像Fig.2 Raw image taken before processing
对照相机捕捉到的图像进行图像处理,由于被测系统中,微粒是运动的物体,所以核心算法采用对运动物体的检测以及对椭圆物体的快速识别。
对处理完的图像(见图3)可以通过数每个点所占像元的大小来表达实物的大小。以下数据是笔者通过该系统所做的判断结果,符合国家注射液标准粒子的标定。先对40μm的粒子大小进行测定,得到的数据见表1。然后以同样的环境方式对60μm的粒子进行大小标定,得到数据见表2。
图3 处理后的图像Fig.3 Image after processing
表1 40μm 5次数据采集结果Table 1 Five times data collection of 40μm μm
表2 60μm 5次数据采集结果Table 2 Five times data collection of 60μm μm
通过分析,前5次实验得到的平均直径大小为(17+18+19+17+18)/5=17.8≈17(μm),这里计算机数据得到的是舍去小数后的整数;后5次60 μm实验的平均直径大小为(29+27+25+27+28)/5=27.2≈27(μm)。(60μm/27μm)≈(40 μm/17μm),可以得出,对于微小粒子,该系统的线性可重复性还是良好的。
在对微粒的检测过程中,没有考虑微粒在玻璃瓶靠外侧边缘可能出现的畸变,出来的图像是中心大,两边小。在实际过程中,只考虑检测出来的粒子的最大直径,其实这个畸变可以通过修正函数得以修正,这里不予介绍。
该系统难点在于:① 相机的选取,要求相机系统噪声小,并且CCD信噪比高;② 原始图像数据的传输系统的成像以及干扰的消除方面;③ 光源的选取(高功率的激光管都是振荡的,照片出来之后噪声太大,而低功率的管效果太差;④ 图像算法的选择性,基于静态的算法[2](着色图像、弊端、光点、噪声)和基于动态的算法(多幅图像对比)[3];⑤ 机械结构方面的重要性,主要是传动系统的配合。
经过大量的实验,目前已经做成仪器样机,性能良好,可重复性比较高,在国内行业中属于先行者,处于领先地位。经过不断改进,该系统可以作成嵌入式+DSP+FPGA+LCD,成为一个工业模块。
[1] 周鑫玲,曲丹丹,俞岳,等.微型计算机在微粒检测中的应用[J].仪器仪表学报,1998,19(4):445-448.
[2] 王占全,徐慧.Visual C++数字图像处理技术与工程案例[M].北京:人民邮电出版社,2011.
[3] OpenCV China中文网站.运动分析与对象跟踪[EB/OL].[2013-12-20].http://wiki.opencv.org.cn/index.php/Cv.
[4] 窦振中,汪立森.PIC系列单片机的应用设计与实例[J].北京:北京航空航天大学出版社,1999.
[5] 湖广书.数字信号处理[M].北京:清华大学出版社,2003.