基于图像处理的血沉分析仪设计引言红细胞沉降速率(Erythrocyte Sedimentation Rate,ESR),简称为血沉值,是指红细胞在一定条件下沉降的速度。健康人的血沉数值在很窄的范围内波动,许多病理情况可以使血沉速度加快,血沉值现已成为一个重要的检测项目[1-2]。 目前国内外已有多种自动血沉检测仪,并已广泛用于临床,其原理大都是基于传统的魏氏法[3],用红外线障碍法代替了繁琐的人工读数法,具体实现的方式是利用一对红外发射管接收管的上下移动来测定红血球和透明血浆的分界面,再通过电机转动步数转化为距离,在一段时间内得到红细胞的沉降速度[4]。这种类型的血沉仪具有较为复杂的运动结构,使用一段时间后容易出现机械装置运动受阻、卡死等现象;其次因其使用电机步数转化为距离的方式,精度也无法做得很高,并且较难对标本进行动态监测以及对以前结果的再次查验。 针对以上问题,本设计提出了利用图像处理进行读数的方法,即用一个摄像头拍照来代替大量的红外对射传感器,设计特定的算法得出红血球与血浆的分界面,并进行了相关试验,取得了较好的结果。 1 血沉分析仪的工作原理1.1 魏氏法魏氏法是血沉测量中最常用的方法,即空腹取静脉血1.6 mL,按4:1比例与109 mmol/L的枸椽酸钠溶液(0.4 mL)混匀后吸入魏氏血沉管中,标记出“0”刻度值,血沉管在室温下严格垂直放置。避免阳光直射、震动和血液外溢。1 h后读出血浆凹液面底部至沉降红细胞柱顶部之间距离数,即为血沉结果[5]。 1.2 工作原理本文设计的血沉分析仪,以魏氏手工测量法为理论基础,将人工定时目测这一检测步骤替代为图像处理法。用一对红外对射传感器置于试管槽靠近底部的位置检测槽内是否有试管插入[6],检测到试管插入后,步进电机将摄像头转向当前试管方向,立即对试管进行拍照作为初始值,1 h后进行最后一次拍摄,然后以第一张初始照片为参照,利用图像处理的方法进行比对[7],得出最终的血沉结果显示在显示屏上,同时将所摄录的照片进行存档,便于以后的查阅。 2 系统组成2.1 系统框图基于以上原理,本设计将整个血沉测试系统设计为如下几个模块:红外对射检测模块、图像摄录模块、中央控制模块(STM32单片机)、显示模块、按键输入模块和图像存储模块。系统框图如图1所示[8-9]。 图1 系统框图 系统上电工作,红外对射管检测到样品插入后,单片机便向步进电机驱动器发送指令,控制步进电机将图像摄录模块的焦点旋转至刚刚插入的样品位置,单片机控制摄录模块进行拍摄并将照片进行保存;之后每隔5 min,对该样品进行一次拍摄,1 h后,单片机从图像存储模块中读取照片进行计算,得出结果并于显示模块进行显示;输入模块用于按键输入等方便使用者和本系统进行人机交互。 2.2 硬件设计2.2.1 红外对射管检测模块 红外对射管用于判断测试孔内是否有血沉管插入,它由一个红外线发射管和一个红外线接收管组成,位于血沉仪测试孔的底部,如图2所示。当测试孔中无样品时,接收管可以接收发射管发射的红外光从而输出高电平;当测试孔中插入样品时,发射光无法到达接收管,接收管输出低电平,根据高低电平的变化来判断测试孔中是否有样品插入。 图2 红外对射模块电路示意图 2.2.2 图像摄录模块 图像摄录模块用于拍摄不同时间点的血沉样品图像,本设计所采用的摄像头为Omni Vision公司生产的一颗1/4寸的CMOS QSXGA(2592×1944)图像传感器,500万像素,具有自动对焦(AF)功能,体积小,工作电压低。模块原理及接口图,见图3。 从图3可以看出,该模块自带有源晶振,用于产生24 M时钟频率,模块的闪光灯(LED1和LED2)由OV5640的STROBE脚控制,通过一个2×9的接口与外部通信。 2.2.3 步进电机模块 步进电机模块用于控制摄像头的转动,当相应测试孔的样品需要拍照时,步进电机将摄像头的焦点对准相应样品。步进电机模块由步进电机驱动器和步进电机两部分组成。 本设计中步进电机仅需带动摄像头转动,因此对于步进电机的扭矩等要求较低,选择小体积的二相四线步进电机即可[10]。步进电机驱动模块以A4988芯片为核心。A4988芯片是款带有内置转换器的微步电动机驱动器。该模块易于操作,只需在“STEP”端口输入脉冲信号,即可驱动步进电机产生微步,同时步进方向通过“DIR”口输入的高低电平控制,省去了复杂的相序编程过程;该模块驱动能力强大,最高可驱动35 V步进电机,驱动电流高达1 A,完全满足本设计要求[11]。模块使用接口图如图4所示。 图3 图像摄录模块原理及接口图 图4 步进电机驱动模块使用接口图 2.2.4 图像存储模块 图像存储模块用于存储拍摄的图片,载体选择比较自由。本设计使用的STMF7系列芯片自带SDMMC控制器,支持多媒体卡、SD卡、SDIO卡等设备,本设计采用了容量为8 GB的SD卡作为存储载体。SDMMC控制器功能框图如图5所示。从图中看出,SDMMC控制器分为APB2总线接口和SDMMC适配器两部分,当SD通过适配器接到总线上,则SDMMC[7:0]用于数据传输,SDMMC_CK为时钟信号,SDMMC_CMD用于命令传输。 图5 SDMMC控制器功能框图 2.2.5 显示模块 显示模块用于输出和显示结果,并且附带触摸输入功能,用于人机交互。本设计显示的结果内容主要为图片,在综合考虑了体积、显示清晰度、主控芯片的显示刷新速度等因素的情况下,本设计选择了大小为7寸、分辨率为1024×600、RGB接口的电容触摸屏,配合主控芯片自带的TFTLCD控制器(LTDC),可以很方便地实现液晶驱动。 2.2.6 输入模块 输入模块用于操作机器。本设计的输入模块分为按键输入和显示屏附带的电容触摸输入两种,功能上相互重合。按键输入不再赘述,触摸检测芯片为FT5426,主控芯片通过IIC总线与之通信读取相应寄存器即可获得触摸位置信息。 2.2.7 中央控制模块 中央控制模块为本设计的核心模块,负责协调处理输入、图像处理、电机控制、图像存储及结果显示等任务。本设计采用了意法半导体公司生产的STM32F767IGT6芯片作为主控模块,该芯片集成了JPEG编解码器、多种接口包括SDMMC接口和TFTLCD控制器、拥有140个IO口等,功能强大,可以满足本次设计的要求。 2.3 算法设计2.3.1 检测基本原理 图片的编码格式有很多种,如JPG、BMP、PNG等,它们都是由多个大小相等的正方形像素点按照特殊的编码格式所排列而成的文件,即每个图片所要表达的真实图像是由一个个大小相等但颜色不同的正方形构成的,每个正方形的颜色又是由红绿蓝三色混合而成。当我们在固定点对着同一个平面拍照时,所得到的图片上的每个像素点的边长与实际长度的比值是固定的。利用以上原理,在血液沉降的测量中将同一样品的不同阶段的图片进行图像处理,获得血沉值在图像上的高度数N乘以像素点的实际单位距离比值α,从而得出实际的血沉值L。计算公式,见式(1)。 2.3.2 JPEG图像格式 JPEG是数字图像的有损压缩的常用方法,特别是对于由数码摄影产生的图像,网站上80%的图像都采用了JPEG压缩标准。一个JPEG格式的文件由图像开始标志、图像结束标志、应用程序保留标记,量化表、帧图像开始标志、哈夫曼表、扫描开始标志组成,解码流程如图6所示[12]。 图6 JPEG格式文件解码流程 2.3.3 实验平台 MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级计算语言和交互式环境。MATLAB带有强大的图像处理工具箱,功能强大,编程语言简单,界面友好,是图像处理常用的软件。 2.3.4 检测算法设计 本设计的算法核心思想类似于DSA[13-14],算法流程如图7所示。 (1)将图片进行裁剪,只保留本实验所要处理的区域。 (2)将图片灰度化,提取红色元素按256灰阶进行灰度化,即每个像素点变为一个范围为0到255并代表红色亮度的值。JPEG采用的是YCrCb颜色空间,即每个像素由Y(亮度)、Cr、Br(色度)三个分量。RGB和YCrCb之间的转换关系如式(2)。 根据式(2)可以得出红色元素的计算式如式(3)。 (3)将两幅图片进行增强处理,即每个像素点乘上同一个固定系数以增强像素点之间的对比度,即R(e)=βR。 (4)将两幅图片相减,即将两幅图对应位置的像素点的值相减,如式(4)所示,R1(e)为初始图像的点,R2(e)为结束图像的点。 (5)开始循环判断,设置一个有效像素点阈值范围(本实验为10,即△d>10)和一个有效行的像素点数X(本实验为50),在阈值范围内的像素点即为有效像素点,每一行的有效像素点个数大于X,此行为有效行,统计连续有效行在高度上的像素点数。同时为了提高准确性,在统计有效行高度时还应加入消抖判断减少误差,即出现无效行时,无效行数必须连续出现5行及以上才会认为有效行结束,否则将此无效行视为抖动,算作有效行。 (6)根据比值将高度的像素点数换算为实际血沉值。 图7 算法流程图 2.3.5 算法验证 本次实验的血沉管高度为120 mm,在图中对应的像素点数为650,得出有效像素点的阈值为10,有效行的像素点数的阈值为50,本次实验得出的有效行数为90,换算为实际结果(即用有效行数乘以比值)为16.62 mm/h,与实际值测量值对比一样,达到实验目标。由于实验条件的限制,无法做到完全垂直,但从实验结果和效果来看,本方法是切实可行的。算法验证结果图,见图8。 2.4 软件设计2.4.1 开发环境及开发语言的选择 主控芯片的开发环境选择为KeilUvision5,是一款可用于多种STM32微处理器的集成开发环境,其内置的仿真器可模拟目标MCU,包括指令集、片上外围设备及外部信号等,方便进行在线调试;其提供的逻辑分析器,可监控基于MCU I/O引脚和外设状态变化下的程序变量[15]。 开发语言选择C语言,C语言作为一门历史悠久并被广泛应用于各类嵌入式系统开发的语言,有很多优点[16]。 图8 算法验证图 2.4.2 系统工作流程 接通电源,打开开关,系统开机自检,摄像头定位起始位,自检完成后进入红外对射检测模块的循环判断。当试管插槽中没有检测到血沉管插入时,红外对射管之间无障碍物,输出高电平,不触发电机运动,系统处于待机状态;当试管插槽中检测到有血沉管插入时,带有血液样品的血沉管阻断接收管对红外线的接收,输出低电平,此时触发电机转动一定角度,带动摄像头转到正好正对信号端输出低电平的试管插槽,进行对血沉管的图像摄录,MCU内部计时满1 h后再次拍摄图片。通过单片机对血沉图像进行分析处理,得到1 h内的血沉结果,完成检测。系统工作流程图,见图9。 图9 系统工作流程图 3 结果分析3.1 结果显示该血沉分析仪地结果输出界面与实物模型图,分别见图10和图11。 图10 结果输出图 图11 实物模型图 3.2 结果比对本设计一共进行了10组标本的对比,通过魏氏人工法与图像处理法进行对比,对比结果如表1所示。以人工魏氏法的结果为准,图像处理法所得到结果的误差能控制在±0.5 mm/h以内,误差主要集中在血沉结果较小的地方,分析发现,因为在血沉值较低时,血浆与血清的分界面处红色分量值的差值较小,此时算法判断易产生偏差。 表1 结果对比表 编号 人工魏氏法结果 (mm/h)图像处理法结果 (mm/h)1 16.2 16.2 2 10.1 10.3 3 12.2 12.2 4 7.8 8.0 5 6.4 6.9 6 12.5 12.5 7 11.3 11.4 8 6.7 7.2 9 12.8 12.7 10 18.5 18.5 4 讨论与总结图像处理法原理简单,测量过程近乎与人工测量方法一致,结果准确率高,可以记录整个血液沉降过程,并且可以将拍摄的真实图像进行保存方便以后查阅,而且用图像处理法进行设计,可拓展性比较高。本设计依旧存在一些不足,对于极其特殊的个体样品要设计不同的算法加以区分;另外,由于测量血沉比较简单,本文只是利用了简单的图像算法,可以将此方法继续沿用至其他医疗设备特别是光学类设备的研发。 [1] 陈显秋,曲林琳,王学军,等.性能评价、方法学评价及参考区间验证在ALIFAX血沉检测质量保证中的应用[J].中国实验诊断学,2015,19(12):2105-2108. [2] Rundek T,Gardener H,Xu Q,et al.Insulin resistance and risk of ischemic stroke among nondiabetic individuals from the northern Manhattan study[J].Arch Neurol,2010,67(10):1195-1200. [3] 黄睿,郝立君.改良魏氏法与VISION全自动动态血沉仪法测定血沉结果的比较分析[J].中国卫生检验杂志,2017,27(1):151-152. [4] 王晶,王倩,李远,等.两种方法测定红细胞沉降率的比较分析[J].国际检验医学杂志,2015,36(23):3485-3486. [5] 赵天军.魏氏血液沉降率在临床应用中的误区[J].中国医药指南,2013,11(2):131-132. [6] 乔维.光电二极管特性研究[J].中国科技信息,2014,(13):145-146. [7] 郭宽.数字图像处理技术在医学领域的应用[J].科技与创新,2016,(13):106. [8] 耿向南.基于微信公众平台的医疗设备管理系统的开发与应用[J].中国医疗设备,2016,31(12):42-45. [9] 赵志刚.血沉自动测试仪的设计[D].天津:河北工业大学,2006. [10] 马文斌,杨延竹,洪运.步进电机控制系统的设计及应用[J].电子技术应用,2015,41(11):11-13. [11] 蓝杰,张浩然.基于STM32的微型步进电机驱动控制器设计[J].微型机与应用,2015,34(1):43-46. [12] 肖迪,谢沂均.一种结合JPEG压缩编码的彩色图像加密算法[J].物理学报,2013,62(24):71-81. [13] 苏天奇.脑部DSA去伪影增强算法的研究及实现[D].石家庄:河北大学,2017. [14] Jameel A,Ghafoor A,Riaz MM.Wavelet and guidedfilter based multifocus fusion for noisy images[J].Optik-International Journal for Light and Electron Optics,2015,126(23):3920-3923. [15] Zhang HF,Kang W.Design of the data acquisition system based on STM32[J].Procedia Computer Science,2013,17:222-228. [16] Kumar RK,Young-S LE,Vudragovi? D,et al.Fortran and C programs for the time-dependent dipolar Gross–Pitaevskii equation in an anisotropic trap[J].Computer Physics Communications,2015,195:117-128. Design of Erythrocyte Sedimentation Rate Analyzer Based on Image Processing |