马文华,张铁壁,孙士尉,石 岩
(1.河北水利电力学院自动化与通信工程学院,河北 沧州 061001;2.河北省高校水利自动化与信息应用技术研发中心,河北 沧州 061001;3.河北水利电力学院电气工程学院,河北 沧州 061001)
超敏C反应蛋白(C-reactive protein,CRP)又称为高敏C反应蛋白,是血浆中的一种C-反应蛋白。其临床指导作用主要表现在心血管疾病、新生儿细菌感染、肾移植等方面。超敏C反应蛋白是一种全身性炎症反应急性期由肝脏合成的非特异性标志物,是检测心血管发病预测的重要因子之一。目前,国内外兴起一种胶体金免疫层析法[1],用来检测血浆中CRP的颜色浓度。其具有检测快速、结果可靠、操作简单、价格低等优点而广泛应用于临床诊断、食品检测、农药残留、环境检测等领域。
同常规检测相比,虽然胶体金层析技术的优势很大,但实际应用中也存在一些缺点,主要是受人为影响而造成的。比如当检测值介于临界值时,人的肉眼难以识别显示颜色,会出现误判;另外,胶体金试剂条需要手工放入和取出,而且检测结果需要手工记录。这些步骤都大大降低了检测的速度。因此,有必要设计一种能够自动取放胶体金试剂条和实时获得检测结果的检测系统,以提高检测的准确性和检测效率。
在碱性条件下,胶体金带负电荷。它与带正电荷基团的蛋白质分子相互静电吸引,从而牢固结合。利用硝酸纤维膜为载体,将微孔膜当做毛细血管,使得滴加在试剂条一端的血浆向另一端慢慢层析渗移,通过与抗原抗体结合,胶体金呈现颜色(红色)反应,根据颜色即可检测抗原/抗体。胶体金试剂条结构如图1所示。
图1 胶体金试剂条结构图
检测时,将被检测血浆滴入图1试剂条滴加窗口的样品垫上,血浆沿层析方向,浸入底层胶体金标区的硝酸纤维膜。利用毛细作用,使待测血浆向右穿过胶体金垫,与胶体金内的标记试剂发生反应,形成复合物。该复合物移动到线状的抗原抗体处,会与之发生特异性结合,变为红色的检测带(T带)。余下的化合物继续向前扩散,直到遇到第二条线状抗原抗体,并与之结合形成第二条控制色带(C带)。C带的显色可以确定层析测试完成。
通过读取胶体金试剂条两条显示带,即T检测带和C质控带的颜色就可以用来判定结果。目前,结果的判定方法主要有人工目测和自动检测两种。本研究采用图像传感器扫描读取色带信号,并对采集数据进行分析处理。
目前,国内外对胶体金试剂条测试仪的研究较多,对于检测结果的获取方法主要有面阵CCD图像识别法和利用光电检测技术的颜色识别法[2-3]两种。其中,颜色识别法误差较大。这主要是因为胶体金试剂条成本较高,显色区面积较小,实际仅为一条细线,检测难度较大。因此,基于面阵CCD图像识别法的应用较多。本系统中也采用了该方法。系统整体结构如图2所示。
图2 系统整体结构框图
系统启动后,试剂条进给装置通过步进电机将待测试剂条送到定位系统。控制系统收到相应指令后,发出CCD相机采集图像指令使CCD时序器开始工作。同时,CCD相机开始采集图像,并将其传送给图像处理模块进行处理。得到试剂条质控线的灰度值之后,处理模块将处理结果传送到控制系统,并对系统结果进行存储和显示。系统中将试剂条自动进给装置设计为圆盘形,按照30°等分放置试剂条,这样快速检测12个试剂条。当检测到试剂条为空时,系统会自动识别,并连续进给,直到一个周期检测完毕。系统中还设计了SD卡,用来存储检测数据。它具有容量大、性能高、安全等多种特点,可以方便地读取数据。
CCD图像传感器主要完成图像采集任务,其主要由支架、摄像头、背光源等几部分组成。支架主要用来调整摄像头的位置,使其镜头能够准确对准试剂条的T带和C带位置;摄像头采用的是大恒图像最新推出的金星系列板级工业数字相机,它具有空间小、低重量、低功耗以及低发热量等优点;背光源主要用来保证摄像头采集到高质量的图像,但是由于检测原理就是通过T带和C带颜色进行测试,所以对光源要求也极为严格。本系统采用多个白色LED灯作为背光源,并对称排列。
系统的核心选择的是STM32F429/439系列MCU,STM32F429/439单片机[4]集成CortexTM-M4内核最高工作频率可达180 MHz,并实现了低于STM32F405/415/407/F417的静态功耗。其广泛应用于医疗的外设、工业以及消费类产品。STM32单片机具有性能高、成本低、功耗低等突出特点。在图形处理上,其采用了意法半导体公司的Chrom-ART图形加速器,能够支持双层的新型LCD-TFT控制器。此外,该加速器还支持图像格式转换或图像混合(透明度混合)等功能。单片机内部还集成了3个速度为2.4 ms/s或7.2 ms/s(交错模式下)的12位ADC和2个普通的12位DAC。
系统选用OmniVision公司的OV7670作为图像处理模块。它能够传送多种数据采集模式,集成功能齐全,具有体积小、工作电压低、外围电路简单、程序简单易写等特点,初学者容易掌握。其视频图形阵列图像最高速率为30帧/s,可以通过串行摄像机控制总线协议(serial camera control bus,SCCB)接口编程,支持多种图像输出格式,广泛应用于嵌入式系统中。
通过STM32的SCCB接口,对OV7670寄存器的图像数据进行采集与输出。该接口和内部集成电路总线(inter-integrated circuit,I2C)类似的两线串行总线协议[5],其时钟线和数据线分别为SIO-C、SIO-D,SCCB控制总线的功能依靠SIO-C、SIO-D两条总线的电平状态以及二者之间的相互配合实现。
系统中将2.8英寸(1英寸=25.4 mm)的、分辨率320×240的控制器ILI9341作为图像显示部分[6-7],其接口为16位,显示方式为RGB565,一帧图像数据高达150 KB。为加快显示速度,系统在设计时,TFT-LCD的命令/数据信号与STM32的FSMC-A10连接,将STM32的静态存储控制器FSMC作为TFT-LCD外部16位的SRAM来处理。TFT-LCD和外部1 MB SRAM使用不同的片选信号与FSMC总线连接,SRAM和FSMC-NE3引脚相连,TFT-LCD和FSMC-NE4引脚相连。由于TFT-LCD控制器ILI9341的读操作比写操作慢得多,所以FSMC的工作模式配置为异步A模式,即分别由不同的寄存器来控制读/写时间。
STM32通过数据管理中心接口(data center manage interface,DCMI)模式,控制时序发生器驱动CCD进行工作。 OV7670图像处理模块把图像数据处理成RGB565的16位数据形式,利用PD0-PD7的复用功能传送给STM32单片机。为驱动LCD工作,利用STM32单片机的FSMC模块来产生相应的时序,与此同时使用DMA模式,将STM32单片机中RAM的数据快速传送到LCD寄存器中。LCD控制芯片通过读取寄存器中的RGB565格式图像数据,最终显示CCD采集到的图像信息。
在本系统中,先将采集的RGB图像进行简单的去噪声处理,再利用经典的几何推导法将RGB图像转换为HIS色彩。RGB色彩空间的3个分量属性是相对独立的,每个分量取值的范围为0~255。该值的大小与亮度成正比,所以黑色表示为(0,0,0),而白色为(255,255,255)。其余的各种颜色都是利用三色叠加的原理来组成。HSI颜色空间是用色调(hue)、色饱和度(saturation)和亮度(intensity)按照人的视觉系统来描述色彩。其中:色调H用角度(0~360°)来表示,它由颜色名称来区别;饱和度S代表颜色的深浅;亮度I代表颜色的敏感程度,二者的取值范围是0~1。HSI颜色空间也可以用一个圆锥空间模型来描述,各个坐标之间相互独立,从而分别表示不同颜色的变化。
对于胶体金试剂条,因为其色调分布具有较大的差别,也更容易识别出质控带C和检测带T,所以图像处理部分选择HSI色彩空间进行。RGB转换为HSI的几何推导公式[8]为:
(1)
通过式(1)进行区间转换,将r,g,b转换到[0~1]区间。
在H∈[0 π],b≤g条件下:
(2)
在H∈[π 2π],b>g条件下:
(3)
(4)
(5)
以上转换利用Matlab软件实现。先选取一张RGB的图片,调低亮度后另存为一副本;然后将其转换为灰度图,并在原图的基础上对其转成HSI空间模型,得到HSI模型的3个强度的分量H、S、I。如果直接对R、G、B处理,其处理过程中很可能会引起3个量不同程度的变化,这样就会产生色差问题,甚至带来颜色上的失真。而HSI模型完全可以实现在保持色彩无失真的情况下进行图像处理。
转换成HSI彩色空间后,采用K-均值图像分割。K-均值算法是使用比较广泛的聚类分割算法,它将全部的数据分配到不同的类中,并确保每个类都拥有一个聚类中心,并且类中的成员与所属类的聚类中心具有相近的特质[9]。K-均值算法能够使得各个样本与所在类均值的误差平方和达到最小,它也同样是评价该算法聚类效果的一个有效的评价标准。利用H分量引进K-均值算法进行图像切割,其一般步骤如下。
①初始化。首先确定输入聚类类数K,并在输入对象集X中随机选取K个对象作为初始聚类中心。随后,设定迭代中止条件,可通过确定最大循环次数或者聚类中心收敛误差容限来完成。
②将所有元素分配到不同的类,计算所有聚类中心的位置。
③根据相似度准则将数据对象分配到最接近的聚类中心进行迭代,形成一类初始化隶属度矩阵。
④更新聚类中心。根据每个聚类对象的均值(中心对象),计算每个对象与这些中心对象的距离;并根据最小距离重新对相应对象进行划分。
⑤循环步骤③和步骤④直至满足中止条件,即新的聚类中心和原聚类中心相等,算法结束。
为了验证该算法的分割效果,将基于HIS色彩空间的K-均值算法测试结果与人工诊断结果进行了比较。针对6种不同浓度编号的胶体金试剂条进行了质控C带和检测T带的灰度值数据比较。人工诊断与自动诊断数据比较如表1所示。从表1可以看出,人工诊断结果与自动诊断结果非常接近,最大绝对误差为3.3,最大相对误差为2.08%。
表1 人工诊断与自动诊断数据比较
为了提高检测效率,设计了多个试剂条自动进给装置。该装置一次最多可以放置12个试剂条。利用该装置可以实现自动按顺序给进试剂条,测试完一个试剂条后,自动将试剂条推出。试剂条自动进给装置结构如图3所示。
图3 试剂条自动进给装置结构图
图3中:四个立柱通过螺钉与底板相连接,中间固定立式电机,电动推杆通过螺钉固定在支撑板上,L形杆件与电动推杆通过螺栓连接,L形杆件7并与与圆盘底面的圆槽保持接触。在圆盘的正面开设12个槽,每30°设置一个,用于放置试剂条;圆盘底面开设一个圆槽,使圆盘转动时L形杆件可在圆槽内滑动;圆盘底面另开设12个槽,使L形杆件将12个试纸条按序推出。
自动进给装置的运动过程为:将显色完毕的试剂条,分别放置在相应的试剂条托盘处,接收到系统命令后,立式电机再带动圆盘转动,将置于槽上的试剂条精确送到检测位置。检测完成后,控制圆盘继续转动,将下一个试剂条进给,而被检测完毕的试剂条在L形杆件与电动推杆的作用下在圆盘的圆槽内滑动,将试纸条推出。本传动装置能够实现多个试纸条连续自动传动进给功能,满足多个试纸条同时放置并输入、顺序检测并输出的要求。
整个硬件系统功能通过对STM32进行编程实现,ST公司为STM单片机的各模块提供了丰富的编程函数,尤其是STM32单片机采用面向对象的编程方式,大大降低了编程的难度。在实际编程中,资料库中提供了比较完善的、具有各种功能的模块化程序,对模块采取相应的库函数调用即可。具体主要包括STM32初始化、DCMI接口配置、FSMC模块配置、TFT真彩屏的驱动、图像处理、图像显示以及时钟等控制程序的编写。
本系统基于STM32平台,完成了图像采集与真彩屏显示。根据胶体金的显色原理,系统实现了多个胶体金试纸条连续自动检测的传动功能,满足多个试纸条同时放置并输入、顺序检测。该设备检测结果准确、价格低廉、携带方便、检测效率高,并实时对数据进行存储,方便查询。另外,在试验过程中,图像采集环节容易产生测量误差。在实际应用中,应该采取措施,选择高清晰的摄像头和合理的背光源,以有效减小CCD 图像测量在图像采集过程中产生的误差。