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

news2024/11/19 5:48:34

光电容积脉搏波法(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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/669989.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何做好城市内涝监测工作?

城市内涝是由于降雨量过大、排水设施不足等原因导致的城市地区积水现象,城市内涝是严重影响城市运行和居民生活的自然灾害之一。因此,建立有效的城市内涝监测系统,对于提前发现内涝风险、采取及时的防范和应急措施至关重要。那么如何做好城市…

鼎博梯控MF1卡UID卡修复

物业发了4张卡MF1卡,默认无法修改卡号的(当时不知道); 需要交物业费更新日期,手里只有两张卡,另外两个家人拿走了,正好我有修改卡的设备PM6,就准备只升级手里的两张卡,然…

nowcoder--牛客题霸模板速刷101

目录 BM12 单链表的排序 描述 算法思想:归并排序(递归) 解题思路: BM13 判断一个链表是否为回文结构 描述 方法一 思路 具体步骤 方法二 思路 BM14 链表的奇偶重排 描述 BM15 删除有序链表中重复的元素 描述 BM12 单链表的排…

老游戏的新生:探究二十年前的经典游戏为何再次风靡

随着科技的不断进步和游戏产业的飞速发展,我们每年都能玩到各种新的、惊奇的游戏。但是,在这个繁华快速的行业中,却时常有一些老游戏顽强地生存下来,并且在很多人心中再次引起了巨大的追捧和热情。这些经典游戏往往诞生于20年前或…

数据结构--》深入了解栈和队列,让算法更加高效

本文将带你深入了解数据结构栈和队列,这两种基础的线性数据结构在算法中的重要性不言而喻。我们将会详细介绍栈和队列的概念、分类、实现以及应用场景,在理解栈和队列的基础上,还将探讨如何通过栈和队列来高效地解决算法问题。 无论你是初学者…

LTV-6341-ASEMI代理台湾光宝储能专用光耦LTV-6341

编辑:ll LTV-6341-ASEMI代理台湾光宝储能专用光耦LTV-6341 型号:LTV-6341 品牌:台湾光宝 封装:LSOP-6 工作温度:-40C~125C LTV-6341特性: 3.0A峰值输出电流驱动能力 轨对轨输出电压 200 ns最大传播…

D. Survey in Class(贪心 + 分类讨论)

Problem - D - Codeforces Zinaida Viktorovna 的历史课上有 n 名学生。今天的作业包括 m 个主题,但是学生们准备时间很短,所以第 i 个学生只学习了从 li 到 ri (包括)的主题。 在课开始时,每个学生都将手举在 0 处。…

虚幻引擎程序化资源生成框架PCG(Procedural Content Generation Framework) 之一 PCG基础

可以和Houdini说拜拜了 文章目录 0. 概述1. 启动插件2. 工作逻辑2.1 添加PCGVolume2.2 创建PCGGraph2.3 编写PCGGraph逻辑 小结 0. 概述 Unreal Engine 5.2全新推出了程序化资源生成框架即Procedural Content Generation Framework下文简称PCG, 开发者可以通过PCG程…

CSDN 每日一练及周赛介绍

CSDN 每日一练及周赛介绍 每日一练每日一练入口 CSDN 周赛CSDN 周赛入口 相关社区每日一练社区入口CSDN 竞赛专区社区入口 每日一练题库每日一练速查每日一练题目题解速查入口 每日一练题解自行接管输入 根据题号进入题目预习提交新题目CSDN 编程比赛出题规范 吐槽 每日一练 C…

JavaWeb项目乱码问题

设置编码格式有三个地方&#xff0c; 一,用于设置网页发出到服务器上的编码格式为UTF-8&#xff0c;一般该代码会自动创建。 <% page contentType"text/html;charsetUTF-8" language"java" %> 二&#xff0c;服务器响应后发送的文件的编码格式为U…

从BNO055传感器获取IMU数据-1

最近学习惯导相关知识&#xff0c;BNO055是博世的绝对方向传感器&#xff0c;它结合了传感器数据和微处理器来过滤和组合数据&#xff0c;为用户提供空间中的绝对方向。 关于BNO055传感器 BNO055使用三个三轴传感器同时测量切向加速度&#xff08;通过加速度计&#xff09;&a…

【认知提升思维篇】之心灵之力的自我认可模式

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;普本…

深入浅出vite(一)--vite的优点及原理、性能优化

Vite 需要 Node.js 版本 14.18&#xff0c;16。然而&#xff0c;有些模板需要依赖更高的 Node 版本才能正常运行&#xff0c;当你的包管理器发出警告时&#xff0c;请注意升级你的 Node 版本。 背景 webpack支持多种模块化&#xff0c;将不同模块的依赖关系构建成依赖图来进行…

DevExpress WinForms功能区组件,让业务应用创建更轻松!(下)

DevExpress WinForms的Ribbon&#xff08;功能区&#xff09;组件灵感来自于Microsoft Office&#xff0c;并针对WinForms开发人员进行了优化&#xff0c;它可以帮助开发者轻松地模拟当今最流行的商业生产应用程序。 在上文中&#xff08;点击这里回顾>>&#xff09;&am…

Axure教程—中继器菜单

本文将教大家如何用AXURE中的中继器制作菜单&#xff08;不自动折叠其他菜单&#xff09; 一、效果 预览地址&#xff1a;https://8ao8gl.axshare.com 二、功能 1、点击菜单出现相应的子菜单 2、子菜单如果想折叠&#xff0c;点击相应的菜单 三、制作 &#xff08;1&#xff…

Java-@Transactional注解超详细

本文已收录于专栏 《Java》 目录 本文前言概念说明使用说明底层实现注意事项注解扩展总结提升 本文前言 Transactional注解是Spring框架中用于声明式事务管理的关键注解。本文将深入探讨Transactional注解的作用、使用方式和常见属性&#xff0c;并结合代码实例演示其在实际项目…

Adobe PS 2023、Adobe Photoshop 2023下载教程、安装教程

最后附下载地址 Adobe Photoshop 简介&#xff1a; Adobe Photoshop是一款广泛使用的图像处理软件&#xff0c;由Adobe公司开发。它提供了许多强大的工具和功能&#xff0c;可以用于图像编辑、合成、修饰、设计等各个领域。用户可以使用Photoshop来调整图像的亮度、对比度、色…

《水经注地图服务》如何快速发布墨卡托DAT缓存

《水经注地图服务》的快速发布功能是一个能够帮助用户实现快速发布地图服务的功能&#xff0c;并且提供常规情况下大多数用户所需的默认配置&#xff0c;让用户在发布地图时更加便捷。 前面为大家分享了《水经注地图服务》快速发布经纬度DAT缓存以及如何在水经微图中加载&…

项目管理甘特图,怎么做才能更高效?(附甘特图详细制作教程和模板)

如何制作项目管理的甘特图&#xff1f;给大家放几个模板感受下&#xff1a; 01 项目管理Excel套表 02 工程项目流程甘特图 03 项目进度横道图 04 生产制造排程规划图 05 项目日程表 06 项目进度计划表 甘特图制作教程&#xff0c;一共两种方法&#xff0c;大家按需选择&#x…

android注入so或者dex

本程序分为32位和64位&#xff0c;以及so中加载apk&#xff08;或者dex都可以&#xff09;。 代码地址&#xff1a;点击下载 &#xff08;一&#xff09;so注入 32位和64位so注入代码几乎相同&#xff0c;因此仅以32位为例说明so注入的过程。 arm64-v8a架构可以兼容armeabi…