ICASSP 2023 | Cough Detection Using Millimeter-Wave FMCW Radar

news2025/4/4 17:47:34

原文链接:https://mp.weixin.qq.com/s?__biz=Mzg4MjgxMjgyMg==&mid=2247486540&idx=1&sn=6ebd9f58e9f08a369904f9c48e12d136&chksm=cf51beb5f82637a3c65cf6fa53e8aa136021e35f63a58fdd7154fc486a285ecde8b8521fa499#rd

ICASSP 2023 | Cough Detection Using Millimeter-Wave FMCW Radar

毫米波感知论文阅读 | ICASSP 2023, Cough Detection Using Millimeter-Wave FMCW Radar

picture 0

Abstract

  • 研究内容

    • 提出了一种使用毫米波FMCW雷达检测人体咳嗽信号的信号处理方法

      ✅ 利用FMCW雷达的相位解调技术可以提取咳嗽引起的微小振动

      ✅ 采用身体运动伪像消除(BMAC)技术可以抑制运动伪像 ⇒ \Rightarrow (运动伪像可以轻易掩盖小振动)

      ✅ 即使存在大规模身体运动也可以测量咳嗽信号的振动频率

  • 实验验证

    • 进行了 仿真 来评估所提出方法检测咳嗽信号的概率和准确性

      ✅ 包括分析了FMCW线性调频非线性的影响

    • 提出的技术还通过 60 GHz FMCW雷达进行了验证实验

  • 贡献总结

    • 首次使用FMCW雷达实现了咳嗽信号的检测

      ✅ 提出了身体运动伪像消除(BMAC)技术, 在存在身体运动的情况下检测咳嗽

    • 通过仿真验证结果,分析了FMCW非线性性的影响

    • 60GHz真实实验验证了所提出方法的有效性

1 Introduction

研究的背景和意义

  • 传染病蔓延,对健康监测需求增长
  • 毫米波雷达受关注,能远程监测生命体征
    • 仅监测生命体征不足以判断呼吸状况
    • 咳嗽是判断呼吸系统疾病的关键症状

毫米波咳嗽检测的挑战和问题

  • 声音方法可侵犯隐私,受声学噪声影响

  • 毫米波不受声学噪声影响,但研究很少

    🚩 挑战:咳嗽带来大规模身体运动,运动伪像可压倒小振动

    🚩 已有方法的不足 :仅检测咳嗽行为,不提取特征 + 未充分解决运动伪像问题

本文创新和贡献

  • 检测包含大规模运动的咳嗽
    • 提出身体运动伪像消除(BMAC)技术
  • 通过仿真和实验进行了验证

2 Signal Model and Methodology

  • 咳嗽信号的信号模型
  • 使用FMCW雷达的检测方法
    • 运动伪像消除技术
  • 数值仿真

2.1. FMCW radar signal model

  • FMCW雷达的信号模型

    • 在相干处理时间内发射M次脉冲
    • 每个脉冲为FMCW线性调频信号
  • 发射信号

    • s T X ( t , m ) = 1 N c p ( t − m T p ) s_{TX}(t,m) = \frac{1}{\sqrt{N_c}}p(t-mT_p) sTX(t,m)=Nc 1p(tmTp)
    • p ( t ) = e j ( 2 π f 0 t + π γ t 2 ) p(t)=e^{j(2\pi f_0t+\pi\gamma t^2)} p(t)=ej(2πf0t+πγt2)
    • N c N_c Nc - 脉冲数, T p T_p Tp - 脉冲重复间隔
    • γ \gamma γ - 频率斜率, f 0 f_0 f0 - 载波频率
  • 接收信号

    • s R X ( t , m ) = α s T X ( t − 2 ( d 0 + x [ m ] ) c , m ) + w c ( t , m ) s_{RX}(t,m) = \alpha s_{TX}(t-\frac{2(d_0+x[m])}{c},m) + w_c(t,m) sRX(t,m)=αsTX(tc2(d0+x[m]),m)+wc(t,m)
    • α \alpha α - 衰减系数, d 0 d_0 d0 - 初始距离
    • x [ m ] x[m] x[m] - 目标运动, w c w_c wc - 噪声
  • 离散后基带信号

    • s b [ k , m ] = α e j 4 π c ( d 0 + x [ m ] ) ( f 0 + γ k ) + w c [ k , m ] s_b[k,m] = \alpha e^{j\frac{4\pi}{c}(d_0+x[m])(f_0+\gamma k)} + w_c[k,m] sb[k,m]=αejc4π(d0+x[m])(f0+γk)+wc[k,m]
    • 用于后续检测分析
  • 总结:建立了FMCW雷达的精确信号模型

    • 包含线性调频发射信号
    • 考虑了目标运动、距离、噪声等参数

2.2. Cough vibration and body motion artifacts

  • 分析:目标运动的两种组成成分

    • 咳嗽振动 v [ m ] v[m] v[m]
    • 身体运动伪像 y [ m ] y[m] y[m]
  • 咳嗽振动:

    • 使用谐波模型表示

      v [ m ] = ∑ l = 1 L A v , l sin ⁡ ( 2 π l f v m ) v[m] = \sum\limits_{l=1}^{L}A_{v,l}\sin(2\pi l f_vm) v[m]=l=1LAv,lsin(2πlfvm)

      L L L - 谐波数, A v , l A_{v,l} Av,l - 振幅, f v f_v fv - 基频

    • 咳嗽振动特点

      🚩 幅值较小(小于0.5mm)

      🚩 频率范围80-240Hz

  • 身体运动伪像: (特点)

    • 幅值较大(大于0.1 m)
    • 频谱从直流分量开始

picture 2

  • 两者的区别

    • 幅值大小不同
    • 频率范围不同
  • 分析得到问题的关键

    • 运动伪像会覆盖咳嗽振动
    • 需要对两者进行区分

2.3. Signal processing method

  • 目标 :

    • 从接收信号中提取咳嗽振动 v [ m ] v[m] v[m]
  • 挑战 :存在身体运动伪像

  • 步骤1:估计身体运动的相位

    • ϕ [ k , m ] = ∠ s b [ k , m ] = tan ⁡ − 1 ( I m ( s b [ k , m ] ) R e ( s b [ k , m ] ) ) \phi[k,m] = \angle s_b[k,m] = \tan^{-1}\left(\frac{Im(s_b[k,m])}{Re(s_b[k,m])}\right) ϕ[k,m]=sb[k,m]=tan1(Re(sb[k,m])Im(sb[k,m]))
  • 步骤2:相位补偿消除身体运动

    • ϕ ^ [ k , m ] = moving average of  ϕ [ k , m ] \hat{\phi}[k,m] = \text{moving average of } \phi[k,m] ϕ^[k,m]=moving average of ϕ[k,m]
    • h c = e − j ϕ ^ [ k , m ] h_c = e^{-j\hat{\phi}[k,m]} hc=ejϕ^[k,m]
    • s ^ b = s b ⊙ h c \hat{s}_b = s_b \odot h_c s^b=sbhc
  • 步骤3:FFT距离压缩

    • s c [ m ] = F F T ( s ^ b [ ∗ , m ] ) s_c[m] = FFT(\hat{s}_b[*,m]) sc[m]=FFT(s^b[,m])
  • 步骤4:FFT提取咳嗽频率

    • S c [ l ] = F F T ( s c [ m ] ) S_c[l] = FFT(s_c[m]) Sc[l]=FFT(sc[m])
    • f ^ v = arg ⁡ max ⁡ ∣ S c [ l ] ∣ \hat{f}_v = \arg\max |S_c[l]| f^v=argmaxSc[l]

总结:

  • 关键技术 :

    • 相位信息提取
    • 相位补偿
    • FFT范围压缩
  • 处理流程 :

    • 估计相位->补偿消除运动->FFT范围压缩->FFT提取频率

2.4. Effect of FMCW chirp non-linearity

  • FMCW线性调频信号可能存在非线性

  • 非线性成分 :

    • 周期性偏差: Δ f p = 2 π A p sin ⁡ ( 2 π f p t ) \Delta f_p = 2\pi A_p\sin(2\pi f_pt) Δfp=2πApsin(2πfpt)
    • 随机偏差: w f [ k ] ∼ N ( 0 , σ f 2 ) w_f[k] \sim \mathcal{N}(0,\sigma_f^2) wf[k]N(0,σf2)
  • 线性调频带非线性 :

    • f c h i r p [ k ] = γ k + f 0 + Δ f p + w f [ k ] f_{chirp}[k] = \gamma k + f_0 + \Delta f_p + w_f[k] fchirp[k]=γk+f0+Δfp+wf[k]
  • 周期性偏差影响:

    • 可通过相位补偿消除
    • 不影响最终咳嗽检测
  • 随机偏差影响:

    • 导致相位估计错误
    • 影响运动消除效果
    • 降低咳嗽检测性能

3 Numerical Simulations

  • 进行了数值模拟来评估和验证所提出的雷达系统检测咳嗽信号
    • 使用了具有2 GHz带宽的FMCW线性调频脉冲
    • 脉冲重复间隔(PRI)为2.5 kHz,相干积累间隔(CPI)为2秒
    • 使用了0.25米位移的随机身体运动
    • 为噪声模拟,进行了1000个样本的蒙特卡罗模拟

进行了3项仿真:

  • 1 评估了根据振动幅度的检测概率随信噪比的变化

    • 检测频率峰值的判据设定为5 dB

    • 在没有身体运动的情况下,所需的SNR随振动检测线性减小:

      S N R r e q ∝ A v SNR_{req} \propto A_{v} SNRreqAv

    picture 0

    • 在存在身体运动的情况下,需要大于约-13 dB的较大SNR来检测20 um的振动幅度

    picture 1

    • 当振动幅度减小时,需要更大的信号功率来增加检测概率
    • 作用:从模拟结果可以设计雷达系统规格及其覆盖范围以进行咳嗽检测
  • 2 评估了检测10 um振动的振动频率的均方根误差(RMSE)随SNR的变化

    • 如下图,没有使用BMAC时的RMSE远大于使用BMAC时的RMSE

    picture 2

    • 当SNR大于10 dB时,所提出的BMAC技术可以提供与没有身体运动情况下相同的检测精度
    • 这里,周期性振动的Cramer-Rao下界简单计算为 C R L B ≈ 6 σ 2 π 2 E A v , 1 2 CRLB \approx \frac{6\sigma^2}{\pi^2E{A_{v,1}}^2} CRLBπ2EAv,126σ2
  • 3 分析了FMCW线性调频脉冲非线性的影响

    • 周期性偏差不会影响检测精度,因为BMAC算法具有非线性缓解作用
    • 随机频率偏差会影响身体运动抑制的性能, 如下图

    picture 3

    • σ f \sigma_f σf=3 MHz时,很难估计振动,因为所提出的BMAC算法未能准确提取身体运动

4 Experiment Result

  • 使用60 GHz FMCW雷达进行了咳嗽检测实验

    • 人体目标位于0.8米处

    • 受测时自愿咳嗽

    • 雷达参数:

      picture 4

  • 为了比较检测到的咳嗽频率峰值,对处理后的信号执行短时傅里叶变换(STFT)

    picture 6

    • 由于CPI内咳嗽的基本频率不是常数 ⇒ \Rightarrow 用RMSE和RMSPE评估精度

    • 测量结果:

      picture 5

    • 使用所提出的雷达系统检测咳嗽信号的RMSE降低到9Hz,相对应频率误差4.4%

    • 不使用BMAC算法时检测咳嗽频率的RMSE为76Hz,对应误差33%

  • 实验结论:方法有效

5 Conclusion

  • This paper:
    • a signal model
    • a processing procedure
    • numerical simulations
    • experimental validation

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

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

相关文章

【Golang 接口自动化01】使用标准库net/http发送Get请求

目录 发送Get请求 响应信息 拓展 资料获取方法 发送Get请求 使用Golang发送get请求很容易,我们还是使用http://httpbin.org作为服务端来进行演示。 package mainimport ("bytes""fmt""log""net/http""net/url&qu…

vue基础-key的作用

vue基础-key的作用 1、无key2、有key,值为索引3、有key,值为id 1、无key 最大限度尝试就地修改/复用相同类型元素 2、有key,值为索引 有key属性,基于key来比较新旧虚拟DOM,移除key不存在的元素 3、有key&#xf…

学习笔记——压力测试案例,监控平台

测试案例 # 最简单的部署方式直接单机启动 nohup java -jar lesson-one-0.0.1-SNAPSHOT.jar > ./server.log 2>&1 &然后配置执行计划: 新建一个执行计划 配置请求路径 配置断言配置响应持续时间断言 然后配置一些查看结果的统计报表或者图形 然后我…

一篇文章彻底搞懂TCP协议!

文章目录 1. TCP协议的引入2. TCP协议的特点3. TCP协议格式3.1 序号与确认序号3.2 发送缓冲区与接收缓冲区3.3 窗口大小3.4 六个标志位 4. 确认应答机制5. 超时重传机制6. 连接管理机制6.1 三次握手6.2 四次挥手 7. 流量控制8. 滑动窗口9. 拥塞控制10. 延迟应答11. 捎带应答12.…

FFmpeg5.0源码阅读——av_interleaved_write_frame

摘要:本文主要详细描述FFmpeg中封装时写packet到媒体文件的函数av_interleaved_write_frame的实现。   关键字:av_interleaved_write_frame   读者须知:读者需要熟悉ffmpeg的基本使用。 1 基本调用流程 av_interleaved_write_frame的基本…

python文件处理方式

python文件处理方式 file open(D:\pythonText.txt, r, encodingUTF-8) print(file) # <_io.TextIOWrapper nameD:\\pythonText.txt moder encodingUTF-8> print(type(file)) # <class _io.TextIOWrapper>读取文件 file open(D:\pythonText.txt, r, encodingU…

【C++】 虚析构和纯虚析构,Visual Studio开发人员工具查看类内部结构cl /d1 reportSingleClassLayout

author&#xff1a;&Carlton tag&#xff1a;C topic&#xff1a;【C】 虚析构和纯虚析构&#xff0c;Visual Studio开发人员工具查看类内部结构cl /d1 reportSingleClassLayout website&#xff1a;黑马程序员C date&#xff1a;&#xff1a;2023年7月29日 目录 虚析构…

No106.精选前端面试题,享受每天的挑战和学习

今日份摘抄&#xff1a;本事不在自身都是虚的 文章目录 MySQL的ACID特性分别是怎么实现的&#xff1f;1. 原子性 (Atomicity)2. 一致性 (Consistency)3. 隔离性 (Isolation)4. 持久性 (Durability) OSI七层模型1. 物理层&#xff08;Physical Layer&#xff09;2. 数据链路层&a…

Java-简单认识类和对象

一、初步认识面向对象 1.1 什么是面向对象 Java是一门纯面向对象的语言(Object Oriented Program&#xff0c;简称OOP)&#xff0c;在面向对象的世界里&#xff0c;一切皆为对象。面向对象是解决问题的一种思想&#xff0c;主要依靠对象之间的交互完成一件事情。用面向对象的思…

map,set的封装(基于改造红黑树)

目录 引言 1.迭代器 2.map的[]重载 3.KeyOfValue模板参数 4.整体代码展示 //改造后的红黑树代码 #include <iostream> using namespace std;enum Colour {RED 0,BLACK, };//为了实现map与set封装使用同一个模板红黑树&#xff0c;前者的value是pair&#xff0c;后者…

数学分析:外微分

先回顾下微分的概念&#xff0c;首先我们找到一个道路x&#xff0c;它是关于时间t的函数&#xff0c;然后我们可以得到一个速度&#xff0c;也就是切向量&#xff0c;所有道路的切向量组成了切空间。如果从泛函角度来理解&#xff0c;它应该是一个求偏导的基。是一个向量。而微…

Python语法(二、内置函数)

数学计算库 Python ​math ​模块提供了许多对浮点数的数学运算函数。 Python ​cmath ​模块包含了一些用于复数运算的函数。 import math 内置函数 关键字 自定义函数 Python函数的定义。定义函数需要用def 关键字实现&#xff0c;具体的语法格式如下&#xff1a; def 函…

求二维离散点集的凸包点

1 算法思路 这类求解最外围的点集问题,我们称之为凸包问题,光光是⽤⾁眼去观察的话,这种问题我们很快就能得出答案,并且能马上说出哪⼏个点 是解,但是如果让你敲代码,去解决这类的问题,可能很多⼈会不知道如何去下⼿。 在讲解凸包这类问题的解法前,我们⾸先要先讲下向…

#P1000. [NOIP2008普及组] 立体图

题目描述 小渊是个聪明的孩子&#xff0c;他经常会给周围的小朋友们讲些自己认为有趣的内容。最近&#xff0c;他准备给小朋友们讲解立体图&#xff0c;请你帮他画出立体图。 小渊有一块面积为 m \times nmn 的矩形区域&#xff0c;上面有 m \times nmn 个边长为 11 的格子&a…

Linux环境安装MySQL(详细教程)

1、下载MySQL MySQL官网&#xff1a;MySQLhttps://www.mysql.com/ 下载社区版&#xff08;免费&#xff0c;但不提供技术支持&#xff09; 简单说明一下rpm和tar包的区别&#xff1a; tar 只是一种压缩文件格式&#xff0c;所以&#xff0c;它只是把文件压缩打包 rpm&#xf…

HTML+CSS前端 简易用户登录界面

Day1 刚学了一些html和css的简单语法&#xff0c;尝试写一个非常简易的静态用户登录界面。 login_simple.html <!DOCTYPE html> <html lang"en"><head><meta name"viewport" content"widthdevice-width,initial-scale1.0"…

C++复刻:[流光按钮]+[悬浮波纹按钮]

目录 参考效果实现main.cppdialog.hdialog.cppflowingRayButton.h 流动光线按钮flowingRayButton.cpp 流动光线按钮hoveringRippleButton.h 悬浮波纹按钮hoveringRippleButton.cpp 悬浮波纹按钮模糊知识点 源码 参考 GitHub地址 B站主页 效果 实现 main.cpp #include "…

windows下配置vue开发环境

安装nodejs&#xff0c;配置npm 1.下载安装包&#xff1a;下载地址&#xff1a;https://nodejs.org/en/download 2.安装node&#xff1a;下载完成后进行安装&#xff0c;记住安装的文件夹。本人安装路径为 D:\Program Files\nodejs 3.配置环境变量&#xff1a; ①安装完成后…

高斯滤波和高通滤波

图像在频域里面&#xff0c;频率低的地方说明它是比较平滑的&#xff0c;因为平滑的地方灰度值变化比较小&#xff0c;而频率高的地方通常是边缘或者噪声&#xff0c;因为这些地方往往是灰度值突变的 所谓高通滤波就是保留频率比较高的部分&#xff0c;即突出边缘&#xff1b;…

Node.js介绍;浏览器和Node.j架构区别;Node的安装与管理;JS代码执行方式;Node的输入与输出;全局对象;

目录 1_Node.js介绍1.1_概念1.2_浏览器和Node.j架构区别1.3_Node.js应用场景 2_Node的安装与管理2.1_安装2.2_Node的版本工具2.3_版本管理工具&#xff1a;n 3_JavaScript代码执行4_Node的输入与输出4.1_REPL4.2_Node程序传递参数4.3_Node的输出 5_全局对象5.1_常见的全局对象5…