Skip to content

Earl000333/MultiCameraSystem

Repository files navigation

本项目涵盖四大模块:

  • ✔ 单目相机标定(Single Camera Calibration)
  • ✔ 多目外参估计(Stereo & Multi-Camera Calibration)
  • ✔ 多相机 GUI Mediapipe 手部关键点检测
  • ✔ 多相机三角化重建(Multi-view Triangulation)

内容包括:

  • ✨ 项目介绍
  • ✨ 整体流程图
  • ✨ 文件结构说明
  • ✨ 四个模块的输入 / 输出 / 使用步骤
  • ✨ 所有中间文件说明
  • ✨ 注意事项

📦 Multi-Camera Hand Tracking & 3D Reconstruction System

一个基于 多相机标定 + 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             # 多视角三角化主脚本

🥇 1. 单目相机标定(Single Camera Calibration)

📌 代码文件

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.py

🥈 2. 多目外参标定(Stereo & Multi-Camera Calibration)

📌 代码文件

multi_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 多相机 Mediapipe 手部关键点检测

📌 代码文件

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)

📌 代码文件

4_triangulation.py

📌 输入

  • 单目内参:mtxX.txt, distX.txt
  • 多目外参:R1.txt, T1.txt ... R4.txt
  • GUI 关键点:cam1.csv ~ cam4.csv

📌 输出(共 12 个 3D 点集)

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/

📚 Recommended Citations / Related Publications

如果您在研究或发表论文中使用了本多相机手部跟踪与 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

这些论文是本系统的理论基础与医学训练应用场景的来源,如在科研中使用本系统,请引用以上文献以致谢原始研究工作。


About

Multi-Camera Hand Tracking & 3D Reconstruction System

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages