基于Android平台的母乳成分多指标试纸检测软件的设计*

2019-08-27 08:06
中国医学装备 2019年8期
关键词:色卡试纸母乳

柴 波 杨 琳

母乳喂养是指用母亲的奶水喂养婴儿的方式,用母乳喂养的婴儿发育更为健康[1]。但是,不同母亲的母乳之间差异很大,同一位母亲在不同时期所产生的母乳相差也很大,而母乳成分检测可以比较准确地分析出这些差异。目前市场上出现了一种用试纸来检测母乳成分含量的产品,该产品通过将母乳滴在试纸上而产生的颜色变化,对比标准色卡得出所检测成分的含量。试纸检测产品比色卡的数值精确到个位,对比颜色很少,对于有些试纸反应后的颜色不能明确的在比色卡上对比找出,通常会模糊地估计母乳成分的含量,而产生的误差使得检测结果不够精确。增加比色卡颜色的种类,使数值更加细化,则可以得到更精准的测量结果,但是颜色的种类繁多,逐一做比对卡,是一件复杂且浪费的事情,而细微的颜色变化对于老年人或者眼睛对颜色不敏感的人群而言辨认非常困难。

随着智能手机、平板电脑等电子设备的普及,已经开发出越来越多的医疗健康方面的应用软件。安卓(Android)系统是目前主流的电子设备系统,普及性非常高,且安卓电子产品可以满足软件开发对硬件方面的需求,因此本研究选择Android系统的电子设备作为软件的载体,对于电子设备而言,储存多种颜色、制作电子的颜色比对卡是一件简单的事情。为此,本研究设计一款基于Android平台母乳成分多指标试纸检测软件,使检测结果的显示更加精准。

1 母乳成分检测的意义及现状

1.1 检测意义

母乳喂养对婴儿生长发育的优势已广为人知,其对早产婴儿尤为重要。母乳中含有各种免疫蛋白,为婴儿提供免疫能力。此外,可能还有一些尚不清楚的生长因子,有助于婴儿的神经和认知发育。标准母乳的指标并不存在,人们所说的母乳营养组成,其实是大量母乳的平均组成。实际上,除了前面提到的不同母亲之间、同一位母亲的不同哺乳期时母乳存在差异之外,同一日的不同时候,甚至同一次喂奶的开始与结束,母乳的组成也都不相同。此外,母亲的饮食构成与身体状况,对于母乳的组成也有一定的影响。对于正常婴儿而言,只要母亲饮食正常,注意营养的全面均衡,完全没有必要去操心母乳成分,所谓的检测,也就无实际的意义[2-4]。

1.2 检测现状

在我国,某些医院已经开始进行母乳检测,有的把其作为产后的一个必检项目。对此,有专家指出,对于那些饮食正常、身体健康的普通产妇而言,完全没有必要做这种检测。而母乳检测的研究对象,主要是针对那些营养不良或者患有慢性疾病的特殊产妇,而检测的目的主要是为了获得更广泛的科研数据,以便为调整母亲的饮食,提高母乳的质量提供科学依据,在国外,这种检测主要针对早产婴儿[5-8]。

2 母乳成分图像模块设计

基于Android平台母乳成分多指标试纸检测软件,可以检测分析母乳中蛋白质、乳糖和钙成分的含量。该软件有两种可供选择的方法,分别为提取灰度值法和提取红绿蓝(red green blue,RGB)亮度法,通过手机摄像头拍摄的照片进行图像处理计算,对照比值得出母乳中各成分含量[9]。因此,根据软件要实现的功能,分别设计图像采样模块、图像处理模块以及数据显示模块。

2.1 图像采样模块

母乳的营养成分可分为蛋白质、氨基酸、乳糖、无机盐以及微量元素等成分,对于试纸检测而言,检测氨基酸过于困难,且母乳中的三大主要营养成分是蛋白质、乳糖和钙,所以此次设计只检测蛋白质、乳糖和钙[10]。在图像采样模块中,应先选择后期图像处理的方法再进行图像采样。使用Android电子设备的拍照功能,拍摄发生反应后的试纸。在摄像头显示的屏幕中心设计一个与试纸长宽比相同的长方形取景框,拍摄者在拍摄照片后,需要通过裁剪将试纸部分保留下来,剔除背景区域。

2.2 图像处理模块

此款软件设计有两种处理方法,分别为提取灰度值法和RGB值法。①提取灰度值法需要对标准比色卡的数据进行预处理,首先分别提取试纸现有的比色卡浓度,取得零时和最大时的灰度值,进行二元一次方程的计算,得到一个线性的方程y=ax+b,x为灰度值,y为此灰度值多对应的浓度,精确到小数点后两位,然后进行图像处理的软件编写,将经过图像采样处理后的图像,提取图片取景框内的图片信息,然后根据软件编程处理提取有效区域的平均灰度值,根据线性方程进行计算,从而得出相对应的浓度;②RGB值法是对RGB值的运算,需要增加标准比色卡中的颜色,这需要选择中间的颜色。本研究需要将不同成分的标准比色卡中各个阶段的颜色分别提取RGB值,根据RGB值在两个阶段中间选择需要增加的颜色,根据线性关系确定增加颜色的含量值,一个RBG值对应一个含量值,从而生成一个新的比色卡,这种对应关系存储在软件中作为对照组。将经过图像采样处理后的图像,根据软件编程处理提取图片中心点RGB值,与之前存储在软件中的RGB值进行对比,根据计算,选择出最相近的RGB值,从而得出所对应的含量。

2.3 数据显示模块

将图像处理模块获得的成分含量,通过显示程序在Android电子设备的屏幕上实现显示。

3 母乳成分多指标试纸检测软件设计

基于Android平台母乳成分多指标试纸检测软件,是一款母乳成分检测试纸的配套软件。Android系统的电子设备安装此款软件后,可以通过软件自动启用的拍照功能拍摄反应后的试纸,选择所需要的处理方法对得到的图像进行处理和数据计算,显示最终的成分含量。软件共设计了母乳成分的3个指标,分别为蛋白质、糖类和钙,见图1。

图1 基于Android平台母乳成分多指标试纸检测软件分块设计框图

3.1 图像采样

对医学图像的准确采样是图像处理的重要前提。调用电子设备的照相机进行图像采样,其有两种方法:①调用电子设备自带的拍照软件进行图像拍摄;②自行设计照相机软件。本研究的软件选择的第一种方法,调用电子设备自带的拍照软件编程较容易,且图像处理是基于像素所设计,裁剪图片后整个图像的像素数恒定,可解决不同设备由于拍摄像素数不同等因素引起的拍摄图像规格不同的问题。

Android平台母乳成分多指标试纸检测软件图像采样时需满足以下图像采样条件:①对试纸尽量垂直拍摄;②在室内光源拍摄,以达到最准确的效果;③采样区域为整个试纸,试纸中心显色区域要处于照相预览框的正中间。

3.2 图像处理

提取灰度值法是将采样得到符合标准的图像进行有效区域的灰度值提取,计算平均灰度值,记录保存平均灰度值数据,作为实验组数据供下一步进行计算。为了和实验组的灰度值进行数据计算,需要提前将这种试纸的标准电子比色卡数据存入软件,作为参照组数据使用。此款软件可以分析蛋白质、糖类和钙三种试纸的成分含量,本研究对这三种试纸的标准比色卡分别进行预处理[11]。

(1)蛋白质试纸:从浅到深分别为0 mg/ml、5 mg/ml、10 mg/ml、15 mg/ml及20 mg/ml浓度水平的颜色。分别提取蛋白质浓度水平为0 mg/ml时的灰度值为52,浓度水平为20 mg/ml时灰度值为106。带入线性方程y=ax+b,计算得出系数a=0.74,b为-38.4,见图2。

图2 不同蛋白质浓度水平试纸的颜色变化

(2)蛋白质线性方程:density=0.74×average-38.48,average为软件提取试纸的平均灰度值,density为所对应的蛋白质浓度。

(3)运用相同方法得出乳糖线性方程:density=2.5×average-112.5。

(4)钙类线性方程:density=2.8×average-204.4。将得到的average平均灰度值带入不同试纸成分的线性方程,得出density浓度值。将average平均灰度值所相对应的Zj浓度值显示在屏幕上,浓度单位为mg/ml,精确到小数点后2位。

3.3 RGB数据计算

提取RGB法是将采样得到符合标准的图像,提取图像中心点的RGB值,记录保存数据R、G、B值在数组中,作为实验组数据供下一步计算。

为了和实验组的RGB值进行数据计算,必须提前将这种试纸的标准电子比色卡数据存入软件,作为参照组数据使用。此款软件可以分析蛋白质、糖类和钙三种试纸的成分含量,对三种试纸的标准比色卡分别进行预处理和记录数据。预处理分为提取标准比色卡的RGB值和增加标准比色卡的种类两方面。

提取标准比色卡的RGB值以蛋白质成分作为举例,首先制作电子版的标准比色卡。由于蛋白质浓度的不同,试纸有不同的颜色变化,不同的颜色对应不同的RGB值,故选择用ColorPix软件(可以提取图片任意点的RGB值)任意多点多次求平均的统计方法来确定不同蛋白质浓度相对应的RGB值。根据图2可以统计得到数据,见表1。

表1 不同蛋白质浓度对应的RGB值数据

通过对表1数据进行处理,获得蛋白质标准比色卡数据,见表2。

表2 蛋白质标准比色卡数据(mg/ml)

试纸颜色的深浅变化和浓度大小是线性的关系,故可用求中值的方法来增加比色卡浓度的梯度,得到蛋白质浓度完整标准比色卡数据,见表3。

表3 蛋白质浓度完整标准比色卡数据(mg/ml)

标准比色卡的RiGiBi值会保存在软件数据中,图像采样得到的实验组RGB值,会分别和不同的RiGiBi值使用公式1进行方差计算,得到X1,X2,X3…Xi;

得到后的X1,X2,X3…Xi,求出最小值Xj,记录所对应的RjGjBj值。将RjGjBj所应得的Zj值显示在屏幕上,浓度单位为mg/ml,精确到小数点后1位,方差Xi的计算为公式1:

3.4 软件核心算法

编写调用相机拍摄功能的代码,Android系统调用相机功能算法为:

private static final int PHOTO_PICKED_WITH_DATA=3021;

private static final int CAMERA_WITH_DATA=3023;

Android系统提取调用相机拍摄的图像代码:

intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

startActivityForResult(intent,CAMERA_WITH_DATA)[12-15];

在程序中定义一个二维数组,使图像中每一个像素点都用数组表示出来。为避免越界情况的产生,不算边界的行和列,因此在算法中行和列的范围分别是i<width和j<height。其中i为像素点的行数,j为像素点的列数,width为图像的宽度,height为图像的高度。

提取灰度值方法是利用灰度计算公式pixelGray=(int)(0.3×r+0.59×g+0.11×b)计算每个像素点的灰度值,其中pixelGray为灰度值,r、g、b分别代表像素点颜色的RGB值。

提取RGB值方法是定义i为width的1/2,j为height的1/2,getPixel(i、j)为图像中心点,利用提起RGB的公式int r=Color.red(color);int g=Color.green(color);int b=Color.blue(color),分别得到r、g、b的值。

计算母乳浓度代码编写分为提取灰度值与提取RGB法。提取灰度值是将提前预处理得到的线性方程保存在软件中:蛋白质线性方程为density=0.74×average-38.48,average为软件提取试纸的平均灰度值,density为所对应的蛋白质浓度。

乳糖线性方程为density=2.5×average-112.5;

钙类线性方程为density=2.8×average-204.4;

软件所提取的平均灰度值average代入相对应的线性方程得出density密度值反应浓度。

提取RGB法是将表3中的数据定义Ri、Gi、Bi、Zi、Xi保存在软件中(i=1,2,3,4,5,6,7,8,9)。定义9行2列数组,将Xi和Zi数据相对应的保存在数组中。

方差Xi的计算是利用公式(1)计算得到X1,X2,X3…Xi,求出最小值Xj,得出相对应的浓度值。

3.5 软件界面

3.5.1 软件主界面

基于Android平台母乳成分多指标试纸检测分析软件有两种分析方法,分别为提取灰度值法和提取RGB法,使用者需自行选择所需方法,主界面见图3。

图3 基于Android平台母乳成分多指标试纸检测软件主界面

3.5.2 多指标成分界面

选择处理方法后,用户可根据所用试纸来选择试纸的种类,软件进入试纸种类选择阶段界面,见图4。

图4 试纸种类选择阶段界面

3.5.3 图像采集界面

选择拍照按钮,系统相机将被调用,用户拍照时应对试纸尽量垂直拍摄,光源最好为室内光源,以达到最准确的效果。手动调节完成裁剪,保证试纸发生显色反应后大部分的面积都在裁剪框内,完成裁剪后,选择处理按钮,软件将会根据用户所选方法进行图像处理和分析,见图5。

图5 图像处理界面

3.5.4 数据显示界面

根据所选择的试纸不同,软件分别显示浓度,见图6。

图6 软件数据显示界面

3.6 软件测试

在相同环境下,不同相机拍摄出来的照片也不尽相同,这主要有两个原因:①相机屏幕的显色不同;②相机摄像头成像的不同。相机屏幕的显色对于软件在计算上不会产生误差,但是摄像头的成像则决定着软件的最终结果[16]。摄像头的成像不同也许会对测量结果产生较大误差,所以决定测试两款不同的手机,安装此软件后,选择提取RGB法进行试纸的测量。在相同光线环境、相同距离垂直拍摄。测试结果见表4。

表4 相同环境下不同手机测量同一试纸的乳糖含量(mg/ml)

不同的手机的确会使测量结果产生误差,但误差影响并不很大。本研究表明,此种误差可以避免,产生误差的原因主要是制作拍摄标准比色卡时所用的相机和后期用户的相机不符。如果在制作标准比色卡时用同一款相机进行拍照提取RGB值,将不会因为相机不同,而产生相应的误差。

在用户第一次使用软件之前,可以设计一个界面让用户自行拍摄标准比色卡的不同颜色,输入相对应的浓度,从而生成一个与相机相匹配的标准比色卡,解决了不同相机用同一款标准比色卡数据从而产生误差的问题。

本项目的软件可以帮助人类获取试纸测量的结果,并具有结果显示清晰,操作简便、快捷,精度高等特点。

4 讨论

随着智能手机、平板电脑等电子设备的普及,已经有越来越多的医疗健康方面的应用软件,而科技化的产品使人类的生活更加轻松。该款软件的设计初衷是为了帮助眼睛患有疾病、无法识别颜色和对颜色变化不敏感的人们,其使用试纸产品时不需要他人的帮助即可独立的测量出试纸结果[17]。

本研究利用电子设备拍摄试纸图像,用软件进行图像处理和数学计算,分析显示成分浓度含量,减少了人工肉眼测量的误差,提高了测量的准确性[18]。

目前,市面上所销售的试纸检测产品的比色卡的数值精确到个位,对比颜色很少,对于有些反应后的颜色不能明确的在比色卡上对比找出,通常人们模糊地估计所含含量,这会产生相应的误差,如果增加比色卡颜色的种类,使数值更加细化,就可以得到更精准的测量结果,本研究显示,不同浓度所对应的颜色变化不大,如果要在其中再增加颜色,会使这种变化变得非常细微,肉眼对比非常困难。但是对于电子设备来讲,这种细微的颜色变化则很容易分辨,所以本研究利用电子屏幕颜色的多种多样,增加比色卡的种类,从而提高浓度结果的精确度。

测试软件只提取屏幕中心一个点的RGB值进行后期计算,这种单点的模式较容易产生误差,也不够精确。因此,再修改软件时可以将中心点改为一个范围的面积,提取这个面积内每个点的RGB,求取平均,从而保证软件的准确性。

5 结论

本研究设计的是一款母乳成分检测试纸的配套软件。Android系统的电子设备安装此款软件后,可以选择提取灰度值和提取RGB值这两种不同的方法,通过电子设备的摄像头拍摄反应后的试纸,对得到的图像进行裁剪,处理分析,数据计算,从而得到试纸的浓度含量。运用Java语言和Eclipse软件完成了母乳检测分析软件的编程,将成分含量显示在Android电子设备的屏幕上。此款软件共设计了母乳成分的三个指标,分别为蛋白质,糖类和钙。

本研究涉及的测试此款软件编程核心算法是灰度值和RGB值两种:灰度值根据软件所提取的R、G、B三个数值,代入公式计算,得到一个数值。所以提取灰度值的方法,可以线性的表现出灰度值与浓度的关系,这种方法使得浓度结果的显示变得一一对应的关系,不存在近似的关系,所以使得结果更加的准确,但目前还没有理论可以证明浓度的变化和颜色的变化为线性一一对应的关系,为此又设计了根据RGB值计算的方法。直接通过计算最初的R、G、B值,利用方差计算,与标准比色卡进行对比,求出最相近的浓度含量。虽然这种方法的显示结果只有预存在软件中的数种浓度,但是此方法则更加科学,有理论依据。

由于本研究设计的测试软件对于图像的采样要求非常高,所以对于拍摄时的光源要求较高。经试验不同光线对此款项目的测量结果有一定的影响,故在用户拍照时应基本保证拍摄环境为正常光线,如正常白炽灯的照射。

猜你喜欢
色卡试纸母乳
洛阳市住院产妇母乳捐献知信行的调查
母乳库捐赠母乳规范化管理的研究进展及趋势
数字色卡
血糖试纸保存方法及注意事项
母乳到辅食,如何无缝衔接
2018/19秋冬国际流行色定案色卡分析
英国共享母乳引争议
血糖试纸不要放进冰箱
2016年情人节色卡