王逸群 叶燕语 张雪燕
重庆大学光电工程学院,重庆 400044
基于MATLAB的中医脉诊仪的设计与实现
王逸群 叶燕语 张雪燕
重庆大学光电工程学院,重庆 400044
脉诊是中医诊断中的瑰宝,但相比西医诊断的发展,中医脉诊方法和理论发展还停留在主观臆断与经验之中。笔者基于MATLAB设计了脉象实时采集系统,建立了100-40-15-5的四层的BP神经网络,对五种脉象进行识别。利用滤波、去基线漂移、归一化等预处理,大大提高了脉象识别的准确性,使其准确率达到90.8%,为发展中医脉诊数字化、客观化,脉诊仪的小型化提供了一种行之有效的方法。
中医脉诊仪;实时;预处理;神经网络
中医博大精深,脉诊于中医也有着悠久的历史, 《难经》就记载 “独取寸口”候脉言病,所以寸口诊脉是中医诊断学中重要的内容。但是,脉诊在一定程度上取决于医生的主观经验判断,有时导致很难客观把握。为了研究脉象与诊病的内在机理,本项目基于MATLAB设计了中医脉诊仪,结合中医诊断理论与人工智能技术识别脉象,为脉诊客观研究提供了一种方法。
脉象是手指感觉脉搏跳动的形象,脉象的产生与心脏的搏动,心气的盛衰,脉管的通利和气血的盈亏及各脏腑的协调作用直接相关[1]。脉象的具体表现是脉搏信号,它是一种微弱的生理信号。本设计利用HK-2000H压阻传感器采集脉相,该传感器集成了信号调理电路、A/D转换电路、串行通信等电路,可以将脉象的模拟信号转换为数字信号并通过USB与计算机通讯。
因脉搏信号具有复杂、易变等特点,本项目设计了定位系统与充气加压系统。可以防止因环境与自身的振动而导致脉搏信号的畸变。
为了模仿浮、中、沉三种取脉压力,在充气加压系统中加入了压力表,为后续脉象分析打下基础。
图1 数字脉象采集系统
2.1 信号采集与动态显示 该传感器波特率为9600bps,采样频率200HZ,数据格式为8位数据位。当计算机向其发送2032H时,开始自动采样,发送2033H时,停止采样,这样就可控制传感器的采样。
MATLAB数据采集工具箱是一个很好的平台,本设计利用MATLAB的“serial”函数,对串口进行操作,设置与串口相对应的波特率、数据位、停止位等参数,向其发送采样信号,并利用“callback”回调函数,以背景擦除模式动态绘制出数据图像,这样即得到实时的脉搏信号图。
在绘图中,把三个采集到的点平均为一个点画出,这样就使得原本200HZ的采样频率变为66.6HZ,在后面的分析中,可以得知脉搏信号多集中在20HZ以下,这样足以满足香农采样定理,也减少了计算机实时绘图的负担。
2.2 数据预处理与特征提取在时域波形方面,采集到的数据因呼吸、温度和外界振动导致基线漂移。在查阅资料后,使用MATLAB编制带阻滤波器进行去基线漂移,但因不同脉象的噪声频带有所不同,滤波器衰减并非理想,去除效果不佳。改用拟合插值法,对波谷值识别,用样条差值函数(‘spline’)插值并去除,这样就使基线漂移的问题得到解决,并为归一化与神经网络的识别打下了基础。因脉象的个体差异,在时域中很难寻找脉搏跳动的频率,并且精度不能满足要求。利用快速傅立叶变换 (FFT)对脉搏信号进行分析,可以发现,脉搏的图像大多集中在0~20HZ。并且脉象是一种周期性极强的生理信号,所以可以从频域中提取基波的频率,这也就是脉率。在实际的操作中,因采样频率为66.6HZ,数据量为1024个脉象点,所以选择4×1024点的FFT可以达到脉率精度为1/min的要求,从而实现了脉率的精确获取。
图2 基线漂移去除前后脉象对比图
2.3 人工智能方法进行脉象识别 BP神经网络是把高维向量做多次变换,映射到输出空间,并根据设定的判决门限,在输出空间中进行划分的方法。在一个具有无限 “隐层”节点的单隐层BP网络可以实现任意从输入到输出的非线性映射[2],本设计用神经网络对脉象进行模式识别,需要结合中医脉诊要素进行输入输出样本的选取。
图3 神经网络示意图
脉象要素特征的界定十分模糊,中医文献常从位、次、形、势四个方面加以分析。脉位,主要是脉搏跳动的部位,通过压力表,将取脉的最佳压力作为特征量,来区分浮、中、沉三个位置。脉次,即脉率,将频域中提取的频率作为其特征量。脉型与脉势,即脉搏跳动的形态与趋势,设计提取单次脉搏跳动的图像,来表现其特征。
对于脉象的种类,本项目参考标准脉象图[3],并咨询专业医师,在人群中广泛寻找典型脉象,并提取特征量作为神经网络的训练样本。经过大量的实验与计算,采用100-40-15-5的四层神经网络(动量BP算法)进行脉象识别的效果较好,并用采集到的多组测试样本进行系统的验证。
2.4 人机交互界面设计 为使用户能够友好、便捷的操作,本项目设计了MATLAB的图形用户界面(GUI)。只需按操作点击按钮,即可将实时图像、数据、分析结果和诊断建议显示在界面上,方便人机交互。
图4 GUI界面的设计
最后,利用VC++编译器将MATLAB的GUI文件编译成EXE可执行文件。这样,没有MATLAB的用户也能够操作与使用,扩大了受众群体。
本项目设计了小型化的便捷脉诊仪,基本满足了脉象采集、分析与识别的要求,并五种脉象 (常、沉、促、滑、弦)进行分析和识别。其中,训练样本的识别率达到了100%,其余的65个测试样本中,正确识别59个,识别率达到90.8%,辨识效果与一致性较好。
未来中医脉象诊断将努力朝着客观化、数字化的方向发展。本文通过脉象采集系统的硬件设计,信号处理与模式识别的软件仿真,展现了基于MATLAB的中医脉诊仪。设计重点在于找寻一种方法,让中医脉诊有更为客观的诊断标准。但还有许多问题,如复合脉象、年龄、时节的影响并没有考虑,还需要对此进一步地探讨与研究。
[1]朱文锋.中医诊断学[M].北京:中国中医药出版社,2002:8.
[2]周开利.神经网络模型及其MATLAB仿真程序设计[M].北京:清华大学出版社,2005:7.
[3]张文娟.常见二十九种脉象图的临床研究 [C].云南:第二次全国中西医结合诊断学术研讨会论文集,2008:7.
R197.39
A
1007-8517(2015)17-0062-02
2015.06.30)
第八届国家级大学生创新训练项目(项目编号:201410611026)。
王逸群(1994-),男,汉族,陕西蓝田人,本科。