Fits small cameras

This commit is contained in:
Ankle committed 2026-07-29 16:25:16 +08:00
1 parent a773166c91
commit 98ed2576c6
7 files changed
+526 -96

No files matched your search

+40 -10
View File
@@ -9,6 +9,7 @@
scan-calibrator/
├── README.md # 交互式向导主文档
├── 手动配置README.md # 完整手动流程和参数原理
├── install.sh # 首次部署时安装依赖并做完整环境自检
├── interactive.sh # 交互式向导入口
├── interactive_calibrator.py
├── calibrate.sh # 手动配置入口
@@ -24,11 +25,22 @@ scan-calibrator/
## 启动
首次把本目录复制到一台RK3588后,先执行一次安装与自检:
```bash
cd /home/zhangw/scan-calibrator
./install.sh
./interactive.sh
```
`install.sh`可重复运行,不会修改scan参数。它会在缺少时通过`apt-get`安装宿主机
`python3`和`imagemagick`,然后检查Docker、smart-cam容器、scan HTTP服务、数据目录写权限、
容器内C++/OpenCV编译环境以及拼图命令。非root账号安装缺失软件时需要具有`sudo`权限。
如果设备上曾出现“未找到ImageMagick identify”,就是宿主机缺少`imagemagick`;
运行`install.sh`会自动补齐。ImageMagick安装在RK3588宿主机,而不是smart-cam容器内,
因为验证拼图程序运行在宿主机。
只需要输入:
- `1`:确认、执行或选择野外部署;
@@ -133,7 +145,8 @@ cd /home/zhangw/scan-calibrator
- 回复`1`:使用`hanging`,表示球机在野外正常倒挂;
- 回复`2`:使用`desktop`,表示办公室桌面正放且摄像头后台旋转了180度。
它决定角点的pan方向和生成配置时的扫描顺序,等价于最后执行:
它决定验证拼图时的画面方向。摄像头的pan数值递增/递减方向不再由安装姿态写死,
而是在第④步根据实拍画面位移自动识别。生成配置仍等价于最后执行:
```bash
./calibrate.sh generate --mount hanging
@@ -173,11 +186,15 @@ smart-cam的HTTP接口读取PTZ并记录,等价于:
2. 沿pan方向尝试若干候选角度,每次抓图后回到起点;
3. 用ORB特征、RANSAC和单轴画面位移求水平视场;
4. 沿tilt方向重复测量;
5. 每个方向用不同移动量反算视场:两组结果只有在特征质量高且视场差不超过8%时才接受,
否则要求至少三组一致结果;
6. 水平方向按1%目标重叠计算step,垂直方向按4%目标重叠计算step;
7. 要求至少50个几何内点且内点率至少45%,否则拒绝结果;
8. 删除本次自动标定产生的临时截图。
5. 每个方向会跑完预设的全部候选step,再统一筛选相互一致的视场样本;不因前几个样本
离散度低而提前停止;
6. 两组结果只有在特征质量高且视场差不超过8%时才接受,否则要求至少三组一致结果;
7. 水平方向按4%、垂直方向按2%目标重叠计算step;这是根据完整扫图接缝分别设置的轴向补偿;
8. 默认使用ORB特征和RANSAC几何变换;当局部图案重复导致几何内点不足时,自动使用整幅图
相位相关复核纯单轴位移,相位响应不得低于0.20;
8. 要求至少50个几何内点且内点率至少45%,否则拒绝结果;
9. 根据多个水平样本的带符号位移,自动识别该型号摄像头从画面左到右时pan是递增还是递减;
10. 删除本次自动标定产生的临时截图。
这一步不能省略。两个角点只能确定扫描范围,无法确定当前摄像头型号和zoom下的一幅画面
覆盖多少角度。
@@ -243,6 +260,14 @@ docker exec smart-cam curl -fsS \
扫描完成或失败后自动停止日志跟随,并显示结果目录。
扫描过程中需要中断时,直接按`Ctrl+C`。向导会主动调用停止接口并结束本次扫描,
已经保存的小图和`meta.json`会保留。也可以在另一个终端执行:
```bash
docker exec smart-cam curl -fsS -X POST \
http://127.0.0.1:18080/api/v1/scan/stop
```
### ⑧ 拼图测试
只有本次试扫成功完成后才会出现这个问题。回复`1`后,向导将本次扫描的结果目录和第①步
@@ -250,9 +275,13 @@ docker exec smart-cam curl -fsS \
```bash
/home/zhangw/scan-calibrator/scan-panorama/stitch.sh \
<本次扫描目录> --mount <desktop或hanging>
<本次扫描目录> --mount <desktop或hanging> \
--pan-direction <increasing或decreasing>
```
`mount`只决定上下行顺序;左右列顺序使用第④步实拍得到的pan方向。交互式向导会自动传入,
不需要现场人员额外选择。
拼图完成后,终端返回大图的绝对存储路径,然后结束对话。回复`3`则不拼图并结束。
拼图结果统一保存在:
@@ -267,8 +296,9 @@ docker exec smart-cam curl -fsS \
- 每一个摄像头点位都要重新记录角点;
- 摄像头型号或zoom变化时必须重新自动计算step;
- 不同型号的海康球机可能有相反的pan数值方向;向导会实拍识别,不能用desktop/hanging
或“默认走短弧”代替;
- 标定期间不要同时从Web界面控制PTZ;
- 水平目标重叠为1%,垂直目标重叠为4%,都不超过5%上限;
- 自动标定不会使用单个样本;两组样本必须同时满足高特征质量和视场差不超过8%,
普通质量的结果必须由至少三组样本互相验证;
- 向导按轴设置目标重叠:水平4%、垂直2%;最终以完整试扫的接缝结果为准;
- 自动标定会完整测试全部候选step,再从所有可靠结果中筛选一致样本;
- 机械回差、镜头畸变和近景视差可能导致不同位置略有差异,最终必须完整试扫并拼图复核;