应用笔记|数字化仪在医学SS-OCT中的应用

引言

近些年来,OCT(光学相干断层扫描,Optical Coherence Tomography)作为一种非破坏性3D光学成像技术逐渐在医学眼科设备中流行起来。OCT可提供实时一维深度或二维截面或三维立体的图像,分辨率可达微米(μm)量级,成像深度为毫米(mm)量级。如果以分辨率和成像深度两个方面来讨论,OCT成像技术填补了共焦显微镜和超声技术之间的空白。由于OCT设备是一个相对比较复杂的光电系统,涉及到光学、光电转换、机械、数据采集、信号与图像处理等原理和技术,一般还分为SS-OCT(扫频源OCT,具有更高成像速度、更深穿透深度)和SD-OCT(光谱域OCT,更传统且更低成本),因此本文将结合高速数据采集部分,重点探讨数字化仪的重采样技术在SS-OCT中的应用。

数字化仪的重采样技术

高速数字化仪(Digitizer,以下简称“数字化仪”)是一种专注于高速和高精度信号采集与捕获的仪器设备,其核心功能是通过模数转换器(ADC)将模拟信号转换为数字信号,同时具有专业的信号处理算法与高速数据传输的能力。数字化仪在信号采集与处理中具有以下特点和优势:

高速采样与高精度:数字化仪基于高速ADC技术,能够实现高采样率(如10 GS/s)和高分辨率(如12bit),从而精确捕捉复杂的信号。

重采样技术:数字化仪通过FPGA算法实现重采样,包括插值和降采样,以改变信号的采样率或时间间隔。重采样技术在数字信号处理中广泛应用于信号转换、滤波和优化。

实时处理与灵活性:数字化仪支持实时信号处理,通过FPGA算法在板载硬件上执行重采样和插值,避免了复杂的后续软件处理,同时提高了系统的灵活性和效率。

K时钟重映射:在SS-OCT等应用中,数字化仪通过K时钟重映射技术,利用固定频率的高质量时钟源,校正非线性,确保信号的准确性和稳定性。所谓K时钟,就是随扫频激光器输出光波长与对应K空间(K-space)变化的同步信号,用于触发数字化仪对干涉信号进行等光程差间隔采样,确保光谱数据在K空间上呈现线性分布。而K空间则是源自磁共振成像(MRI)的术语,即存储原始数据的傅里叶变换空间。

1

图1. 可查看原始数据和重采样的软件界面

2

图2. 重采样后对数据进行快速傅里叶变换(FFT)的软件界面

SS-OCT的K时钟问题

SS-OCT技术因其高分辨率和高速成像能力,现如今如要应用于医学领域(眼科,鼻科,血液科等)和工业缺陷检测等领域,表1总结了SS-OCT信号的典型特征及其应用参数。

表1

表1. SS-OCT技术的信号参数特征

在SS-OCT系统中,传统的利用K时钟作为数字化仪外部时钟的方法存在以下缺点:

时钟质量要求高:高性能数字化仪中的模数转换器(ADC)需要极低抖动的高质量时钟源。K时钟无法满足这些要求,导致ADC性能下降。

噪声和尖峰问题:K时钟可能出现噪声或尖峰,有时甚至在扫描的某些部分完全关闭。

占空比影响:ADC内部采样保持电路的设计通常就是需要使用具有恒定占空比的时钟,所以不同的占空比可能导致ADC输出样本不良,甚至偶尔丢失数据。

接口限制:只有使用并行数据接口,如低压差分信号(LVDS)的老一代ADC才能实现直接时钟,但此类ADC仅支持有限的采样率,限制了可实现的A扫描(Axis Scanning,轴向扫描/一维扫描)速率。

频率非均匀性:K时钟是不均匀的,频率会发生变化。此外,?由于数字化仪的采样时钟与扫频光源的K时钟不能实现锁相(PLL同步),导致K空间的零相位点(K=0)与数字化仪的采样时刻存在随机偏移,可能引入光谱域插值误差。?

相比之下,K时钟重映射或重采样方法(如图3的右侧所示)通过以下方式解决了上述问题。

4

图3. 左边是直接K时钟法,右边是推荐的K空间重映射法

实时插值:重采样过程通常包含插值运算,用于在K时钟过零点处(K时钟信号从正电压跨越到负电压,或反之由负电压跨越到正电压的瞬时时刻)实时估计OCT输入信号的幅值。该插值与幅值估计由数字化仪的板载FPGA实时完成。

提高分辨率:通过插值,可以增加重采样点数,从而显著提高分辨率。

避免数据丢失:FPGA算法确保采样保持电路的恒定占空比,避免因占空比变化导致的数据丢失。

支持高速采样:该方法支持现代高速ADC,突破了传统接口的采样率限制,实现了更高的A扫描速率。

频率一致性:通过FPGA实时算法,严格对齐K时钟过零点与数字化仪的采样时刻,消除扫频激光器的频率非均匀性影响。

由此可见,K时钟重映射或重采样方法在SS-OCT系统中展现出显著优势,解决了传统方法的多种问题,成为理想的解决方案。

数字化仪重采样方案的实现

重采样原理为K-时钟信号被ADC采样,然后进行数字信号处理,以找到输入信号穿越过零点的时间,如下图4所示。

5

图4. 重采样原理图

在SS-OCT中的具体采集流程如下图5所示:

6

图5.  SS-OCT实际采集流程示意图

图6所示的数字化仪是具备重采样固件的SP Device ADQ32,它具有2通道、每通道2.5GS/s采样率、2.5GHz模拟带宽的指标特性。将K时钟和SS-OCT信号都连接到数字化仪上的模拟输入通道1和通道2上,除了它们二者之外,A扫描和B扫描(二维横断面扫描)触发器通常也由扫频激光器提供给数字化仪,以实现同步数据采集。

7

图6.  具有重采样算法的ADQ32数字化仪外观示意图

表2

表2. 基于K时钟重采样技术的选型方案规格表

其中,FWOCT固件包含可编程数字滤波器,用于阻断直流和降低噪声,否则会对重映射质量产生负面影响,而且FWOCT还可以帮助预处理数据,以简化后续的GPU处理。 

通过上述表格对比可知,在SS-OCT应用中,数字化仪重采样技术方案可完美符合各项指标和极具挑战性的特殊需求。值得一提的是,上述表格里数字化仪在系统级划分方面提供了极大的灵活性。用户可以决定是在软件中执行所有处理,还是利用板载FPGA来处理。由上文介绍FWOCT的作用可知,使用板载FPGA 的重映射可以简化GPU的后续处理过程,甚至可以为了节省成本而将GPU排除在外。

采集验证

在实验现场,为了验证现场产生的K时钟信号波形,事先用另外一套高端台式示波器来观察信号的包络状况和周期数,如图7所示。

9

图7. 采用某高端数字示波器观测到的K时钟信号

然后将测试环境改用基于ADQ32数字化仪的方案进行相同信号产生条件下的信号采集,K时钟的时域信号波形如图8所示。

10

图8. 采用基于ADQ32数字化仪采集的原始K时钟信号

为了验证重采样技术,将K时钟信号接到通道1,OCT信号接到通道2,触发信号接到TRIG通道上,通过A扫描得到一系列数据,经过FFT算法将多次触发采集的重采样时域数据计算得出频域结果,如图9所示。

11

图9. A扫描重采样之后的时域和频域波形

某国内医疗设备公司自主研发的OCT医疗设备,需要借助ADQ32的重采样技术,实现对血液流动的精确监测和分析。图10/11/12为实际的测试效果图,采集深度可达13mm。

12(1)

图10. 某国产OCT设备中实际测试重采样的时域效果图

13(1)

图11. 某国产OCT设备中实际测试重采样的频域效果图

14

图12. 某国产OCT设备的测试影像效果图

结论

现代数字化仪是基于高速ADC技术、专门用于实现高速数据采集的仪器设备。而且在特定应用领域,高效的FPGA算法处理可展现出独特价值。坤驰科技国内独家代理的ADQ32/ADQ33数字化仪(瑞典产)凭借以下卓越特性,成为K空间重采样的理想选择。

15

综上所述,本文推荐的数字化仪作为灵活的产品系列,可支持各种性能需求,而且 API的可重复利用将简化数字化仪的集成工作,因此基于成功案例的高性价比数字化仪解决方案非常适合国产SS-OCT设备的研发。

了解更多详情,请访问我们的官方网站:www.queentest.cn

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

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

相关文章

Ubuntu 22.04与24.04 LTS版本对比分析及2025年使用建议

Ubuntu 22.04与24.04 LTS版本对比分析及2025年使用建议 在2025年的技术环境下,Ubuntu 22.04和24.04 LTS各有优势,选择哪一个取决于具体应用场景和用户需求。经过对系统内核、桌面环境、软件生态、生命周期支持等多方面因素的综合分析,本报告将…

Linux进程的生命周期:状态定义、转换与特殊场景

前言 在Linux系统中,进程是资源分配和调度的基本单位,而进程状态则是理解进程行为的关键。从运行中的任务(TASK_RUNNING)到僵尸进程(EXIT_ZOMBIE),每个状态都反映了进程在内核调度、资源等待或父…

神经网络简介

大脑的基本计算单位是神经元(neuron)。人类的神经系统中大约有860亿个神经元,它们被大约10^14-10^15个突触(synapses)连接起来。下面图表的左边展示了一个生物学的神经元,右边展示了一个常用的数学模型。每…

多路由协议融合与网络服务配置实验(电视机实验)

多路由协议融合与网络服务配置实验文档 一、实验用途和意义 (一)用途 本实验模拟企业复杂网络环境,整合 OSPF、RIPv2 动态路由协议,结合 DHCP、FTP、Telnet 服务配置及访问控制策略,实现多区域网络互联、服务部署与…

在指定conda 环境里安装 jupyter 和 python kernel的方法

在 Conda 的指定环境中安装 Jupyter 和 Python Kernel 是一个常见操作,以下是详细步骤,确保在指定环境中正确配置 Jupyter 和 Python Kernel: 1. 准备工作 确保已安装 Anaconda 或 Miniconda,Conda 环境管理工具可用。确认已创建或计划使用的 Conda 环境。2. 步骤:安装 J…

【数据结构与算法】数据结构初阶:详解顺序表和链表(四)——单链表(下)

🔥个人主页:艾莉丝努力练剑 ❄专栏传送门:《C语言》、《数据结构与算法》、C语言刷题12天IO强训、LeetCode代码强化刷题 🍉学习方向:C/C方向 ⭐️人生格言:为天地立心,为生民立命,为…

Java+AI精准广告革命:实时推送系统实战指南

⚡ 广告推送的世纪难题 用户反感&#xff1a;72%用户因无关广告卸载APP 转化率低&#xff1a;传统推送转化率<0.5% 资源浪费&#xff1a;40%广告预算被无效曝光消耗 &#x1f9e0; 智能广告系统架构 &#x1f525; 核心模块实现&#xff08;Java 17&#xff09; 1. 实时…

JVM组成及运行流程 - 面试笔记

JVM整体架构 JVM&#xff08;Java Virtual Machine&#xff09;是Java程序运行的核心环境&#xff0c;主要由以下几个部分组成&#xff1a;1. 程序计数器&#xff08;Program Counter&#xff09; 特点&#xff1a;线程私有&#xff0c;每个线程都有独立的程序计数器作用&#…

JavaEE——线程池

目录前言1. 概念2. 线程池相关参数3. Executors的使用总结前言 线程是为了解决进程太重的问题&#xff0c;操作系统中进程的创建和销毁需要较多的系统资源&#xff0c;用了轻量级的线程来代替部分线程&#xff0c;但是如果线程创建和销毁的频率也开始提升到了一定程度&#xf…

3 c++提高——STL常用容器(一)

目录 1 string容器 1.1 string基本概念 1.2 string构造函数 1.3 string赋值操作 1.4 string字符串拼接 1.5 string查找和替换 1.6 string字符串比较 1.7 string字符存取 1.8 string插入和删除 1.9 string子串 2 vector容器 2.1 vector基本概念 2.2 vector构造函数…

手把手教你用【Go】语言调用DeepSeek大模型

1、首先呢&#xff0c;点击 “DeepSeek”” 这个&#xff0c; 可以充1块玩玩。 2、然后获取api-key 3、替换apiKey const (apiURL "https://api.deepseek.com/v1/chat/completions"apiKey "your api key" // 替换为你的实际 API KeymodelName &…

自动化UI测试工具TestComplete的核心功能及应用

对桌面应用稳定性与用户体验的挑战&#xff0c;手动测试效率低、覆盖有限&#xff0c;而普通自动化工具常难以应对复杂控件识别、脚本灵活性和大规模并行测试的需求。 自动化UI测试工具TestComplete凭借卓越的对象识别能力、灵活的测试创建方式以及高效的跨平台并行执行功能&a…

【C/C++】迈出编译第一步——预处理

【C/C】迈出编译第一步——预处理 在C/C编译流程中&#xff0c;预处理&#xff08;Preprocessing&#xff09;是第一个也是至关重要的阶段。它负责对源代码进行初步的文本替换与组织&#xff0c;使得编译器在后续阶段能正确地处理规范化的代码。预处理过程不仅影响编译效率&…

快捷键——VsCode

一键折叠所有的代码块 先按 ctrl K&#xff0c;再ctrl 0 快速注释一行 ctrl /

import 和require的区别

概念 import 是es6 规范&#xff0c;主要应用于浏览器和主流前端框架当中&#xff0c;export 导出&#xff0c; require 是 commonjs 规范&#xff0c;主要应用于nodejs环境中&#xff0c;module.exports 导出编译规则 import 静态导入是编译时解析&#xff0c;动态导入是执…

8、鸿蒙Harmony Next开发:相对布局 (RelativeContainer)

目录 概述 基本概念 设置依赖关系 设置参考边界 设置锚点 设置相对于锚点的对齐位置 子组件位置偏移 多种组件的对齐布局 组件尺寸 多个组件形成链 概述 RelativeContainer是一种采用相对布局的容器&#xff0c;支持容器内部的子元素设置相对位置关系&#xff0c;适…

Linux命令的命令历史

Linux下history命令可以对当前系统中执行过的所有shell命令进行显示。重复执行命令历史中的某个命令&#xff0c;使用&#xff1a;!命令编号&#xff1b;环境变量histsize的值保存历史命令记录的总行数&#xff1b;可用echo查看一下&#xff1b;需要大写&#xff1b;环境变量hi…

【C++小白逆袭】内存管理从崩溃到精通的秘籍

目录【C小白逆袭】内存管理从崩溃到精通的秘籍前言&#xff1a;为什么内存管理让我掉了N根头发&#xff1f;内存四区大揭秘&#xff1a;你的变量都住在哪里&#xff1f;&#x1f3e0;内存就像大学宿舍区 &#x1f3d8;️C语言的内存管理&#xff1a;手动搬砖时代 &#x1f9f1;…

【网络安全】利用 Cookie Sandwich 窃取 HttpOnly Cookie

未经许可,不得转载。 文章目录 引言Cookie 三明治原理解析Apache Tomcat 行为Python 框架行为窃取 HttpOnly 的 PHPSESSID Cookie第一步:识别 XSS 漏洞第二步:发现反射型 Cookie 参数第三步:通过 Cookie 降级实现信息泄露第四步:整合攻击流程修复建议引言 本文将介绍一种…

【工具】什么软件识别重复数字?

网上的数字统计工具虽多&#xff0c;但处理重复数字时总有点不尽如人意。 要么只能按指定格式输入&#xff0c;要么重时得手动一点点筛&#xff0c;遇上数据量多的情况&#xff0c;光是找出重复的数字就得另外花不少功夫。​ 于是我做了个重复数字统计器&#xff0c;不管是零…