## 先看效果以下拼接效果只做简单效果演示。| 阶段 | 效果 || 四路鱼眼原始画面 | 严重畸变视野扭曲各看各的 || 畸变矫正后 | 直线变直但仍是四个独立视角 || **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, RMS0.5px640×480: fx≈155, fy≈155, RMS0.5px标定结果按分辨率命名存储切换分辨率自动匹配。### 2. 四相机联合外参标定基于 PnPPerspective-n-Point算法利用已知位置的棋盘标定板求解每个相机在车辆坐标系中的六自由度位姿- 标定板位置预设在车辆周围四个已知坐标- 使用 Kabsch 算法确定标定板在车辆坐标系中的旋转平移- EPNP 迭代优化求解相机位姿- 重投影误差 1.0 px### 3. 鸟瞰图生成与 H 矩阵通过单应性矩阵Homography将去畸变后的图像映射到鸟瞰视角H findHomography(image_points, birdview_points)birdview warpPerspective(undistorted_image, H)支持手动标注地面点fallback 模式和自动棋盘格计算两种方式。### 4. 图像融合——方向加权羽化四路鸟瞰图拼接时重叠区域的像素权重由两项决定- **方向权重**像素方向与相机主方向的一致性越接近主方向权重越高- **距离衰减**离相机中心越远权重指数衰减cppfloat dw max(0.f, cos(pixel_dir, camera_dir)); // 方向float cw exp(-distance² / 45000); // 距离float tw dw × cw; // 最终权重优势融合边界自然无硬切缝运算量小纯像素级操作。### 5. 颜色一致性校准四路相机由于传感器差异、光照不同存在色差。系统在启动后第 15 帧自动采集重叠区域通过最小二乘法计算每通道的增益gain和偏置biasR_ref gain_R × R_target bias_RG_ref gain_G × G_target bias_GB_ref gain_B × B_target bias_B之后每帧实时校正消除拼接色差。### 6. 实时性能| 分辨率 | FPSRelease ||--------|:---:|| 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/i78G RAM |---## 快速上手### Windowsbash# 1. 安装 OpenCV 4.8.0# 2. 修改 CMakeLists.txt 中 OpenCV 路径# 3. 双击 build_and_package.bat# 4. 运行 portable/image_correct/image_correct.exe### Jetson Orin Nanobashsudo apt install libopencv-devcd image_correct_jetsonbash 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 均已适配。---## 联系我- **邮箱**15256150676163.com- **CSDN私信**直接点击头像发消息- **定制开发**乘用车动态环视、ROS2 集成、嵌入式部署优化等需求欢迎沟通---*如果这篇文章对你有帮助请点赞收藏支持一下有技术问题欢迎评论区交流。*
「开源」四路鱼眼相机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, RMS0.5px640×480: fx≈155, fy≈155, RMS0.5px标定结果按分辨率命名存储切换分辨率自动匹配。### 2. 四相机联合外参标定基于 PnPPerspective-n-Point算法利用已知位置的棋盘标定板求解每个相机在车辆坐标系中的六自由度位姿- 标定板位置预设在车辆周围四个已知坐标- 使用 Kabsch 算法确定标定板在车辆坐标系中的旋转平移- EPNP 迭代优化求解相机位姿- 重投影误差 1.0 px### 3. 鸟瞰图生成与 H 矩阵通过单应性矩阵Homography将去畸变后的图像映射到鸟瞰视角H findHomography(image_points, birdview_points)birdview warpPerspective(undistorted_image, H)支持手动标注地面点fallback 模式和自动棋盘格计算两种方式。### 4. 图像融合——方向加权羽化四路鸟瞰图拼接时重叠区域的像素权重由两项决定- **方向权重**像素方向与相机主方向的一致性越接近主方向权重越高- **距离衰减**离相机中心越远权重指数衰减cppfloat dw max(0.f, cos(pixel_dir, camera_dir)); // 方向float cw exp(-distance² / 45000); // 距离float tw dw × cw; // 最终权重优势融合边界自然无硬切缝运算量小纯像素级操作。### 5. 颜色一致性校准四路相机由于传感器差异、光照不同存在色差。系统在启动后第 15 帧自动采集重叠区域通过最小二乘法计算每通道的增益gain和偏置biasR_ref gain_R × R_target bias_RG_ref gain_G × G_target bias_GB_ref gain_B × B_target bias_B之后每帧实时校正消除拼接色差。### 6. 实时性能| 分辨率 | FPSRelease ||--------|:---:|| 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/i78G RAM |---## 快速上手### Windowsbash# 1. 安装 OpenCV 4.8.0# 2. 修改 CMakeLists.txt 中 OpenCV 路径# 3. 双击 build_and_package.bat# 4. 运行 portable/image_correct/image_correct.exe### Jetson Orin Nanobashsudo apt install libopencv-devcd image_correct_jetsonbash 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 均已适配。---## 联系我- **邮箱**15256150676163.com- **CSDN私信**直接点击头像发消息- **定制开发**乘用车动态环视、ROS2 集成、嵌入式部署优化等需求欢迎沟通---*如果这篇文章对你有帮助请点赞收藏支持一下有技术问题欢迎评论区交流。*