来源丨OpenFPGA
编辑丨新机器视觉
本项目简单来说,就是实时生成视频全景图,该架构经过优化,可以实时视频输出。
算法
下图说明了描述算法每个步骤的系统框图
该系统大致可以分为三个子系统:
  • 预处理
  • 基于 SIFT 的特征提取
  • 框架拼接融合

预处理

系统的输入视频流为 8 位 RGB 格式。输入的 8 位图像如下图所示。
视频流的每个单独帧将具有对应于红色、绿色和蓝色的三个通道。视频帧中的颜色信息不会增强特征检测。此外,与单通道 8 位图像相比,3 通道 8 位图像的计算需要更多时间。因此,RGB 视频帧被转换为 8 位灰度图像。生成的灰度图像噪声更小,阴影细节更多,计算效率更高,如下图所示。

基于SIFT的特征提取

使用SIFT算法从灰度图像中提取特征。SIFT算法可以分为两个主要步骤:

关键点检测

SIFT 操作从输入图像与不同高斯滤波器的离散卷积开始。高斯滤波器是一种广泛使用的图像平滑算法,定义为:
上式中,G为(x,y)点的高斯核,σ为高斯参数。使用较大的 σ 值会对图像产生更大的平滑效果。图像与高斯核的离散卷积生成具有较少噪声和较少细节的图像。在 SIFT 中,高斯核的离散卷积是用四个不同的 σ 值完成的。逐渐增大的 σ 值用于生成一组模糊图像或八度音阶(意思频率减半,低频部分对应灰度图中变化平缓的部分,高频部分对应灰度图中变化剧烈的部分)。
对于给定的 σ 值,卷积核中所有系数的总和应该等于 1。因此,核的大小随着 σ 值的增加而增加。
一旦生成了八度音阶,就会根据八度音阶中的四个图像构建一个 DoG 空间。DoG 代表高斯差分。DoG 是高斯拉普拉斯算子 (LoG) 的计算效率非常高的近似值。DoG 空间是通过逐像素计算两个相邻高斯尺度图像之间的差异来构建的。八度音阶中四个图像的DoG空间将具有三个级别。
通过查找局部最大值或最小值,从 DoG 空间中提取关键点。如果一个像素是由顶层 9 个像素、中间层 8 个像素和底层 9 个像素组成的 26 像素邻域内的局部最大值或最小值,则该像素被认为是关键点。
关键点

描述符生成

关键点描述符是特定关键点的唯一标识符。SIFT 使用关键点的梯度幅度和方向作为描述符的基础。一个点的梯度大小和方向可以通过图像与 Sobel 滤波器的离散卷积来计算。
Sobel卷积输出
为了生成关键点描述符,计算每个关键点周围 16x16 窗口内每个点的梯度幅度和方向。16x16 窗口的梯度幅度与高斯核卷积。将每个 4x4 单元格中的梯度幅度组合起来,使 16x16 窗口减少到 4x4 窗口和 16 个梯度方向。最后,这 16 个梯度方向被转移到 8 个 bin 中。因此,构建了一个 128 个元素的向量,作为关键点描述符。

框架拼接融合

框架拼接是将两个帧组合成单个图像的过程。框架拼接分两步完成:

关键点匹配

比较来自两个相机传感器的视频帧中关键点的关键点描述符。如果两个关键点(每个相机传感器一个)的关键点描述符之间的差异低于误差阈值,则将它们视为关键点对。将它们的关键点描述符之间差异最小的关键点对作为参考关键点。

图像融合

加权平均方法用于将两个帧混合成单个图像。重叠区域的像素值等于两帧像素的加权平均值。根据重叠像素和相应帧的边界之间的距离选择权重。
拼接图像

FPGA程序顶层设计

顶层架构的框图如下图所示。
顶层设计分为五个阶段:
  • 预处理阶段
为了模拟相机传感器的工作,使用了 image.v 和 image2.v,它们分别输入对应于左和右相机传感器的图像。RWM_1.v 是一个读写存储器,用于存储 8 位 RGB 图像。WRITE 模式时,RGB 图像像素数据写入内存。存储完所有像素值后,将存储器置于 READ 模式。在 READ 模式下,每个像素值从内存中顺序读取.
  • 过滤阶段
  • 关键点阶段
  • 关键点匹配阶段
  • 帧混合阶段

项目地址

https://github.com/AugustinJose1221/FPGA-Build
https://github.com/AugustinJose1221/Video-Stitching
本文仅做学术分享,如有侵权,请联系删文。

3D视觉工坊精品课程官网:3dcver.com
2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进4.国内首个面向工业级实战的点云处理课程5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)
10.单目深度估计方法:算法梳理与代码实现
11.自动驾驶中的深度学习模型部署实战
12.相机模型与标定(单目+双目+鱼眼)
13.重磅!四旋翼飞行器:算法与实战
14.ROS2从入门到精通:理论与实战
15.国内首个3D缺陷检测教程:理论、源码与实战

重磅!3DCVer-学术论文写作投稿 交流群已成立
扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。
同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。
一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。
▲长按加微信群或投稿
▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列三维点云系列结构光系列手眼标定相机标定激光/视觉SLAM自动驾驶)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近4000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款
 圈里有高质量教程资料、答疑解惑、助你高效解决问题
觉得有用,麻烦给个赞和在看~

继续阅读
阅读原文