基于多颜色分量的尿常规自动检测
2021-12-14孙明山
张 璇 曾 智 孙明山
1(重庆师范大学计算机与信息科学学院 重庆 401331)
0 引 言
作为临床医学上常用的一种检验项目,尿常规检验用于泌尿系统疾病的临床诊断、鉴别、疗效观察、预后评估等,同时也能够对引起尿液生化成分改变的其他系统疾病如糖尿病、血液病、流行性出血热等的诊断的临床诊断和治疗提供参考[1-2]。
目前主要通过干化学检测法对尿十项试纸进行检测。尿十项试纸主要是对尿液中的白细胞、亚硝酸盐、尿胆原、蛋白质、pH值、潜血、比重、酮体、胆红素、葡萄糖共十项指标通过与标准色卡比对后进行检测[3]。常规方式是使用尿液分析仪进行检测,过程简单快捷。但尿液分析仪属于医院专用分析仪器,不属于消费者产品,对于需要长期对尿常规进行监测的患者而言,每次都需要到医院进行检查,具有较大的不便利性。随着智能手机移动终端系统的快速发展,越来越多的常规健康检测可以通过手机在家里完成。利用手机终端实现常规尿十项检测也成为可能。
目前,针对试纸检测问题已提出了很多相对应的算法。孙冬梅[4]针对过敏源检测试纸图像使用图像二值化和几何变换实现试纸定位,采用改进的CLAHE图像增强算法达到增强图像细节的目的。胡勇[5]针对胶体金蛋白试纸图像提出使用边缘检测和Hough变换实现试纸定位、倾斜矫正,并通过像素点累加法和投影法对试纸显色区域进行分割。
现有的算法虽然能较好地分割出试纸条,但对于拍照角度和试纸条的摆放有一定要求,不能过于随意。另外,由于尿液试纸中的检测色块会随着不同人的尿液的检测结果不同而变化,并且受光照影响严重。用手机拍照、特别是老年人在家独自用手机拍照所带来的定位随意性和相应的自动分割定位的难度,以及不同手机相机内在的色彩差异、拍照时可能会有复杂的图像背景、不同光照条件等所带来的颜色的差异,使得现有的方法不能很好地满足尿纸条自动检测的要求。因此,为了解决以上问题,本文提出首先采用自动白平衡对采集后的图像进行预处理;然后利用颜色直方图和改进的Canny算法对基于多颜色分量下的尿液试纸图像进行试纸定位、分割;再利用颜色直方图和水平垂直投影对检测色块定位、分割;最后使用欧氏距离色块颜色识别,帮助用户快速有效地进行尿常规检验,随时掌握自己的尿检数据,使用户能够实时地了解自身的健康状况,真正地享受便捷的医疗服务。
1 本文算法
1.1 尿常规检测算法流程
尿常规检测算法主要流程包括:采用自动白平衡算法解决不同光照条件下试纸颜色不均的情况;利用尿十项试纸样本图像在HSV颜色空间下的S分量的颜色直方图,对试纸条进行粗分割和在RGB颜色空间下各颜色分量通过Canny算法和OSTU算法相结合进行二次试纸定位,分离前后背景;为了解决拍照角度不同导致的检测色块误分割,使用透视变换算法对定位试纸进行角度矫正;基于颜色直方图及水平垂直投影算法分割出检测色块;分别提取标准色卡和试纸色块颜色特征,应用欧氏距离进行最短距离颜色识别,获得最终结果。算法流程如图1所示。
图1 本文算法流程
1.2 图像采集
由于图片在不同光照条件下,试纸条容易出现颜色不均。如果光源不稳定,出现如大片的阴影或者图像亮度过明、过暗都是不利于高精度的识别的,会对后期色块特征提取识别增加难度。因此针对试纸条图像采集,会首先采用自动白平衡对试纸条进行颜色调整,使其获取的颜色特征与真实颜色更加接近。
自动白平衡算法[6]的目的是在不同的光照条件下,通过随着光照强度的变化自适应阈值,从而获得更加真实的亮度。即通过确定R、G、B各颜色分量的平均值都趋向于同一个灰度G。首先通过式(1)获取三个通道的平均值。
(1)
式中:R′、G′、B′为R、G、B各颜色通道的平均值。
再通过式(2)计算R、G、B各颜色通道的增益kr、kg、kb。
(2)
然后根据式(3)计算出图像中每个像素点新的R、G、B像素值R1、G1、B1。
(3)
1.3 尿十项试纸条定位
颜色特征是一种全局特征,具有平移不变性、旋转不变性和计算简单等特点[7]。彩色图像与灰度图像相比提供了更为丰富的色彩信息,彩色图像处理中常用的颜色空间有RGB颜色空间和HSV颜色空间。手机拍照所获得的图片通常为RGB颜色空间。HSV模型由色调、饱和度和亮度三个颜色分量构成[8]。与RGB颜色空间相比,HSV更容易表达颜色之间明暗、色调,对于不断变换的光照,图像信息也能稳定显示[9-11]。
尿十项试纸样本图像如图2所示,采用的背景为白色,能更好地突出目标颜色。通过手机采集的尿十项试纸图像常在不同光照、不同拍照角度下,导致分割目标区域容易出现偏差。同时传统算法中常直接使用轮廓检测算法,然后通过寻找最大连通域对图中的目标进行定位。但由于在不同光照条件下常出现大面积的阴影,导致寻找最大连通域的过程当中出现目标定位、分割失误。
图2 试纸样本与HSV各分量
针对以上问题,本文提出的尿液试纸条定位包括基于HSV颜色空间S分量的颜色直方图阈值粗分割角度矫正,以及基于RGB颜色空间各分量使用Canny边缘检测算法和OSTU算法相结合的自适应阈值分割。
(1) 颜色直方图阈值分割。颜色直方图是颜色特征的主要描述方法之一,对一幅彩色图像中出现的颜色频率进行统计,横坐标为像素点的像素值,纵坐标为出现的频数。颜色直方图的计算公式如下:
Hist=f(cj)
(4)
式中:j=1,2,…,k,k表示彩色图像中像素点数目;cj表示每个像素点的像素值;f(cj)表示该像素值出现的频数。
RGB颜色空间转换HSV颜色空间的计算如下:
(5)
实验发现,基于HSV颜色空间中的S分量颜色特征保存最为完整。
对手机拍摄的原图(如图2(a)所示)从RGB颜色空间转换成HSV颜色空间,通过将图2(b)中的H分量、图2(c)中的S分量和图2(d)中的V分量相比较,S分量中的试纸目标特征更加明显,并对S分量进行高斯滤波降噪处理。
将S分量的色值范围设为[0,255],通过S分量的颜色直方图,如图3所示,获取波峰值T,即为当前图片中,颜色统计数量最多的颜色色值。
图3 S分量颜色直方图
通过对找到的S分量波峰加权,从而设置高低阈值范围。最后,使用找到的阈值范围,在高低阈值范围内的视为背景,范围以外的视为目标试纸条,进行二值图像前后背景分割。
通过对连通域面积设置阈值,去除图中面积大小小于m的连通域,从而降低噪声。
由于色块与色块之间试纸条与背景部分相似,前后背景分割后,常出现试纸目标断裂。在寻找最大连通域时,由于目标没有全部找到,导致误分割。通过形态学[12-13]闭运算横向膨胀后,寻找最大连通域,定位出大致的试纸位置,这样的方法能够保证目标试纸条完整分割,分割结果如图4所示。
图4 阈值分割结果
通过获取最大连通域外接矩形的四个角点坐标,使用透视变换将图像转换成俯视图,对试纸条旋转角度进行校正。
透视变换[14]的实质是将图片投影到一个新平面的过程。即将透视平面上的每一个像素点通过二维图像透视变化公式变换到俯视图上所对应的像素点。
二维图像透视变化公式如下:
(6)
(7)
校正后的图像如图5所示。
基于HSV颜色空间中S分量的颜色直方图阈值分割算法流程如图6所示。
图6 颜色直方图阈值分割算法流程
(2) Canny边缘检测算法自适应阈值分割。对完成定位分割后的彩色图像进行二次角度矫正分割,通过对RGB各颜色分量进行分析,分别进行高斯模糊及自适应中值滤波去除噪声,再使用Sobel算子计算x方向和y方向上的梯度分量,求出梯度幅值。然后使用Canny边缘检测算法[15-16]和OSTU算法进行自适应阈值分割。
针对传统Canny算法手动设置高低阈值的缺陷,采用OSTU算法,将经加权梯度幅值运算得到的阈值T1、T2=T1/2,设置为Canny算法的双阈值,增强Canny算法的自适应能力,从而获得RGB颜色空间各分量上的二值图像。
OSTU法[17-22]又名最大类间方差法,是一种自适应阈值的方法。它的算法思想是将图片分成背景与目标两个部分。背景和目标之间的类间方差越大,说明构成图像的两部分的差别越大;当两部分的类间方差越小,目标错分为背景或背景错分为目标的部分越多,从而选取最佳阈值。最大类间方差公式如下:
σ2=ω1ω2(μ2-μ1)2
(8)
式中:ω1和ω2分别是背景和目标在整幅图像中所占比例;μ1和μ2分别是前景和目标的平均灰度。
最后将RGB各分量上的二值图像进行线性融合获得最终的二值图像,如图7所示。
图7 融合后的二值图
经过形态学算法后的图像如图8所示。
图8 横向膨胀二值图
找到最大面积连通域,进行试纸图像边缘分割。将分割后的试纸图像进行二次角度矫正,从而保证待检测色块图像分割的准确性。
1.4 试纸检测色块分割
定位后的尿十项试纸去除了背景区域,接下来就是对待检测色块的分割。由于是对尿液中的十项指标进行检测,所以需要分割从左至右的十个色块。研究发现,关于位置的分割多是应用水平、垂直投影法[23]实现。
水平、垂直投影法的主要思想是根据试纸条边缘信息在投影图对应的投影模块,找出局部最大值,从而确定检测色块的横纵坐标。从试纸条结构分析来看,首先需要通过二值图像边界信息进行水平投影确定试纸条的上下边界,由上至下,统计当前行白色点的个数,将图像分成上下两个部分,理想情况下各局部白点数最多的两行,即为试纸条上、下边界;然后需要通过边界信息确定各检测色块的左右边界,由左至右统计当前列白点的个数,找出局部最大值即可找出左右边界。
但由于色块边缘颜色分布不均,若直接使用垂直投影找左右边界,可能找到局部最优值,导致误分割。传统的垂直投影图如图9所示。
图9 传统垂直投影图
因此本文采用了基于HSV颜色空间中S分量颜色直方图,根据波峰值设置阈值范围,将色块与试纸条背景进行分割,阈值分割结果如图10所示。
图10 直方图分割二值图
再通过形态学使得边界信息尽可能保存完整。最终试纸条二值图像如图11所示。
图11 形态学二值图
图12 水平投影图
图13 垂直投影图
图14为最终分割出的十项尿常规检测指标的检测色块。
图14 分割的检测色块
图15为试纸检测色块分割流程。
图15 试纸检测色块分割流程
1.5 尿十项检测试纸颜色识别
(1) 提取颜色特征。首先提取基于HSV颜色空间下标准色卡的颜色特征,通过字典建立标准颜色库。然后再提取分割的检测色块的颜色特征。
(2) 颜色识别。本文以欧氏距离[24]作为检测色块与标准色库之间相识性度量标准。欧氏距离是较常用于表示特征相似度量的方法,是指在空间中两点之间的实际距离。在两个图像矩阵各形成了一个点,通过数学上的欧氏距离公式计算这两个点之间的距离dist(x,y),距离最小者就是最匹配的图像。
两个n维向量样本点a(x1,x2,…,xn)与样本点b(y1,y2,…,yn)间的欧氏距离公式如下:
(9)
在HSV颜色空间中,待检测色块中的某一点像素值为a(h1,s1,v1),标准颜色库中对应点的颜色为b(h2,s2,v2),通过欧氏距离公式,最相似两幅图的距离为:
(10)
2 实验结果与分析
本文算法共应用于100幅图片,图片为彩色RGB图像,大小为3 968×2 976。这些图片通过在室内不同光源及不同角度下,使用不同安卓手机对以A4纸为背景的尿液试纸进行拍照获得。
实验发现,通过在S分量阈值分割时,S分量颜色直方图波峰值为T,当设置高阈值为h=2.5T,低阈值为l=0.2T,能更好地分割前后背景,不被光照噪声所影响,并且将连通域面积设置阈值m=300时,能够有效地去除噪声。在二次定位阶段,通过OSTU算法设置Canny算法的阈值,与传统算法相比能更好地适应于不同图片,使得分割效果最好。通过分割算法使分割成功率达到93%。分割算法分析如表1所示。
表1 分割算法分析
图16为本文算法输出结果,图17为通过尿液分析仪给出的原始结果。通过对比发现本文算法对尿液试纸条进行检测具有一定的参考作用。
图16 本文算法结果 图17 原始结果
将本文算法运用于手机终端,图18为尿十项检测试纸条分割结果,图19为尿十项检测试纸颜色识别结果。
图18 试纸分割结果 图19 试纸颜色识别结果
3 结 语
本文提出一种基于多颜色分量的尿液试纸识别算法。针对光照不均问题,先采用自动白平衡算法矫正图像颜色,再将HSV颜色空间下S分量的颜色直方图与自适应Canny算法相结合,提高尿液试纸定位准确率;针对拍照角度问题,使用透视变换,通过获取四个角地点,纠正角度;将颜色直方图与水平、垂直投影法相结合,最大程度保留检测色块边界,方便准确分割检测色块;使用欧氏距离对检测色块进行颜色识别。
本文算法共应用于100幅图片,这些图片通过在不同光源及不同角度下获得,最终,通过基于本文算法开发成的手机应用,对获取到的尿常规检测试纸进行识别具有一定的参考作用。与传统采用尿液检测仪相比,该方法能帮助病人更加方便、实时地了解自身的健康状况。