(旋转目标单光子 LiDAR/ToF 仿真器)
关键词: Single-photon Imaging, SPAD, LiDAR, ToF, Drone Propeller, Synthetic Data, Computer Vision, Rotating Object, Motion Artifacts.
这是一个基于 Web 的合成数据生成器,专为研究高速旋转目标(如无人机螺旋桨)的**单光子飞行时间(Time-of-Flight, ToF)**成像而设计。
本项目旨在解决动态目标在低光子通量下的成像难题(如运动伪影、多普勒效应模糊)。通过基于物理的光子级仿真,它能生成带有泊松噪声(Poisson Noise)和环境背景噪声的逼真 ToF 数据,适用于计算机视觉算法训练、深度感知研究以及运动伪影校正算法的开发。
该应用完全运行在浏览器中,利用 Angular 构建现代化 UI,使用 Three.js 进行 3D 场景建模,并通过 Web Workers 实现高性能的并行物理计算。
- 光子统计模型: 模拟单光子雪崩二极管 (SPAD) 的探测过程,包含信号光子的泊松分布到达时间和背景噪声。
-
动态运动模拟: 精确计算螺旋桨在每个时间切片的旋转角度 (
$\omega$ ) 和深度变化 ($Z$ )。 - 噪声控制: 支持自定义环境光噪声比(Noise Ratio)和平均信号光子数。
-
探测器规格 (Detector Specifications):
- 帧持续时间 (Integration Time): 20 µs。
- 时间分辨率 (TDC Resolution): 256 ps (0.256 ns)。
- 可视化配置: 集成 Three.js 视图,直观展示探测器与旋转目标的相对位置。
- 拖拽交互: 可直接在 3D 场景中拖动螺旋桨平台来调整探测距离 (Distance)。
- 运动参数: 转速 (RPM 100-10000)。
- 传感器参数: 分辨率 (64x64, 128x128, 256x256)、视场角 (FOV)。
- 采集参数: 帧数 (nFrames)、单帧平均光子数、短时积分帧数。
- 多视图对比: 同时展示累积光子图 (Accumulated)、真值信号 (Ground Truth) 和短时积分图 (Short-Term Integration)。
- 数据导出: 支持一键下载生成的原始二进制数据 (
.bin),方便导入 MATLAB 或 Python 进行后续处理。
- Frontend Framework: Angular 18+ (Standalone Components, Signals)
- 3D Graphics: Three.js
- Styling: Tailwind CSS
- Computation: Web Workers (用于后台运行密集的蒙特卡洛仿真循环)
- Build Tool: Angular CLI / Vite
- Node.js (建议 v18 或更高版本)
- npm
-
克隆仓库
git clone [https://github.com/hansamar/single-photon-rotating-object-simulator.git](https://github.com/hansamar/single-photon-rotating-object-simulator.git) cd single-photon-rotating-object-simulator -
安装依赖
npm install
-
启动开发服务器
npm run dev
-
访问应用 打开浏览器访问
http://localhost:3000(或控制台显示的端口)。
-
上传与提取 (Upload & Verify):
- 上传一张叶片的图片(推荐浅色背景深色叶片的图片)。
- 系统会自动二值化提取叶片的几何形状。
-
设置参数 (Set Parameters):
- 调整 RPM (转速) 和 Distance (距离)。
- 设置 Sensor Resolution (探测器分辨率) 和 Noise Ratio (信噪比)。
- 注意:过高的分辨率和帧数可能会消耗大量内存。
-
3D 预览 (3D Scene):
- 在 3D 视图中观察实验设置。
- 你可以按住鼠标左键旋转视角,右键平移,或直接拖拽叶片模型调整距离。
-
生成数据 (Generate):
- 点击 "Generate Data" 按钮。仿真将在后台 Web Worker 中运行,不会卡顿界面。
-
结果分析与下载:
- 仿真完成后,查看可视化结果。
- 点击 "Download .bin File" 保存原始数据。