APP下载

中药饮片性状质量智能检测关键技术研究*

2023-09-01周金海张燕群段念林

世界科学技术-中医药现代化 2023年5期
关键词:中药饮片饮片斑点

周 明,周金海,张燕群,段念林

(1. 南京中医药大学中医学院·中西医结合学院 南京 210023;2. 南京中医药大学人工智能与信息技术学院南京 210023;3. 杭州海善制药设备股份有限公司 杭州 311401)

自李克强总理提出《中国制造2025》行动纲领以来,国内人工智能研究的热度再度提升,特别是在计算机视觉和自然语言处理两方面更为热门。计算机视觉是一门研究如何使机器能像人一样“看”的科学,其主要通过摄影机或照相机以及计算机设备来代替人眼对目标进行跟踪、采集以及理解,最终建立能自主从图像获取感知信息的智能系统[1]。现今很多领域,如自动驾驶、人脸识别及工农业产品质量检测,都在研究计算机视觉技术应用,并有一定成果[2-10]。

中药饮片质量的评价方法,通常包括含量测定、中药指纹图谱、生物评价法等[11],广泛使用先进的分析技术及设备,可靠性较好,但检测过程相对复杂,成本也较高,很难实现在线实时动态检测。因此,在中药饮片企业的实际生产过程中,外观形状的评价仍以传统的人工评判为主,依靠人的感官识别饮片的形、色、气、味等外观性状,根据经验来判断中药饮片的真伪优劣[12]。著名中药学家谢宗万先生将这种鉴别方法称为“辨状论质”[13]。有学者认为“辨状论质”具有便捷、直观、实用等优点,值得重视和发展[14-16],但其主观性较强、难以传承等问题也是存在的,特别不适合大规模自动化生产,迫切需要现代科技加以阐释和修正[17-18]。中药“辨状论质”需要通过“眼看”来辨别饮片的形状、规格、大小、颜色等外形特征,这些与图像最基本的识别特征有较多重合,从而使得运用计算机视觉技术来实现客观化的中药饮片性状质量检测成为可能。相比其它行业,在中药饮片质量评价上,计算机视觉智能检测研究还处在起步阶段,近年来有限的报道大多集中在对单一性状的检测研究[19],无法全面体现中药饮片“辨状论治”的内涵。

本研究从中药饮片斑点、大小、异形及色泽多维的性状特征入手,构建基于计算机视觉的饮片性状质量智能检测模式,解决中药饮片生产在线检测的关键技术问题,意在逐步改变众多中药饮片企业人工进行品质分拣低能高耗的落后现状,以提高产品质量来增产增效。从行业角度而言,有利于促进中药饮片生产现代化进程。以上即是本研究的意义和创新所在。

1 材料与设备

以计算机视觉关键技术构建中药饮片性状质量检测系统,包含图像采集部件(含LED 光源的小型摄影棚及高清晰度照相机)和图像处理部件(含性状数据库及检测软件的计算机)。其中,软件选用微软公司的Visual Studio 平台开发,采用Intel 公司的OpenCV套件进行辨析功能实现。

OpenCV 是一个开源的计算机视觉算法库,能高效的实现图像处理和计算机视觉方面的许多通用算法,并且提供支持向量机、BP 人工神经网络等经典机器学习算法[20-21],其应用已涵盖质量检测、图像识别、机器人等众多领域[22-24]。

实验用大黄饮片购自河北御颜坊中药材有限公司,经南京中医药大学陈建伟教授鉴定为蓼科植物药用大黄Rheum officinaleBaill.的干燥根和根茎。

2 方法与步骤

对饮片性状质量相关的众多要素进行筛选,初步尝试从有无斑点、大小、片形、色泽4 方面进行计算机视觉检测研究。

2.1 斑点检测

中药饮片在储藏保管过程中,常易发生虫蛀、发霉变质等现象,导致表面出现斑点,从而影响质量和品相。因此,首先考虑对有斑点的瑕疵饮片进行辨别排除。

斑点通常是指与周围有着颜色和灰度差异的区域,在计算机视觉领域,主要通过检测图像中比周围像素灰度值明显大或明显小的区域来实现[25-26]。研究选用基于局部极值的分水岭算法进行检测,OpenCV中对应的函数名为simpleBlobDetector,检测原理及步骤如下:①对一张图片设定一个最低阈值、一个最高阈值和一个步进值。从最低阈值到最高阈值以步进值为间隔取一系列阈值,用每一个阈值对图像进行二值化处理,得到一系列二值化图像;②对每张二值化图像提取轮廓,计算每一个轮廓的中心;③设置中心坐标间最小距离,两中心坐标间距离小于最小距离则认为属于同一位置的斑点,获得斑点数据集;④对已获得的斑点数据集进一步过滤,筛选符合要求的斑点。过滤参数包括:面积(Area)、颜色深浅(Thresholds)、圆度(Circularity)、惯性率(Inertia)、凸度(Convexity),各过滤参数效果见图1。

图1 斑点检测方法中过滤参数效果的图形解释

2.2 大小检测

在中药饮片的质量分级中,大小是区分等级的重要因素之一[27-28],传统经验认为“大”者为佳。诸如大黄等根茎类饮片,多为类圆形,无法用直径准确衡量大小,因此考虑用横切面积作为检测指标。获取饮片横切面积,首先需要标注出轮廓,然后对轮廓包围面积进行计算。OpenCV中使用findContours函数完成轮廓提取[29],使用寻找轮廓凸包的方式来获取中药饮片的近似面积。再与标准面积进行比较,判定饮片大小是否符合要求。

2.3 异型检测

异型检测是在大小符合标准的饮片中,排除长条形和凹陷形两种不合格饮片,是进一步的形状一致性筛选。

鉴别长条形饮片,通过寻找饮片图像最小外接矩形实现[30]。所谓最小外接矩形指包围整个饮片图像面积最小的矩形,矩形的长宽比可用来表示饮片的圆形程度,比值越接近于1说明圆度越高。OpenCV 视觉库中minAreaRect 函数可用于寻找图像最小外接矩形,获得矩形四个顶点坐标,通过坐标可求出矩形的长和宽,进而计算出饮片的长宽比,若比值大于预设值,说明为长条形饮片,即完成检测。

筛查凹陷形饮片,选用凸缺陷检测法。所谓凸缺陷,指图形轮廓与图形凸包之间的区域,如图2 所示,饮片与其周围黑色线段包围的区域称为凸缺陷,即图中A、B、C、D 区域。使用OpenCV 中的convexityDefects函数实现凸缺陷检测,搜索到离对应凸包边缘最远的点集,计算出最远距离,此最远距离若大于可容忍最大凹陷距离,即判断当前为凹陷形饮片。

图2 凸缺陷示意图

2.4 色泽检测

色泽检测是中药饮片性状评价中尤为重要的一部分,无论是古人对优质饮片的描述,还是现代对饮片等级划分的标准中,都涉及色泽要求[31-32]。本研究中色泽检测的总体流程如图3所示,包含图像处理、特征提取、辨色识别3部分。

图3 色泽检测流程示意图

2.4.1 图像处理

为避免背景对饮片颜色特征提取的影响,需提取图片中饮片部分进行单独分析,此步骤称为图像分割。图像分割算法很多,最常用的是分水岭算法。经典的分水岭算法由Vincent等[33]在1991年提出,其具有分割精确、便于实现的优点,但也存在过度分割的缺陷。OpenCV 提供了一种基于标记的分水岭算法,该算法使用一系列预定义标记来引导图像分割,对图像中重要区域做标记,忽略不重要区域,例如前景用一种颜色标记,背景用另外一种颜色标记,未知区域标记为0,最后运用分水岭算法就可实现更为理想的图像分割[34]。图像分割的主要步骤如下:①读取待分割饮片图像;②标记图像中的饮片部分与背景部分,合成标记图像;③将原图与标记图输入封装好的分水岭算法进行图像分割;④显示并保存分割出的饮片图像。

2.4.2 特征提取

统计学中,直方图用来显示数据的分布,同样在计算机视觉中,颜色直方图可用来描述不同色彩在整幅图像中的分布情况,其是对颜色数据进行统计的一种方法[35]。研究基于RGB 颜色空间,采集饮片颜色特征。特征提取一般步骤如下:①载入饮片图像;②将图片分割为R、G、B 单通道图像;③计算各单通道图像的颜色直方图;④保存直方图数据并进行显示。

2.4.3 构建模型

计算机视觉与机器学习关系紧密,图像数据往往通过机器学习方法构建模型,才能实现智能检测目的。支持向量机(Support Vector Machine,SVM)是一种有监督的机器学习方法,多用于二分类问题。其基于结构风险最小化的原则,力求在高维空间寻求最优分隔超平面,使得训练集中不同类别的样本正好落在超平面的两侧。如图4所示,绿色平面将蓝、红两种圆球完美分开,并且保证任意红球或蓝球到平面的间距最大化,这个绿色平面就是寻找到的最优分隔超平面,形成的SVM模型可用于蓝、红两种圆球的分类。

图4 SVM原理示意图

SVM 在解决小样本、非线性及高维模式识别中表现出较好的判别性能,所以在分类问题中被广泛运用[36]。建立饮片图像SVM 辨别模型的主要步骤如下:①将提取的饮片颜色直方图数据随机划分为训练集和测试集;②初始化SVM 参数,用训练集数据进行模型训练,构建判别模型;③用建好的模型判别测试集数据,验证模型的准确性。

3 实现与结果

3.1 斑点检测

调用OpenCV 视频库中斑点检测器simpleBlob Detector,设置和调整具体参数。图片灰度值范围一般为0-255,0代表黑色,255代表白色,此也为阈值允许的调节范围。实验中预设最低阈值(minThreshold)为50,最高阈值(maxThreshold)为150,步进值(thresholdStep)为5;过滤参数中斑点最大和最小面积(maxArea、minArea)分别预设为2000 和50。如上参数常需根据饮片品种及实际情况调整,所以设计在前台交互界面中控制,而过滤参数中圆度、惯性率、凸度值一旦确定无需过多修改,所以设计在后台代码中。经试验最终确定斑点最小圆度(minCircularity)为0.1f,最小惯性率(minInertiaRatio)为0.01f,最小凸度(minConvexity)为0.01f。此外,中心坐标间最小距离(minDistBetweenBlobs)及颜色深浅(blobColor)均取默认值。核心代码见图5所示。

图5 斑点检测核心代码

图6为中药饮片斑点检测示例,(a)为前台交互界面,(b)为两枚大黄饮片经斑点检测后所得结果图。左图饮片横断面未见明显斑痕标注,右图饮片经检测准确标出斑点位置。经多次验证,此斑点检测方法可对指定大小、灰度范围的不规则斑点进行筛选和标记,准确度满意,适用于中药饮片表面斑痕检测。

图6 大黄饮片斑点检测示例

3.2 大小检测

大小检测核心在于对中药饮片轮廓的提取。轮廓提取函数的输入值要求为单通道图像矩阵,因此先要对彩色饮片图像进行预处理。处理过程包括:①读取中药饮片图片并转化为灰度图像(imread 函数);②使用高斯滤波函数对灰度图进行降噪(Gaussian Blur 函数);③运用边缘检测函数,将图片二值化(Canny 边缘检测函数)。如上得到轮廓提取所需输入文件,代入findContours 函数,提取饮片轮廓。由于不能保证获得的轮廓均为封闭曲线,饮片面积考虑运用寻求凸包方式求得,使用convexHull函数,核心代码见图7。

图7 中药饮片大小检测核心代码

参考《中国药典》[37]及大黄商品规格等级划分方法[38],将直径大于5 cm 的大黄评定为优等,计算直径5 cm 圆形面积作为标准面积。将计算出的样品面积与标准面积比较,完成中药饮片大小判别。图8 为大黄饮片大小检测示例,(a)为饮片灰度图,(b)为Canny边缘检测得到的二值化图,(c)为findContours 提取轮廓得到的饮片最外层轮廓,(d)为饮片的凸包图像。从(d)中可以看出,凸包面积略大于标准圆面积,通过面积数值比较,此大黄饮片大小符合要求。

图8 大黄饮片大小检测结果图

3.3 异形检测

排除长条形饮片,使用minAreaRect 函数寻找中药饮片图像的最小外接矩形。输入参数是饮片大小检测中获得的最外层轮廓数据,通过返回值的size 属性即可获得矩形的长和宽。计算长宽比,与预设值进行比较,即可判别是否为长条形饮片。图9 为长条形饮片检测的核心代码。

图9 长条形饮片检测核心代码

筛选凹陷形饮片,选择convexityDefects 函数对饮片进行凸缺陷检测。输入参数涉及饮片轮廓检测和凸包检测数据,分别可用饮片大小检测中提及的findContours 和convexHull 函数获得,结果可得到距离对应凸包边缘的最远点坐标,计算出坐标与边缘垂直距离即可进行判断[37],核心代码如图10所示。图11为凸缺陷检测结果示意图,左图为合格饮片,右图饮片轮廓上明显标记一加粗圆圈(箭头所指处),说明此中药饮片在箭头所指区域凹陷程度过大,已超过凹陷判定阈值,提示为异型不合格饮片。

图10 凸缺陷检测核心代码

图11 凸缺陷检测结果示意图

3.4 色泽检测

在斑点检测和片型检测均合格的饮片图像中,随机选取100份图像形成色泽检测样本集。

3.4.1 图像分割

图像分割使用基于标记的分水岭算法,OpenCV中函数原型为:void watershed(InputArray image, Input OutputArry markers)。

其中,输入参数image为待分割图像,markers为标记图像。图像分割的关键步骤是标记图像中的饮片部分与背景部分,图12 为图像分割的关键代码,图13为图像分割的基本过程,步骤大体包括读取图片、标记饮片、标记背景、合成标记图像、图像分割等。

图12 图像分割的关键代码

图13 图像分割过程与结果

3.4.2 颜色特征提取

通过颜色直方图来提取中药饮片颜色特征,OpenCV 中函数原型为:void calcHist(const Mat* images,int nimages, const int* channels, InputArray mask,OutputArray hist, int dims, const int* histSize, const float**ranges, bool uniform=true, bool accumulate=false)。

其中,参数images 为输入的图像;nimages 为输入图像序列的数量;channels 为需要统计的通道索引;hist 为输出的直方图结果矩阵;dims 为需要计算的直方图维数;histSize 为直方图每一维的大小,即每个维度bin的数目;ranges为直方图每一维的取值范围[11]。

由于该函数一次只能计算单个颜色分量,因此需要先用split 函数将饮片图像R、G、B 三个颜色通道分离,再分别计算直方图数据。因传入的是单通道数据,所以参数nimages、channels、dims值均是确定的,分别为1、0、1,并且一般情况下histSize 值取256,ranges范围设置在[0,255],而uniform、accumulate 取默认值即可。图14 为核心代码,图15 是通过代码运算得出的某大黄饮片颜色直方图。

图14 提取饮片RGB颜色直方图的核心代码

图15 某大黄饮片样本的RGB颜色直方图

3.4.3 模型建立与质量判别

100 份样本图片经过图像分割、特征提取后,随机抽取75 份作为训练集,25 份作为测试集。使用OpenCV MLL 库中的SVM 算法构建饮片色泽检测模型。

SVM 函数原型为:CvSVM(const Mat& trainData,const Mat& responses, const Mat& varIdx=Mat(), const Mat&sampleIdx=Mat(), CvSVMParams params=CvSVMParams())。

其中,trainData 为训练数据,responses 为分类结果,CvSVMParams为SVM的初始化参数。

初始化SVM 参数,kernel_type 指定为RBF 类型,即使用径向基核函数。用训练集数据进行模型训练,将训练好的模型保存在XML 文件中[38]。用测试集样本验证模型判别的准确性,饮片优、劣等级分别用数字1 和0 表示,结果如表1 所示,SVM 判别模型对测试集样本有21例判别正确,其对饮片质量等级的判别准确率达84.00%,表明在相同的饮片图像采集环境下,SVM 分类模型已经能够从色泽角度比较准确的判定大黄饮片的质量。

表1 测试集饮片SVM质量判别结果列表

4 结语

以中药饮片“辨状论质”理论为基础,运用人工智能之计算机视觉技术,针对中药饮片的表面斑点、大小、片形及色泽特征进行处理分析,实验构建了大黄饮片性状智能检测模式,实现了快捷准确的饮片质量判别,弥补了生产过程中传统人工质量检测在客观性上的不足。设计方案可迁移推广至其它根茎类中药饮片的质量检测;对于藤类、叶类、花类及果实种子类饮片,部分方法也可借鉴使用。此研究为构建企业产品数据库提供了参照标准,对中药饮片行业大规模全线产品性状智能在线自动检测系统的研究奠定了技术创新基础。

随着人工智能技术的不断发展,采用计算机视觉结合机器人技术的中药饮片性状智能自动检测新装备研发前景好。一旦成熟的设备面世,可望改变密集型人工在线质量分拣低能高耗的落后状态,也会得到中药饮片企业的大力欢迎。大规模地推广应用,将为中药饮片行业提质增效和中医药现代化发展做出巨大贡献。

猜你喜欢

中药饮片饮片斑点
可爱的小斑点
基于电子舌的白及及其近似饮片的快速辨识研究
斑点豹
不同等级白芷饮片HPLC指纹图谱
猪身上起红斑点怎么办?
中药饮片市场监管乏力
中药饮片小包装探讨
中药饮片鉴别真伪的意义及相关方法
易混淆中药饮片安全用药举隅
22省市柏子仁饮片应用现状