本项目涵盖四大模块:
- ✔ 单目相机标定(Single Camera Calibration)
- ✔ 多目外参估计(Stereo & Multi-Camera Calibration)
- ✔ 多相机 GUI Mediapipe 手部关键点检测
- ✔ 多相机三角化重建(Multi-view Triangulation)
内容包括:
- ✨ 项目介绍
- ✨ 整体流程图
- ✨ 文件结构说明
- ✨ 四个模块的输入 / 输出 / 使用步骤
- ✨ 所有中间文件说明
- ✨ 注意事项
一个基于 多相机标定 + Mediapipe 关键点检测 + 多视角三角化 的 多相机构建 3D 手势系统。 系统支持:
- 📌 单目相机内参标定
- 📌 多相机外参标定(世界坐标系构建)
- 📌 基于 Mediapipe 的多相机 2D 手势关键点检测 GUI
- 📌 利用多视角三角化获得高精度 3D 手部关键点轨迹
本系统适用于:
- 多相机动作捕捉
- VR/AR 手势跟踪
- 机器人示教、遥操作
- 多视角人体/手部重建
┌───────────────────────────────────────────────┐
│ 1. 单目相机标定(Single Camera Calibration) │
│ 输入:棋盘格图像 │
│ 输出:mtxX.txt + distX.txt │
└───────────────────────────────────────────────┘
↓
┌───────────────────────────────────────────────┐
│ 2. 多目外参标定(Stereo & Multi-Camera) │
│ 输入:多相机同步拍摄的棋盘格图像 │
│ 输出:R1.txt, T1.txt ... R4.txt, T4.txt │
│ —— 构建世界坐标系 │
└───────────────────────────────────────────────┘
↓
┌───────────────────────────────────────────────┐
│ 3. GUI 多相机 Mediapipe 手势检测 │
│ 输入:多相机视频文件 │
│ 输出:cam1.csv ~ cam4.csv (四相机关键点2D) │
│ 每帧 42 × (x,y) 关键点 │
└───────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────┐
│ 4. 三角化重建(Triangulation) │
│ 输入:四相机投影矩阵 + 四路2D关键点 │
│ 输出:3D 关键点轨迹(12 份多视角组合) │
│ cam1-2.csv, cam1-3.csv ... cam1-2-3-4.csv │
└─────────────────────────────────────────────────────┘
project_root/
│
├── 0_input/
│ ├── 1_single_camera/ # 单目标定棋盘格图像
│ ├── 2_multi_camera/ # 多目标定棋盘格图像
│ ├── 3_gui/ # GUI 初始图片
│ └── 6_triangulation/ # GUI 输出的 cam1.csv 等关键点
│
├── 0_output/
│ ├── 1_single_camera/ # mtX.txt, distX.txt
│ ├── 2_multi_camera/ # world_coordinate/RX.txt, TX.txt
│ ├── 3_gui/ # GUI 生成的关键点数据
│ └── 6_0_triangulation/ # 3D 三角化结果
│
├── single_camera_calibration.py # 单目标定代码
├── multi_camera_calibration.py # 多目外参代码
├── 3_GUI.py # 多相机 Mediapipe GUI
└── 4_triangulation.py # 多视角三角化主脚本
single_camera_calibration.py
例如:
D:/Pycharm_project/Experiment_pic/image/single/UP/*.tif
每个相机会保存:
camera_params_UP.txt
mtx1.txt
dist1.txt
...
内容包括:
- 内参矩阵 (Intrinsic Matrix)
- 畸变系数 (Distortion Coefficients)
- 旋转向量 rvecs
- 平移向量 tvecs
python single_camera_calibration.pymulti_camera_calibration.py
- 单目标定输出的 mtx1.txt ~ mtx4.txt
- 多相机同步棋盘格照片:
0_input/2_multi_camera/{date}/cam1/*
0_input/2_multi_camera/{date}/cam2/*
...
0_output/2_multi_camera/{d}/world_coordinate/{i}/
├── R1.txt, T1.txt
├── R2.txt, T2.txt
├── R3.txt, T3.txt
└── R4.txt, T4.txt
其中第 i 组为你挑选的“最佳”世界坐标系标定结果。
3_Gui.py
python 3_Gui.py- 支持 4 路视频输入
- Mediapipe Hands 提取双手 42 × (x,y) 关键点
- 自动畸变矫正
- GUI 实时显示
- 可修正左右手标签错误(shift_cam1 等)
生成:
0_output/3_gui/kpts_cam1.npy
0_output/3_gui/kpts_cam2.npy
...
0_output/3_gui/cam1.csv
0_output/3_gui/cam2.csv
...
每个 CSV 文件内容为:
x1 y1 x2 y2 ... x42 y42 (每帧)
4_triangulation.py
- 单目内参:mtxX.txt, distX.txt
- 多目外参:R1.txt, T1.txt ... R4.txt
- GUI 关键点:cam1.csv ~ cam4.csv
cam1-2.csv
cam1-3.csv
cam1-4.csv
cam2-3.csv
cam2-4.csv
cam3-4.csv
cam1-2-3.csv
cam1-2-4.csv
cam1-3-4.csv
cam2-3-4.csv
cam1-2-3-4.csv ← ⭐ 推荐使用
每个文件格式:
X1 Y1 Z1 X2 Y2 Z2 ... X42 Y42 Z42
遮挡导致的 NaN 会用时间序列线性插值补全:
interpolate_columnwise_3d()
保证轨迹连续。
| 文件 | 内容 | 来源 |
|---|---|---|
mtx1.txt / dist1.txt |
相机内参、畸变系数 | 单目标定 |
R1.txt / T1.txt |
相机在世界坐标系的位姿 | 多目外参标定 |
cam1.csv |
Mediapipe 提取的 2D 关键点 | GUI |
cam1-2.csv |
用相机 1+2 三角化的 3D 点 | Triangulation |
cam1-2-3-4.csv |
4 视角融合最高精度的 3D 点 | Triangulation |
- 所有相机必须进行同步拍摄(同一帧对应同一时刻)
- 棋盘格必须拍摄足够角度(单目 >8 张,多目每组 >8 张)
- GUI 生成的 CSV 必须放入
/0_input/6_triangulation/
如果您在研究或发表论文中使用了本多相机手部跟踪与 3D 重建系统, 我们建议引用以下相关工作:
📄 Journal Articles
[1] Li Z, Kanazuka A, Hojo A, et al. Multi-metric assessment of hand motion with multi-camera for puncture technique training. Measurement, 2025, 248: 116865. https://doi.org/10.1016/j.measurement.2024.116865
[2] Li Z, Kanazuka A, Hojo A, et al. Multi-modal fusion network with multi-head self-attention for injection training evaluation in medical education. Electronics, 2024, 13(19): 3882. https://doi.org/10.3390/electronics13193882
[3] Li Z, Kanazuka A, Hojo A, et al. Automatic Puncture Timing Detection for Multi-Camera Injection Motion Analysis. Applied Sciences, 2023, 13(12): 7120. https://doi.org/10.3390/app13127120
📘 Conference Papers
[4] Li Z, Kanazuka A, Hojo A, et al. Multi-Camera Hand Motion Analysis For Puncture Technique Training. In: Proceedings of the 46th Annual International Conference of the IEEE Engineering in Medicine and Biology Society (EMBC), 2024: 1–5. https://doi.org/10.1109/EMBC53108.2024.10635300
这些论文是本系统的理论基础与医学训练应用场景的来源,如在科研中使用本系统,请引用以上文献以致谢原始研究工作。