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

241 lines
7.2 KiB
Markdown
Raw Normal View History

# 数据采集规则说明
## 概述
本文档详细说明了身体平衡评估系统的数据采集规则,包括从各种传感器设备采集数据、生成图片并存储到指定路径的完整流程。
## 数据库表结构
### 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月*
*维护人员: 系统开发团队*