BodyBalanceEvaluation/document/检测数据和图像采集规则说明.md

241 lines
7.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 数据采集规则说明
## 概述
本文档详细说明了身体平衡评估系统的数据采集规则,包括从各种传感器设备采集数据、生成图片并存储到指定路径的完整流程。
## 数据库表结构
### detection_data 表结构
```sql
CREATE TABLE IF NOT EXISTS detection_data (
id TEXT PRIMARY KEY, -- 记录唯一标识(YYYYMMDDHHMMSS)年月日时分秒
session_id TEXT NOT NULL, -- 检测会话ID外键
head_pose TEXT, -- 头部姿态数据JSON格式
body_pose TEXT, -- 身体姿态数据JSON格式
body_image TEXT, -- 身体视频截图存储路径
foot_data TEXT, -- 足部姿态数据JSON格式
foot_image TEXT, -- 足部监测视频截图存储路径
foot_data_image TEXT, -- 足底压力数据图存储路径
screen_image TEXT, -- 屏幕录制视频截图存储路径
timestamp TIMESTAMP, -- 数据记录时间戳
FOREIGN KEY (session_id) REFERENCES detection_sessions (id) -- 检测会话表外键约束
)
```
## 数据采集方法
### 方法签名
```python
def collect_data(self, session_id: str, patient_id: str, screen_image_base64: str = None) -> Dict[str, Any]
```
### 参数说明
- `session_id`: 检测会话ID用于关联检测会话
- `patient_id`: 患者ID用于构建存储路径
- `screen_image_base64`: 前端界面截图的base64编码数据可选
## 数据采集详细规则
### 1. 头部姿态数据 (head_pose)
**数据源**: IMU传感器设备
**存储格式**: JSON字符串
**数据内容**:
- `roll`: 翻滚角度 (-30° 到 30°)
- `pitch`: 俯仰角度 (-30° 到 30°)
- `yaw`: 偏航角度 (-180° 到 180°)
- `acceleration`: 三轴加速度数据 (x, y, z)
- `gyroscope`: 三轴陀螺仪数据 (x, y, z)
- `timestamp`: 数据采集时间戳
**示例数据**:
```json
{
"roll": 15.2,
"pitch": -8.7,
"yaw": 45.3,
"acceleration": {
"x": 0.5,
"y": -0.2,
"z": 9.8
},
"gyroscope": {
"x": 1.2,
"y": -0.8,
"z": 2.1
},
"timestamp": "2024-01-15T10:30:45.123"
}
```
### 2. 身体姿态数据 (body_pose)
**数据源**: FemtoBolt深度相机
**存储格式**: JSON字符串
**数据内容**:
- `keypoints`: 身体关键点坐标和置信度
- 头部、颈部、肩膀、肘部、手腕
- 脊柱、髋部、膝盖、脚踝
- `balance_score`: 平衡评分 (0.0-1.0)
- `center_of_mass`: 重心坐标
- `timestamp`: 数据采集时间戳
**示例数据**:
```json
{
"keypoints": {
"head": {"x": 320, "y": 100, "confidence": 0.95},
"neck": {"x": 320, "y": 150, "confidence": 0.92},
"left_shoulder": {"x": 280, "y": 180, "confidence": 0.88},
"right_shoulder": {"x": 360, "y": 180, "confidence": 0.90}
},
"balance_score": 0.85,
"center_of_mass": {"x": 320, "y": 350},
"timestamp": "2024-01-15T10:30:45.123"
}
```
### 3. 身体视频截图 (body_image)
**数据源**: FemtoBolt深度相机
**存储路径**: `data/patients/{患者ID}/{sessionID}/{采集时间}/body_image.jpg`
**文件格式**: JPG图片
**图片尺寸**: 640x480像素
### 4. 足部压力数据 (foot_data)
**数据源**: 压力传感器 (pressure_sensor)
**存储格式**: JSON字符串
**数据内容**:
- `left_foot`: 左脚各区域压力值
- `heel`: 脚跟压力
- `arch`: 足弓压力
- `ball`: 前脚掌压力
- `toes`: 脚趾压力
- `total_pressure`: 总压力
- `right_foot`: 右脚各区域压力值
- `balance_ratio`: 左右脚压力平衡比例
- `timestamp`: 数据采集时间戳
**示例数据**:
```json
{
"left_foot": {
"heel": 45.2,
"arch": 12.8,
"ball": 38.5,
"toes": 22.1,
"total_pressure": 118.6
},
"right_foot": {
"heel": 42.8,
"arch": 15.2,
"ball": 35.9,
"toes": 19.7,
"total_pressure": 113.6
},
"balance_ratio": 0.51,
"timestamp": "2024-01-15T10:30:45.123"
}
```
### 5. 足部监测视频截图 (foot_image)
**数据源**: 摄像头 (camera)
**存储路径**: `data/patients/{患者ID}/{sessionID}/{采集时间}/foot_image.jpg`
**文件格式**: JPG图片
**图片尺寸**: 640x480像素
### 6. 足底压力数据图 (foot_data_image)
**数据源**: 基于压力传感器数据生成的可视化图片
**存储路径**: `data/patients/{患者ID}/{sessionID}/{采集时间}/foot_data_image.jpg`
**文件格式**: JPG图片
**图片内容**: 足底压力分布热力图
**图片尺寸**: 400x600像素
### 7. 屏幕录制截图 (screen_image)
**数据源**: 前端界面截图base64编码数据
**存储路径**: `data/patients/{患者ID}/{sessionID}/{采集时间}/screen_image.jpg`
**文件格式**: JPG图片
**数据传输**: 通过参数 `screen_image_base64` 传入
## 目录结构规则
### 数据存储目录结构
```
data/
└── patients/
└── {患者ID}/
└── {sessionID}/
└── {采集时间}/
├── body_image.jpg # 身体视频截图
├── foot_image.jpg # 足部监测视频截图
├── foot_data_image.jpg # 足底压力数据图
└── screen_image.jpg # 屏幕录制截图
```
### 采集时间格式
- 格式: `YYYYMMDD_HHMMSS_mmm`
- 说明: 年月日_时分秒_毫秒
- 示例: `20240115_103045_123`
## 数据采集流程
1. **初始化**: 接收 `session_id`、`patient_id` 和可选的 `screen_image_base64` 参数
2. **生成时间戳**: 创建精确到毫秒的时间戳作为采集标识
3. **创建目录**: 根据患者ID、会话ID和时间戳创建存储目录
4. **设备状态检查**: 检查各设备连接状态
5. **数据采集**: 按顺序采集各设备数据
- IMU传感器 → 头部姿态数据
- FemtoBolt深度相机 → 身体姿态数据和身体截图
- 压力传感器 → 足部压力数据和压力分布图
- 摄像头 → 足部监测截图
- 前端界面 → 屏幕截图
6. **数据存储**: 将采集的数据保存到数据库和文件系统
7. **日志记录**: 记录采集过程和结果
## 错误处理
- 设备连接失败时,对应数据字段设为 `None`
- 文件保存失败时,记录错误日志并继续其他数据采集
- 采集过程中的异常不会中断整个流程
- 所有错误信息都会记录到系统日志中
## 数据质量保证
- 所有时间戳使用统一格式
- 图片文件使用相对路径存储
- JSON数据格式验证
- 文件完整性检查
- 设备状态实时监控
## 性能优化
- 并发数据采集(在设备支持的情况下)
- 图片压缩优化
- 内存使用监控
- 磁盘空间管理
- 数据采集超时控制
## 注意事项
1. 确保所有设备在采集前已正确初始化
2. 定期检查存储空间,避免磁盘满载
3. 采集频率应根据实际需求调整
4. 敏感数据需要加密存储
5. 定期备份重要数据
6. 遵循数据隐私保护规定
---
*本文档版本: 1.0*
*最后更新: 2025年8月*
*维护人员: 系统开发团队*