Ansys Zemax | 如何建模人体皮肤以及光学心率探测器

光电容积脉搏波法(PPG)是一种低成本,无创的光学技术,可在皮肤表面进行生理测量。其最广泛的应用之一是商用智能手表和运动手环中包含的可穿戴心率传感器,它在日常环境下可提供舒适和连续的脉搏监测。本文演示了如何在 Zemax OpticStudio 中对人体皮肤建模以进行生理测量,并说明了使用 ZOS-API 对基于 PPG 的心率传感器进行的时间相关模拟。(联系我们获取文章附件)

简介

PPG 器件由红外或可见光波长范围内的发光二极管 (LED) 和光电探测器组成。它们提供了一种简单的光学技术来检测组织中的血容量变化,因为血液比周围的组织对光具有更强烈地吸收和散射效应。因此,血液的脉动将导致检测器信号发生相反的相位变化。本文介绍如何在 OpticStudio 中模拟人体皮肤组织模型,并演示如何使用 ZOS-API 应用程序模拟 PPG 设备随时间推移的测量信号。

基础设计

PPG 传感器可设计为反射或透射模式。由于光的穿透深度取决于其波长,因此绿色和黄色 LED 光线最适合在浅表血流中进行测量,并且通常以反射模式使用。另一方面,红外和近红外波长更适合测量深层组织血流,可用于透射模式。在次案例中,我们展示了一个反射 PPG 设备。

我们的目标是根据相关文献中发表的数据开发一个逼真的皮肤模型。因此,我们打算应用某种波长,通常设置为对应皮肤和血液的光学参数在文献中广泛可见的波长,并且也接近商业设备中最常用的波长。因此,我们建模选择了 575nm 的波长,并使用 QSMF-C160 LED (Avago Technologies) 作为光源。此 LED 的模型可以直接从 Radiant Source Model 数据库下载,并且可以通过从 Radiant Source Model 文件生成的光线来创建光源文件。

人体皮肤建模

为了模拟人体组织介质中的光传输,我们创建了分层皮肤模型,该模型考虑了表皮、真皮和皮下脂肪的组织结构。由于此例的主要目标是模拟基于 PPG 的心率传感器,其中关键点是测量由血液脉动引起的变化,因此我们专注于准确地建模可以观察到这种脉动的皮肤层。因此,我们分别对不同血含量值的真皮亚层进行建模,即真皮乳头层、毛细血管下皮层、上层血网真皮层、网状真皮层和深部血网真皮层。另一方面,由于表皮中没有血液含量,为了保持模型简单我们只使用一个厚表皮层,它包含所有角质层、颗粒层、棘层和基底层。最后,与大多数已发布的皮肤模型类似,我们也用一层结构表示皮下脂肪。

上述所有皮肤层在 OpticStudio 中都建模为矩形物体,每层的厚度值基于文献数据,通过使得侧面没有漏光的方式来确定横截面的尺寸。通过使用上一个层作为参考对象并对上一个层的 Z 长度单元格中的 Z 位置值应用 Pickup 求解来放置后续层结构。该解决方案确保了各层结构紧贴在一起,之间没有任何间隙。

自定义组织层结构

由于本案例研究仅依赖于文献中发表的数据,因此我们在整个建模过程中并未进行任何新的测量。尽管模型参数基于已发布的数据,但需要注意的是,人体皮肤的光学参数在不同人群中可能存在明显差异。因此,特定主题可能需要使用不同的参数。所以,如果您的特定应用可以获得更准确的数据,请制定相应的组织结构模型。

详细表示皮肤中的所有每条血管将需要添加数百个具有复杂空间排列的物体,并且会降低模型的通用性,因此这种类型的建模在文献中并不进行考虑,所以我们也没有应用这种建模方式。相反,我们通过计算血液和周围组织结构的光学参数的加权平均值来考虑不同皮肤层的血液含量。

因此,我们基于以下原始数据,使用 OpticStudio 中的模型材料求解对表皮层的材料进行了建模:

人体组织中的体散射

Henyey-Greenstein 分布函数可以准确描述混浊介质(例如生物组织)中小颗粒的光线散射。Henyey-Greenstein 模型只有一个自由参数,即各向异性因子 g。该参数的域区间为 [-1, 1],其中 g=-1 对应反向散射,g=0 表示各向同性散射,g=1 表示正向散射。散射光的角度分布定义为:

在 OpticStudio 的非序列模式下,Henyey-Greenstein 体散射模型以 DLL (Henyey-Greenstein-bulk.DLL) 的形式提供,包含在 OpticStudio 安装文件中。

在文章附件的多层皮肤模型中,每一层的散射参数都是根据文献中给出的实际值设置的。虽然 Henyey-Greenstein 散射 DLL 的输入参数是平均路径、传输分数和各向异性参数 g,但在文献中通常散射和吸收系数分别定义为 µs 与 µa,与各向异性因子一起展示。因此,我们使用以下公式来计算模型的输入参数:

类似地,与之前的折射率、散射和吸收系数以及不同皮肤层的各向异性因子一样,为血液和组织其余部分相应值的加权平均值进行计算,以下为对应于 575 nm 应用波长的原始数据:

多层皮肤模型和组织中的光线传输显示在下面的 3D 布局图中。为了说明每个皮层的散射情况,光线在图上按光线分段着色。

为了提供除显示图之外的数值结果,我们在设计中添加了三个矩形探测器。它们与皮肤表面之间被一个薄薄的空气间隙隔开(出于非序列模式建模嵌套规则的考虑)。两个探测器具有与皮肤层相同的截面尺寸,一个朝向光源,另一个朝向皮肤模型,以分别测量所有入射光和背向散射光供后续参考。第三个探测器是一个同样面向皮肤的小探测器 (2mm x 2mm),代表了 PPG 设备中的典型光电探测器。

上述设计可以在文章附件 (skinModel.zar) 中找到,当测量/模拟与时间依赖性不相关时,它可以用作现成的皮肤模型。另一方面,对时间相关效应建模的方法——例如,在心率传感器的应用情况下——将在下一节中讨论。

模拟心率传感器

为了模拟心率监测,我们可以使用 ZOS-API 来模拟组织中的脉动血流。我们通过调整皮肤层的血液含量来模拟心脏周期的不同阶段,然后我们检查探测到的背散射光作为时间步长的函数,将各层血液含量的时间变化通过倍增因子考虑在内,假设血容量在每一层中按比例且同时变化。在这个例子中,我们使用 Python API(通过 .NET 连接到 OpticStudio)来修改模型参数,使用微调设置运行光线追迹,最后分析和绘制结果。应用到的 Python 程序脚本可以从文章附件 (PPGsimulation.py) 下载。

通过 API 修改人体组织参数

根据文献,当心脏在收缩期将血液泵入血管时,皮肤层的相对血液含量会翻倍。我们使用经验函数来表征这种脉动,下图显示了 5 个心脏周期的结果(10步长/周期)。

基于此,我们首先计算了每一层的血液含量,然后我们相应地更新了折射率、平均自由程、透射率和Henyey-Greenstein 散射分布的各向异性因子 g。对应的Python代码如下:

layer = TheNCE.GetObjectAt(layerNum)

solver = layer.MaterialCell.CreateSolveType(ZOSAPI.Editors.SolveType.MaterialModel)

solver._S_MaterialModel.IndexNd = n

layer.MaterialCell.SetSolveData(solver)

volPhysData = layer.VolumePhysicsData

volPhysData.ModelSettings._S_DLLDefinedScattering.MeanPath = meanPath

volPhysData.ModelSettings._S_DLLDefinedScattering.SetParameterValue(0, transmission)

volPhysData.ModelSettings._S_DLLDefinedScattering.SetParameterValue(1, g)

最后,我们对每个时间步长运行光线追迹,并从对应 PPG 的小尺寸探测器中提取结果,即光线命中总数和吸收功率。为了提高光线追迹速度,光线追迹和数据提取可以使用以下 Python 命令完成:

NSCRayTrace = TheSystem.Tools.OpenNSCRayTrace()

NSCRayTrace.ClearDetectors(0)

NSCRayTrace.SplitNSCRays = True

NSCRayTrace.ScatterNSCRays = True

NSCRayTrace.UsePolarization = True

NSCRayTrace.IgnoreErrors = True

NSCRayTrace.SaveRays = False

NSCRayTrace.Run()

NSCRayTrace.WaitForCompletion()

NSCRayTrace.Close()

hits = -3 # pixel =-3 for total hits

power = 0 # pixel = 0 for total power

Data = 0

hits_bool_return, total_hits = TheNCE.GetDetectorData(detectorNum, hits, Data, 0)

power_bool_return, total_power = TheNCE.GetDetectorData(detectorNum, power, Data, 0)

结果

由于血液的吸收和散射系数比组织的其余部分大得多,因此血液含量越高,背散射光能量越低,检测器的测量功率也越低,反之亦然。根据我们的模拟,在每个时间步长使用 1W 的光源和 105 条分析光线,建模的血含量脉动导致检测器信号发生 10~15% 的变化,如下图所示。

这些结果与文献中的实验观察结果非常吻合。在商用心率传感器中,作为后处理的一部分,通常会对该数据应用简单的信号处理算法。第一步是对噪声信号进行平滑处理,然后计算每分钟超过某个预定义阈值的峰值数来计算心率。

参考文献

1. Maeda, et al. Monte Carlo simulation of spectral reflectance using a multilayered skin tissue model. Optical Review (2010)

2. Sinichkin, et al. In vivo fluorescence spectroscopy of the human skin: experiments and models. Journal of Biomedical Optics (1998)

3. Meglinski, Matcher. Quantitative assessment of skin layers absorption and skin reflectance spectra simulation in the visible and near-infrared spectral regions. Physiological Measurement (2002)

4. Doronin, et al. Assessment of the calibration curve for transmittance pulse-oximetry. Laser Physics (2011)

5. Meglinski. Monte Carlo simulation of reflection spectra of random multilayer media strongly scattering and absorbing light. Quantum Electronics (2001)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值