当前位置: 首页 > news >正文

「开源」四路鱼眼相机360°全景环视系统——从标定到拼接全流程(源码+教程)

## 先看效果

以下拼接效果只做简单效果演示。

| 阶段 | 效果 |

| 四路鱼眼原始画面 | 严重畸变,视野扭曲,各看各的 |

| 畸变矫正后 | 直线变直,但仍是四个独立视角 |

| **360°鸟瞰拼接** | **四路融合,车身居中,一目了然** |
这里笔者偷了个懒,由于搭架子有点麻烦 就用了以前的一个效果图,想实现完整的无缝拼接只需要详细测量棋盘格尺寸即可

实时帧率:**>25 FPS**(Release 编译,i7-12700H)

---

## 能干什么

- 车载环视影像(AVM/Around View Monitor)

- 自动驾驶数据采集与标注

- 机器人/AGV 全向感知

- 毕设/课设/竞赛作品

- 科研实验(鱼眼标定、多相机融合)

---

## 系统架构

```

┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐

│ FRONT │ │ RIGHT │ │ LEFT │ │ BACK │

│ 鱼眼相机 │ │ 鱼眼相机 │ │ 鱼眼相机 │ │ 鱼眼相机 │

└────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘

│ │ │ │

└──────────────┴──────────────┴──────────────┘

离线标定阶段

┌──────┴──────┐

│ 内参标定 │ → fisheye_calibration_*.yml

│ 外参标定 │ → four_camera_extrinsics.yml

│ H矩阵计算 │ → 透视变换映射表

└──────┬──────┘

实时运行

┌──────┴──────┐

│ 鱼眼去畸变 │ OpenCV fisheye::remap

│ 鸟瞰图生成 │ warpPerspective + H矩阵

│ 拼接融合 │ 方向加权+距离衰减羽化

│ 颜色校正 │ 重叠区最小二乘匹配

│ 实时显示 │ ~25 FPS

└──────────────┘

```

---

## 技术细节

### 1. 鱼眼内参标定

使用 OpenCV 的 `fisheye::calibrate`,棋盘格法(9×6 内角点),支持多分辨率标定:

```

1280×720: fx≈310, fy≈309, RMS<0.5px

640×480: fx≈155, fy≈155, RMS<0.5px

```

标定结果按分辨率命名存储,切换分辨率自动匹配。

### 2. 四相机联合外参标定

基于 PnP(Perspective-n-Point)算法,利用已知位置的棋盘标定板,求解每个相机在车辆坐标系中的六自由度位姿:

- 标定板位置预设在车辆周围四个已知坐标

- 使用 Kabsch 算法确定标定板在车辆坐标系中的旋转平移

- EPNP + 迭代优化求解相机位姿

- 重投影误差 < 1.0 px

### 3. 鸟瞰图生成与 H 矩阵

通过单应性矩阵(Homography)将去畸变后的图像映射到鸟瞰视角:

```

H = findHomography(image_points, birdview_points)

birdview = warpPerspective(undistorted_image, H)

```

支持手动标注地面点(fallback 模式)和自动棋盘格计算两种方式。

### 4. 图像融合——方向加权羽化

四路鸟瞰图拼接时,重叠区域的像素权重由两项决定:

- **方向权重**:像素方向与相机主方向的一致性(越接近主方向权重越高)

- **距离衰减**:离相机中心越远,权重指数衰减

```cpp

float dw = max(0.f, cos(pixel_dir, camera_dir)); // 方向

float cw = exp(-distance² / 45000); // 距离

float tw = dw × cw; // 最终权重

```

优势:融合边界自然,无硬切缝,运算量小(纯像素级操作)。

### 5. 颜色一致性校准

四路相机由于传感器差异、光照不同,存在色差。系统在启动后第 15 帧自动采集重叠区域,通过最小二乘法计算每通道的增益(gain)和偏置(bias):

```

R_ref = gain_R × R_target + bias_R

G_ref = gain_G × G_target + bias_G

B_ref = gain_B × B_target + bias_B

```

之后每帧实时校正,消除拼接色差。

### 6. 实时性能

| 分辨率 | FPS(Release) |

|--------|:---:|

| 640×480 × 4 | 30+ |

| 1280×720 × 4 | 20-25 |

> **注意**:Debug 模式下性能约为 Release 的 1/5,务必用 Release 编译。

---

## 硬件要求

| 组件 | 说明 |

|------|------|

| 鱼眼相机 | 4路 USB 鱼眼,支持 UVC 协议 |

| 运行平台 | Windows (VS2022) / Linux (Jetson Orin Nano) |

| 棋盘格 | 9列×6行,格子边长约 2.87 cm 、也可以根据你的实际要求定制修改代码 |

| 其他 | 普通 PC 即可(i5/i7,8G RAM) |

---

## 快速上手

### Windows

```bash

# 1. 安装 OpenCV 4.8.0

# 2. 修改 CMakeLists.txt 中 OpenCV 路径

# 3. 双击 build_and_package.bat

# 4. 运行 portable/image_correct/image_correct.exe

```

### Jetson Orin Nano

```bash

sudo apt install libopencv-dev

cd image_correct_jetson

bash build.sh

./build/image_correct

```

### 菜单操作

```

SurroundView360 v2.0

[1] 内参标定 — 单相机棋盘格标定,保存 YAML

[2] 畸变校正 — 实时去畸变预览 + 滤波

[3] 外参标定 — 四相机联合 PnP 标定

[4] 360环视 — 实时鸟瞰拼接

```

---

## 功能清单

- [x] 单相机鱼眼内参标定(自动/手动两种模式)

- [x] 多分辨率支持(640×480 / 1280×720等)

- [x] 实时畸变校正 + 三种滤波模式

- [x] 四相机联合外参标定(PnP)

- [x] 鸟瞰图生成(H 矩阵透视变换)

- [x] 360°实时拼接融合

- [x] 方向加权羽化(无硬切缝)

- [x] 多相机颜色一致性校准

- [x] OpenCV GUI 图形菜单

- [x] Windows + Jetson 双平台兼容

---

## 获取源码

| 资源 | 内容 |

|------|------|

| **完整源码** | C++项目源码 + CMake + 标定示例数据 + Windows/Jetson编译教程 |

| **技术咨询** | 环境配置 / 二次开发 / 项目定制 |

> 源码包含全部功能模块:相机标定、畸变校正、外参标定、H矩阵计算、实时拼接、颜色校正。Windows 和 Jetson 两套 CMakeLists.txt 均已适配。

---

## 联系我

- **邮箱**:15256150676@163.com

- **CSDN私信**:直接点击头像发消息

- **定制开发**:乘用车动态环视、ROS2 集成、嵌入式部署优化等需求欢迎沟通

---

*如果这篇文章对你有帮助,请点赞收藏支持一下!有技术问题欢迎评论区交流。*

http://www.jsqmd.com/news/901661/

相关文章:

  • 从游戏图形到AI芯片:浮点数格式FP32/FP16/FP8的演进史与硬件设计启示
  • 从Vibe Check到科学评估:构建AI模型可量化评估体系的实践指南
  • 如何高效获取Zenodo科研数据:专业开发者的完整解决方案
  • 保姆级教程:手把手教你下载、解析与可视化ScanNet RGB-D数据集(附Python代码)
  • YOLOv8n-Ghost优化与FPGA加速在SAR船舶检测中的应用
  • 移动端GPU内存告急?手把手教你为Unity/UE4手游项目选对纹理压缩格式(ASTC vs ETC2实战解析)
  • 2026杭州工装:为什么新锐公司更适配企业装修需求
  • Keil MDK与Arm DS在Cortex-R开发中的对比与选型
  • n8n与Claude集成:开发者如何构建智能工作流自动化解决方案
  • Keil uVision彻底卸载指南:解决残留问题与注册表清理
  • 告别死记硬背:用‘生产者-消费者’模型图解LwIP的tcpip_thread与邮箱机制
  • 别再给主力机装SQL Server了!用群晖Docker搭个2019版,开发测试两不误
  • 星漫拾光:在快节奏时代,为内心留一处温柔归处
  • 揭秘Ollama、LM Studio等本地大模型工具性能差异的四大核心原因
  • AI Agent安全指南:OWASP Top 10预测与工程防御实践
  • 睡眠呼吸暂停检测:ECG信号与轻量化CNN的创新应用
  • VMware Workstation Pro 17免费激活完整指南:终极许可证密钥获取与配置
  • 水平越权 垂直越权-漏洞解析5
  • 告别第三方录屏软件!用Unity Recorder实现4K多机位动画录制(附Timeline联动技巧)
  • 钉钉自动打卡助手终极使用指南:告别迟到困扰
  • JTAG调试中nSRST信号连接的必要性与实践
  • 从零到实战:基于CH582和CherryUSB打造一个自定义HID设备(键盘/鼠标)
  • 从光纤卡顿到晶格禁带:用一维单原子链模型理解生活中的“色散”与“截止频率”
  • UE4网络同步避坑指南:从‘客户端预测’到‘服务器回滚’,你的射击手感差可能因为这
  • 英语作文_8B
  • 2026年 淋浴椅/老人洗澡椅优质品牌推荐榜:折叠防摔设计+适老化细节,守护长者洗浴安全与舒适之选 - 品牌企业推荐师(官方)
  • 2026年 欧标镀锌钢板厂家推荐排行榜:EN 10346标准宝钢、山钢集团、烨辉品牌深度解析与选购指南 - 品牌企业推荐师(官方)
  • 基于本地LLM的敏感文档AI处理管道:隐私、合规与实战
  • 全息MIMO近场波束成形技术与圆形阵列应用
  • 好芯片,晋江造!