OpenCV+MediaPipe+Python集成学习中风后肢体运动功能康复三维数据与FMA量表智能评估系统|附代码数据

全文链接:https://tecdat.cn/?p=44034
原文出处:拓端数据部落公众号
分析师:Xuanlu Dai

封面

在中风康复领域,肢体运动功能评估是制定康复方案、判断康复效果的核心环节。传统评估依赖康复师人工观察,基于Fugl-Meyer(FMA)量表给出主观评分,存在效率低、误差大、难以量化运动细节等问题。随着计算机视觉与数据分析技术的发展,通过视频提取肢体运动数据并自动化评估成为解决这一痛点的关键方向。

一、引言

本文方案改编自分析师团队过往完成的中风康复机构咨询项目——当时为某康复中心设计了“视频-数据-评分”一体化分析系统,将人工评估时间从平均30分钟缩短至5分钟内,评分一致性误差降低40%。方案核心是利用OpenCV处理视频流,通过MediaPipe提取人体关键点三维坐标,结合Pandas、NumPy进行数据清洗,再基于FMA量表构建上下肢运动功能评估模型,最终通过Matplotlib实现可视化对比。
本文内容源自过往项目技术沉淀与已通过实际业务校验,该项目完整代码与数据已分享至交流社群。阅读原文进群,可与600+行业人士交流成长;还提供人工答疑,拆解核心原理、代码逻辑与业务适配思路,帮大家既懂 怎么做,也懂 为什么这么做;遇代码运行问题,更能享24小时调试支持。
系统整体流程遵循“视频输入→三维坐标提取→数据预处理→上下肢功能评估→可视化输出”的逻辑,下文将分模块拆解实现过程,同时提供修改后的核心代码与实际应用效果,确保学生能理解并复现关键步骤。

三、中风患者肢体运动视频三维坐标提取

3.1 技术原理与工具选择

本模块核心是将中风患者肢体运动视频转化为可量化的三维坐标数据。选用MediaPipe Pose作为人体关键点检测工具,因其支持实时提取33个身体关键点(含上肢肩、肘、腕,下肢髋、膝、踝等核心关节)的三维坐标,且在普通设备上即可达到15-30fps的处理速度,适配康复场景的视频分析需求。
工具组合说明:

  • OpenCV:负责读取视频流、转换图像色彩空间(BGR→RGB,适配MediaPipe输入要求);
  • MediaPipe Pose:检测并输出关键点的X/Y/Z坐标(X为水平方向,Y为垂直方向,Z为深度方向)与可见度(Visibility,判断关键点检测可靠性);
  • Pandas:将每帧数据整理为DataFrame,便于后续清洗与存储;
  • NumPy:处理缺失值填充等数据预处理操作。

3.2 核心代码实现(修改后版本)

代码已修改变量名(如原video_path改为video_file_path)、翻译英文注释,并省略部分重复数据打印代码,保留核心逻辑:

 
  1.  
    import cv2
  2.  
    import mediapipe as mp
  3.  
    import pandas as pd
  4.  
    import numpy as np
  5.  
    # 初始化MediaPipe Pose模型
  6.  
    mp_pose = mp.solutions.pose
  7.  
    pose_model = mp_pose.Pose(
  8.  
    static_image_mode=False, # 视频流模式(非静态图片)
  9.  
    model_complexity=2, # 启用最高精度模型(适合精细关节检测)
  10.  
    smooth_landmarks=True, # 启用关键点平滑(减少视频帧间抖动)
  11.  
    min_detection_confidence=0.7, # 检测置信度阈值(低于则不输出结果)
  12.  
    min_tracking_confidence=0.5 # 跟踪置信度阈值(低于则重新检测)
  13.  
    )
  14.  
    # 视频文件路径(需根据实际场景修改)
  15.  
    video_file_path = r"F:\hangyi_finalproject\archive-WLU\Blurred\Arm Raise Correct\11.mp4"
  16.  
    # 获取所有Pose关键点名称(如LEFT_WRIST、RIGHT_HIP等)
  17.  
    POSE_LANDMARK_NAMES = [landmark.name for landmark in mp_pose.PoseLandmark]
  18.  
    def extract_3d_coord(video_file_path): ......
 
 

3.3 实际应用效果

本模块处理中风患者“手臂上举”动作视频后,可输出每帧的关节三维坐标数据。以下为数据样例(前20帧手腕坐标)与三维轨迹可视化效果:



从轨迹图可直观观察到:中风患者患侧手腕(如左侧)的运动轨迹更不稳定,Z轴方向(深度)的变化幅度小于健康侧,这为后续功能评估提供了量化依据。

相关视频

视频讲解:多层感知机MLP与卷积神经网络CNN在服装图像识别中的应用

四、基于FMA量表的下肢运动功能评估

4.1 评估逻辑与核心指标

下肢评估基于Fugl-Meyer下肢量表(FMA-LE,总分34分),重点关注“反射活动”“自主运动”“协调性/步态”三大维度。本模块通过以下步骤实现自动化评分:

  1. 数据预处理:过滤低可见度(Visibility<0.5)的关节数据,填充缺失值(用前后帧数据插值);
  2. 关键参数计算:关节活动度(ROM,如髋、膝、踝关节的运动角度范围)、步态规律性(步周期稳定性)、步长对称性(左右脚迈步距离差异);
  3. 评分映射:将计算出的参数与FMA量表标准对比,输出各维度得分与总分,并判断运动障碍等级(轻度/中度/重度/极重度)。

4.2 核心代码实现(修改后版本)

 
  1.  
     
  2.  
    """基于FMA标准的下肢运动功能评估器"""
  3.  
    def __init__(self, affected_side: str = 'LEFT'):
  4.  
    """
  5.  
    初始化评估器
  6.  
    Parameters:
  7.  
    affected_side: 患者患侧肢体('LEFT' 或 'RIGHT')
  8.  
    """
  9.  
    self.affected_side = affected_side.upper()
  10.  
    self.healthy_side = 'RIGHT' if self.affected_side == 'LEFT' else 'LEFT'
  11.  
    ......
 
 

4.3 实际应用效果

以下为下肢评估的报告输出与可视化对比结果。从结果可见:中风患者的FMA-LE总分(12分)显著低于健康人(32分),膝关节活动度(45°)仅为健康人的50%,步态规律性(0.35)也更差,符合临床中中风患者下肢运动功能受限的特征。


相关文章

相关文章

Python TensorFlow OpenCV的卷积神经网络CNN人脸识别系统构建与应用实践

原文链接:https://tecdat.cn/?p=42684


五、基于FMA量表的上肢运动功能评估

5.1 与下肢评估的差异与适配

上肢运动功能评估基于Fugl-Meyer上肢量表(FMA-UE,总分66分),核心差异在于:

  • 评估关节不同:重点关注肩、肘、腕、手指、拇指(下肢为髋、膝、踝);
  • 运动学参数不同:除关节活动度外,增加“手部协调性”“运动速度”等指标(如手腕运动速度反映上肢控制能力);
  • 评分权重不同:肩关节占比最高(30%),其次为肘关节(25%)、腕关节(20%)、手指(15%)、拇指(10%)。

5.2 核心代码与应用效果

核心代码逻辑与下肢类似,已修改类名为UpperLimbFMAAnalyzer,调整关节参数与评分映射规则,此处省略重复代码,仅展示关键效果:

六、系统优势与服务支持

6.1 技术优势与创新点

  1. 自动化与量化:替代人工评估,将中风患者肢体运动数据转化为三维坐标与客观评分,减少主观误差;
  2. 上下肢区分评估:针对上下肢运动功能的不同特征设计专属模型,评估更精准;
  3. 低门槛适配:基于Python开源工具链,普通电脑即可运行,无需专业硬件,降低康复机构使用成本。

封面

关于分析师

在此对 Xuanlu Dai 对本文所作的贡献表示诚挚感谢,他本科就读于智能医学工程专业,专业基础扎实且实践能力突出,曾参与多个比赛项目并多次斩获省级奖项。

Xuanlu Dai 技术能力全面,熟悉 Python、C 语言、Java 等编程语言,能熟练运用 Pycharm、Dev-C++、IDEA 等编译器软件开展开发工作;在技术应用层面,擅长机器学习、数据建模与分析、数据采集及数据可视化,可高效完成医学相关数据的处理与分析任务,为本文中风患者肢体运动数据的提取、评估模型构建提供了关键技术支持。

posted @ 2025-10-10 17:52  拓端tecdat  阅读(11)  评论(0)    收藏  举报