1. 引言
中医的舌诊是中医学科中一个重要的诊断方法,是中医望闻问切中重要的组成成分,它是指通过对舌象特征的观察以了解人体生理和病理的变化。数字舌象图像可分为前景和背景两部分,前景即为舌体,舌体的特征属性包含了颜色、形质、纹理等,上述特征是舌诊过程中需要观察的主要信息,在舌诊中具有重要的价值。在传统的舌诊中,对舌象特征的诊断通常是由专业的中医医师进行,诊断结果容易受到不同的亮度或不同的光源等外在因素的影响,除此之外,诊断结果通常会带有个人主观性,这些因素不可避免地会对舌诊的准确性存在影响。因此,利用计算机图像处理技术对舌象进行分析,对促进中医舌诊的客观化研究有着重要的意义。
在利用计算机对舌象图像的特征信息进行分析的过程中,我们需要结合中医医师宝贵的先验知识提取出舌象中的语义特征,再通过计算机从舌象图像中提取出舌象特征,并与语义特征进行比较分析、总结分类。纹理特征是舌象最基础的特征之一,通过观察舌象的纹理特征我们可以发现舌苔厚的舌象图像很粗糙,舌苔薄的舌象图像很光滑,而类型为腐腻苔的舌象的图像表现为颗粒大小不均匀,因而纹理的疏密可以反映舌象薄厚、腐腻程度,而这些无法被传统的颜色和形状等特征描述,因此基于舌象图像的纹理特征分析具有重要的学术价值。
2. 相关研究
舌诊是中医医学中一个重要的诊断方法,是作为中医医学中望诊的重要组成部分。传统的舌诊是中医医师通过观察病患舌头的颜色、形态等特征的变化来辅助诊断及鉴别的一种方法。近几年来随着计算机科学技术的发展,不断涌现出许多推进舌诊客观化发展的文献,但是这些文献的功能和参数标准都大不相同 [1] [2] [3] 。区别于这些文献提出的舌诊方法,传统的舌诊存在以下几个问题:1) 必须要专业的中医医师;2) 医师需要拥有丰富的临床诊断经验;3) 诊断结果带有医师的主观性;4) 不利于普及与发展。因此随着科学技术的发展和进步,推动舌诊客观化的发展和创新变得十分重要和必要。
针对舌象的舌色的分析主要是观察其图像区域的颜色,舌色特指舌质颜色,需要与苔色区别。通过计算机来识别舌象的舌色需要提取舌质中最佳显现区域,根据罗大中 [4] 等实验数据分析,最佳区域应为舌左、右侧区及舌尖区。杨新宇 [5] 在选用CIEL * a * b颜色模型的基础上,采用聚类分析法并通过分类器实现舌色的识别和分类。两种方法都为对舌象舌色的研究提供了很好的方向,但是前者需要使用特定的软件标注舌象的最佳区域,操作繁琐,不能实现自动化确定最佳区域,而后者能求出不错的结果,却未考虑到算法的体量过于庞大,实现算法需要提前准备大量的步骤。
针对舌象的形态特征上的研究,有如许家佗等 [6] 以舌体的形态特征作为舌体胖瘦的衡量标准,同时也有指出这一衡量标准的不足,易受样本数据的不确定性因素的制约;钟少丹等 [7] 运用Otsu阈值法和分量互补的方法分割出完整的齿痕舌体图像,保留了齿痕的特点,不足是受样本数据因素影响大。
基于以上相关研究,我们发现通过颜色、形态等特征对舌象的分类具有不错的效果,但是可以发现并不能通过这几类特征来分类舌象的薄厚、腐腻及老嫩,舌象的老嫩唯有通过对舌象的纹理特征分析才能进行分类。许家佗等 [8] 提出舌象纹理特征是区别舌质老嫩的重要特征,可以通过统计对比度、熵、平均值、二阶矩阵等纹理参数,来对舌象的纹理进行分析,但该方法的衡量标准容易受到颜色、背景等方面因素的影响。分析纹理的方法主要有三种,分别是统计分析法、结构分析法和谱分析法。统计法主要计算处理平滑、粗糙、颗粒性等纹理特征;结构法计算处理的是图像基本单元的组织结构,如对规则排列的图形纹理结构的描述;谱技术是对图像中全局周期性进行探测,主要适用于周期或准周期变化的纹理描述变化 [9] 。由于舌象图像上面的纹理表现往往不规则且无周期,而基于灰度的差分统计法有着较强的纹理识别功能 [10] ,能够较好的对舌象图像的纹理特征进行分析,符合本文的研究要求,因此,在本文中基于灰度的差分统计法具有重要的研究价值。
3. 算法概述
在对舌象的纹理特征进行分析研究前,本文需要先对舌象进行前期处理以保证本文的研究不受外界因素干扰。因此,在选取好舌象样本以后,本文进行以下流程(如图1)。

Figure 1. The flowchart of our proposed algorithm
图1. 本文算法流程
1) 对舌象进行色偏检测 [11] 再决定是否进行图像的颜色校正;
2) 借助Grabcut算法 [12] 对不存在色偏的舌象图像进行图像的前景分割,将舌象的舌体和图像背景分离,只保留下完好的舌体信息;
3) 再次通过算法将舌体图像的颜色量化,保证图像颜色色彩数据的准确性;
4) 将图像转化为灰度图,然后统计灰度图像各个象素和与它相邻的象素之间的灰度变化情况并累计次数,然后通过直方图算出变化情况的取值概率,最后通过公式分析得出纹理特征;
5) 减少不确定因素对实验成果的干扰,反复进行实验,统计结果。
3.1. 颜色校正
考虑到光源、相机软硬件等因素在实际表现中可能存在的波动,会使舌象图像产生轻微的颜色偏差,从而影响对舌象的识别,因此要对原始舌象进行颜色校正。采集的原始舌象通常都是RGB颜色空间,容易受到外部因素的干扰,与RGB颜色空间相对比,CIEL * a * b颜色空间是一种不受设备干涉的颜色系统,它是用数字化的方法来描述人体的视觉感应,因此首先将原始舌图像都转换为Lab颜色空间。
在正式对原始舌象的颜色进行校正之前,颜色偏差的程度是我们需要考虑的一个重要因素,通过计算图像色度的平均值和色度的中心距离的比值,可以有效地对图像进行偏色检测。计算公式如下,设a-b为色度坐标平面,a、b用于记录a轴、b轴的平均值,W为图像的宽,H为图像的高,设图像等效圆的中心坐标为(
,
),D为图像的平均色度,
、
为图像等效圆a、b轴上的峰值,M为色度中心距(等效圆的半径),K为图像的偏色因子。
图像等效圆的中心坐标:
(1)
图像的平均色度:
(2)
(3)
色度中心距:
(4)
偏色因子:
(5)
图像的偏色情况由图像等效圆在
色度坐标平面上的位置来判断,
大于0则图像偏红,反之偏绿,
大于0则图像偏黄,反之偏蓝,偏色情况与偏色因子K呈正相关,K值越大偏色越严重。因此我们可以通过确定偏色因子来判断图像是否偏色,决定是否对图像进行颜色校正。
我们在灰度世界 [13] 和完美反射 [14] 这两种颜色校正方法的基础上加以改进,实现了契合本文的颜色校正算法。算法的大致思路:通过算法选取图像上最亮的点,并以这个最亮点为参考对整副图像进行自动白平衡,最亮的点定义为RGB三个值之和的最大值。
本文颜色校正算法流程:
1) 计算每个像素的RGB三个值的和(RGB总值);
2) 按RGB总值的大小计算出其前10%的参考点的阈值M;
3) 遍历整幅图像中的每个像素点,计算其中RGB总值大于阈值M的所有像素点的R、G、B分量的累积和的平均值(即Ravg、Gavg、Bavg);
4) 遍历每个像素点,将像素点的数值量化到[0, 255]之间,量化方法为R、G、B分量分别和整幅图像中的最亮点相乘在除去各分量平均值。
图2显示的是颜色校正的实验结果图,实验结果中我们可以发现,图像(a)经过色偏检测后,计算得出K值高达1.724,整体色调偏红,RGB值中的R值整体占比过高,经过颜色校正后图像(b)整体色值较为平均,实验结果表明本文颜色校正的算法的效果尚可,基本能够满足实验的颜色校正的需求。
(a) 预处理前 (b) 预处理后
Figure 2. The tongue image after color correction
图2. 颜色校正后的舌象图像
3.2. 舌体图像分割
当图像的光照、亮度等外部因素不再会成为干扰因素后,我们需要进行的是舌体图像的分割。由于实验采集到的舌象图像是包含着其它因素的图像,并不单单是一个完整的舌体图像,所以需要对舌象图像进行分割,将完整的舌体图像分割出来,以避免其它因素对后续实验的干扰。
在图像分割算法的选择上,GrabCut算法是一种快速的基于简单交互的分割算法,也是一种非常流行的能量优化算法,因此该算法在分割的速度上十分迅速,且体量不大,适用于本文实验。该算法是通过迭代能量最小化来分割图像的方法,能量最小化分割是一个不断进行分割估计和模型参数学习的交互迭代过程,每次迭代过程都使得对目标和背景建模的GMM的参数更优,使得图像分割更优。因此,本文实现舌体分割的算法是在GrabCut算法的基础之上加以改进,以契合本文实验。
算法的基本思想是:以RGB颜色空间的三个通道来衡量两个相邻像素的相似性,采用欧式距离(二范数)来计算这两个像素之间的差异,如果这两个相邻像素的差别很小,则它们属于同一背景的可能性大;如果这两个相邻像素的差别很大,则它们处于目标和背景的边缘部分的可能性大。
舌体分割算法流程:
1) 在图像中定义包含目标(前景p)的矩形。
2) 将矩形区域外的区域定义为背景v。
3) 在定义的矩形区域内部,用背景中的数据区分矩形区域内部的前景p和背景v区域。
4) 用高斯混合模型(GMM)来对背景p和前景v进行建模,并将尚未被定义的像素标记为可能的前景pi或者可能的背景vi。
5) 将图像中的每一个像素当做通过虚拟的边与周围像素相连接,而每条虚拟边都有一个属于前景p或者背景v的概率,将每一个像素(算法中的节点)与一个前景节点或者一个背景节点连接。
6) 在所有节点(像素)完成连接后(与背景v或前景p连接),若节点之间的边所属不同,即一个节点属于前景p另一个节点属于背景v,则切断它们之间的边。
其中输入的前景p和背景v指的是一种概率,如果已经明确某一块区域是背景v,那么它属于背景v的概率设定为1。如果它有可能背景v,但是没有完全的肯定,这时则需要用到高斯模型对其进行建模,然后估算概率。大致流程如图3。

Figure 3. The detailed process of GrabCut based segmentation
图3. 基于GrabCut算法的分割流程
图(a)是原始图像,每个单元格代表像素点;图(b)是分割图解,将像素值相近的像素点相连并区分前景和背景;图(c)则是在所有像素完成连接后(与背景或前景连接),若节点之间的边所属不同,则切断它们之间的边,并将节点归属于前景或背景。
图4是对原始舌象进行舌体分割的结果:
(a) 原始图像 (b) 舍象图像
Figure 4. The separation of foreground and background regions in a tongue image
图4. 舌象图像中的前景/背景分离
3.3. 纹理特征分析
通过对大量舌象的纹理特征进行的观察,我们可以发现舌苔厚的舌象图像较为粗糙,舌苔薄的舌象图像较为光滑,腐腻苔的舌象的图像表现为颗粒大小不均匀,舌质苍老的舌图像纹理较为粗糙、杂乱,灰度分布不均匀,图像内相邻像素灰度差异较大,舌质细嫩的舌图像纹理较为细腻,灰度分布较为均匀、规则,图像内相邻像素灰度差异较小。基于此我们推测出纹理的特征可以反映舌象老嫩、薄厚、腐腻的程度。
基于我们观察到的舌象图像的纹理特征,我们发现舌象上面的纹理往往是不规则、无周期的,而基于灰度的差分统计方法有着较强的纹理识别功能,符合本文的研究要求,因此,我们决定使用灰度差分统计的方法进行纹理特征研究。
算法的基本原理是统计图像每个象素和它相邻象素之间的灰度变化的情况。图像中的任意一点
与
和它相邻的点
的灰度差值为:
;算法的实现思路是:
1) 设灰度差分的所有可能取值有n级,将点
在整幅图像上移动遍历,累计
在各个取值的次数;
2) 做出
的直方图用以统计;
3) 通过直方图求出
取值的概率为
,其中i在1~n之间取值;
4) 当较小的i值的概率
较大时,说明纹理较粗糙,当
的各个取值较接近时,即概率分布较平坦时,说明纹理较细。
用来描述纹理特性的主要参数有对比度CON、二阶角矩ASM、熵ENT、平均值MEAN。其中i为像素灰度值,取值范围[0, 255],
为
取值的概率,
是灰度差分,m表示的是图像灰度范围,取值范围[0, 255]。
对比度:
(6)
CON表示临近像素的反差,表示的是图像的清晰点、纹理的强弱,CON越大,纹理越明显;
二阶角矩:
(7)
ASM是图像灰度分布均匀程度和纹理粗细程度的一个度量,当图像灰度不均匀、纹理较粗糙时,ASM较小;
熵:
(8)
ENT表示的是图像的复杂程度,当图像的复杂程度高时,ENT较大。以下公式中,i表示的是图像灰度值,取值在0~255;
平均值:
(9)
当对比度、二阶角矩、平均值三个数值越小,熵值越大时,图像的纹理表现越细腻,反之当对比度、二阶角矩、平均值三个数值越大,熵值越小时,图像的纹理表现越粗糙。老舌的舌质纹理粗糙,嫩舌的舌质纹理细腻,而舌苔厚的舌象舌苔较为粗糙,舌苔薄的舌象图像舌苔较为光滑。
对舌象的舌质纹理分类的研究中,我们主要从舌体中选取边缘小块的子图像进行研究,舌质老和舌质嫩的舌象对比图如图5,从舌体边缘截取得到的小块图像中我们可以看出,舌质老的舌象纹理较为粗糙,舌质嫩的舌象纹理较为细腻。
(a) 纹理细腻 (b) 纹理粗糙
Figure 5. The contrast of tongue images with different texture
图5. 具有不同纹理的舌象图像对比
4. 实验结果与分析
本文采用了300幅由专业仪器采集到的舌象样本数据集,我们将舌象舌质纹理区分为老舌、嫩舌,将舌象舌苔纹理区分为薄苔、厚苔。我们在实验前通过专业人士的观察将舌象分类,分别有老舌152例,嫩舌47例,不老不嫩101例。对舌象的舌质纹理分类的研究中,我们主要从舌体中选取边缘小块的子图像进行研究,数据集部分舌象图像如图6。
(a)
(b)
Figure 6. Rough texture smooth texture of tongue
图6. 舌质粗糙、细腻舌象
表1是我们通过算法计算出来的各类舌象的用来描述纹理特性的主要参数。

Table 1. Tongue image texture parameters
表1. 舌象纹理参数
如表2实验结果表可以看出,老舌、正常舌、嫩色三种类型的舌色L值逐渐递减,a值逐渐递增,b值略微递减。三类舌象中的4个主要参数中,对比最明显的参数是对比度CON,舌象的纹理特征越多,对比度CON相应的也越多,其中老舌的CON平均值是82.71,正常舌的CON平均值是67.56,嫩舌的CON平均值是51.34。那么,通过对参数CON的比较分析,我们初步定下了将三类舌象的参数CON的中值设为对舌质纹理进行分类的阈值。

Table 2. Result of texture classification
表2. 舌质纹理分类结果
因此,本文将CON的阈值设定为59.45和75.13,即CON小于59.45的为嫩舌,CON大于75.13的为老舌,大于59.45且小于75.13的则为正常舌,通过CON阈值对300幅舌象进行分类分得170例老舌,73例正常舌象,57例嫩舌。将这组分类情况与舌象真实分类情况进行对比,得到对舌质老的舌象的辨别准确率有89.41%,对舌质适中的舌象的准确率有72.27%,对舌质嫩的舌象的准确率有82.46%,总体准确率为81.38%。其中对纹理粗糙的舌象的分类情况最为准确,对纹理适中的舌象的分类较差。
另外,我们通过实现卫保国等 [15] 提出的结合子空间法以投影长度比和纹理粗糙度作为分类特征的方法来实现纹理结构的综合判断的方法来与本文的分类方法进行对比。
从表3实验结果来看,结合子空间法的分类方法的总体准确率为72.23%,相较于本文的分类方法的总体准确率81.38%要略低一些,且前者进行分类前需要进行大量的前期工作,如图像采集、图像分类、图像标注、校准训练器等。

Table 3. Training and identification of tongue image results
表3. 舌象训练及识别结果
同时,我们也实现了一种通过颜色来作为分类特征的方法来实现舌象老嫩的分类,通过这个方法来与本文的分类方法进行对比(表4)。采用提取舌象最佳区域:舌左、右侧区及舌尖区三个位置的Lab色彩数值统计求平均并累计多组数据的平均值。

Table 4. Color classification of tongue image results
表4. 颜色分类方法结果
由于三种类型的舌象的Lab平均值十分接近,我们设定三类舌象的L分量的中值为阈值进行分类,准确率分别是老舌37.5%、正常舌40.5%、嫩舌29.7%,三类舌象的分类情况都不是很理想,主要原因是三类舌象的Lab数值并不分明,仅通过Lab数值并不能很好的判断舌象类别。
5. 结束语
本文通过纹理特征对舌象图像进行了分类研究,本文根据舌象的色偏程度采用了基于白平衡改进的算法对图像进行颜色校正,并改进了GrabCut算法并用于本文对舌象进行了分割舌体,从而分割出完整的舌体图像,最后基于灰度差分统计对舌象的舌质纹理进行了统计分析,并对不同类型的舌象图像实现分类。从本文的实验结果中,我们验证了本文算法的有效性及准确性,同时我们发现,通过算法得出的分类结果与正确的分类结果尚存在一定的误差,因此如何将误差降低是我们往后的研究方向。并且随着计算机信息技术的发展,我们可以尝试使用更多的模型结合进本文算法,通过加权判断的方式设定阈值,以此对不同类型的舌象图像进行分类。