• 美文
  • 文章
  • 散文
  • 日记
  • 诗歌
  • 小说
  • 故事
  • 句子
  • 作文
  • 签名
  • 祝福语
  • 情书
  • 范文
  • 读后感
  • 文学百科
  • 当前位置: 柠檬阅读网 > 范文 > 正文

    全景视频实时拼接技术研究与实现

    时间:2023-04-14 16:15:03 来源:柠檬阅读网 本文已影响 柠檬阅读网手机站

    刘台,胡斌,田进龙,任伟嘉,高超

    (武汉中原电子集团有限公司,湖北 武汉 430205)

    全景视频拼接系统利用多个固定摄像机从不同视角对同一场景进行拍摄,根据图像间的相关性,通过视频图像拼接技术产生比单个图像具有更宽视野的图像。这项技术的应用场景也越来越广泛,不仅应用在军用的无人领域,在汽车辅助驾驶系统中的使用显得亦尤为重要。在机动车数量飞速增长的同时,城市的交通道路系统发展却相对滞后,造成城市交通情况急剧恶化,由此引发的交通事故逐年增加[1]。对于在大城市驾车的车主,引发交通事故的原因有很大一部分是驾驶的车辆存在视觉盲区,驾驶员不能准确判断车与车之间的距离[2]。近几年来,随着视频编码技术以及车载整体设备性能的不断提高,为车辆提供鸟瞰全景视频功能的辅助驾驶系统,已然成为绝大部分车主的心声,同时也成为当前辅助驾驶系统研发的一个热点[3]。

    本文通过全志T5 核心板,使用TP2854 视频采集芯片捕捉多路模拟相机的图像数据,再使用基于特征提取的配准算法,利用OpenCV 库对多路全景视频拼接技术进行了研究。

    视频流是由多个图像构成的,对于25 帧的视频画面表示1 秒的视频包含了25 张图像,所以图像拼接技术就是视频拼接的基础。和图像拼接技术相比,视频拼接的重点是拼接是准确性和实时性。本文研究了图像拼接技术过程中的一些基本原理和改进方法,主要对图像的特征提取和图像的融合进行了深入研究。视频图像的配准和融合是视频拼接的核心技术,本文使用SURF 特征点提取作为特征提取算法,在提取图像特征点的基础上,利用FLANN 算法对图像进行特征配准,之后在进行图像间透视变换矩阵的计算。

    本文的重点与难点在于图像的融合。若图片经过透视变换之后图片重叠区域处理不够好或不对其进行处理,那么图片的重叠区域就会产生阴影或缝隙。本文使用加权平均法对图像重叠区域进行处理,并且对算法进行改进,进一步完善该算法的实用性。

    为了解决视频拼接的实时性,提出了固定摄像头位置采集视频的思路,将特征点匹配和单应性矩阵的计算放在启动程序,然后每次采集的图像数据只进行图像的变换和融合,实现了视频的实时拼接。

    系统的硬件主要由三部分组成:全志T5、TP5854 采集芯片、AHD 摄像头。系统运行流程:使用AHD 摄像头采集图像模拟数据,经过TP2854 将图像模拟数据转为数字信号,在T5 通过IIC 获取数据之后进行图像拼接算法,最后将全景图像数据编码、推流给到用户端。系统框图如图1 所示:

    图1 系统硬件结构框图

    全志T5 系列是一个高性能四核Cortex-A53 处理器,适用于新一代汽车市场。T5 系列符合汽车AEC-Q100 测试要求。该芯片集成四核Cortex-A53 CPU、G31 MP2 GPU、多路视频输出接口(RGB/2*LVDS/HDMI/CVBS OUT)、多路视频输入接口(MIPI CSI/BT656/BT1120)。其中GPU 支持OpenGL ES 1.0/2.0/3.2、Vulkan 1.1 和OpenCL 2.0,在处理视频数据时可以使用GPU 来加速算法的执行时间。

    同时,T5 芯片支 持4K@60fps H.265 解码和4K@25fps H.264 解码,DI、3D 降噪,自动调色系统和梯形校正模块可以提供流畅的用户体验和专业的视觉效果。

    系统软件的基本流程是通过多组AHD 高清摄像头采集到视频之后,对其进行拼接,编码和RTSP推流发送给用户端。

    视频处理软件主要由上层软件、中间层软件和底层软件组成,其分层体系结构如图2 所示。视频采集模块使用V4L2 视频驱动框架进行采集,视频拼接模块使用openCV 库对多组视频进行拼接,视频编码模块使用全志CedarX 库编码,视频推流模块使用RTSP 协议进行推流。如图2 视频处理软件架构:

    图2 视频处理软件架构

    2.1 V4L2视频驱动模块

    V4L2(Video for Linux 2)是Linux 标准的视频采集驱动框架,位于Linux 内核态,它由硬件独立V4L2 驱动核心和硬件相关的Camera 驱动、Sensor 驱动等组成。其中,V4L2 驱动核心负责具体的摄像头驱动的注册管理,它为Linux 用户态应用提供了统一的设备文件系统接口,用于摄像头数据的读取和摄像头参数的控制;
    Camera 驱动是和具体硬件平台相关的摄像头驱动,用于视频帧处理;
    Sensor 驱动是和摄像头相关的传感器驱动,完成摄像头参数的控制,对视频处理模块而言,Sensor 驱动就是NVP6324 的驱动。

    视频采集模块基于V4L2 视频驱动,采集流程如图3 所示:

    图3 视频采集流程

    基本步骤如下:

    (1)打开视频设备文件;

    (2)查询视频设备的能力,比如是否具有视频输入,或者音频输入输出等。

    (3)设置视频采集的参数。

    设置视频的制式,制式包括PAL/NTSC。

    设置视频图像的采集窗口的大小。

    a)设置视频帧格式,包括帧的点阵格式、宽度和高度等;

    b)设置视频的帧率;

    c)设置视频的旋转方式。

    (4)向驱动申请视频流数据的帧缓冲区

    请求/ 申请若干个帧缓冲区,一般为不少于3 个。查询帧缓冲区在内核空间中的长度和偏移量。

    (5)应用程序通过内存映射,将帧缓冲区的地址映射到用户空间,这样就可以直接操作采集到的帧,而不必去复制。

    (6)将申请到的帧缓冲全部放入视频采集输出队列,以便存放采集的数据。

    (7)开始视频流数据的采集。

    (8)驱动将采集到的一帧视频数据存入输入队列第一个帧缓冲区,存完后将该帧缓冲区移至视频采集输出队列。

    (9)应用程序从视频采集输出队列中取出已含有采集数据的帧缓冲区,应用程序处理该帧缓冲区的原始视频数据。

    (10)处理完后,应用程序的将该帧缓冲区重新排入输入队列,这样便可以循环采集数据。

    重复上述步骤8 到10,直到停止采集数据。

    (11)停止视频的采集。

    (12)释放申请的视频帧缓冲区,关闭视频设备文件。

    2.2 实时视频拼接的流程

    视频拼接是在图像拼接的基础上发展而来的,所以图像拼接是视频拼接的核心步骤,图像拼接的结果直接影响到视频拼接的结果。图像拼接经过近些年来的发展有很多方法,但是大体步骤可以分为:图像的预处理、图像配准、和图像融合。其中图像的配准和图像的融合则是图像拼接的研究的难点问题。图像拼接的具体步骤如图4 所示:

    图4 图像拼接的流程

    视频拼接的原理是首先将视频信息进行帧提取,然后把提取的帧图像按照图像拼接的步骤进行特征提取、匹配、融合,最终把拼接完成的帧图像再压缩成视频信息,这样就能完成视频的拼接工作。视频拼接的基本流程图如图5 所示:

    图5 实时视频拼接的流程图

    为了保证视频拼接的实时性和准确性,与一般的视频拼接的方法相比较,最终采取的视频拼接的方法如下四步:

    (1)只需要从多个视频图像中捕获比较合适的图像,保存下来。

    (2)根据第一步的图像进行配准操作。

    (3)计算出四个摄像头图像之间的单应性矩阵,并且并存储在一个Mat 里面。

    (4)在剩下的那些需要实时拼接的视频帧,就可以直接调用存储在Mat 中的单应性矩阵,从而简单地完成配准过程。

    这样剩下的那些需要实时拼接的视频帧在拼接的时候就可以省去每次的特征提取配准的时间,只需利用透视变换矩阵进行图像变换拼接和图像融合两个步骤。同时本实验采用普通的日常使用的摄像头来完成视频的同步采集过程,不仅提高了计算效率,也增加了研究的实用性。

    2.3 视频拼接技术实现

    (1)摄像头结构

    摄像头使用的是红外高清夜视视频模块(以下简称高清视频模块),该模块的镜头为6 mm,视角范围在60°,可以采用H264、MJPEG、YUY2 三种编码方式,具有非常优秀的室内室外效果,色彩逼真。高清视频模块带红外灯检测电路,支持外接红外灯板。并且支持UVC协议,MJPEG、YUY2 无需驱动,即插即用。采用三路摄像头的结构如图6 所示。

    图6 摄像头结构图

    图6 中使用三个摄像头作为拼接图像采集的设备。两幅图像拼接原理是使用两幅图相似的特征点进行提取,之后进行拼接一套流程。在此之前,需要找到两幅图像的重叠区域,当重叠区域达到30% 或以上时,找特征点效果会更好。

    摄像头的视场角在60°时,两个摄像头的重叠视角在20°拼接效果会更好,如图6 中红色虚线和蓝色虚线交汇处。

    2.4 图像单应矩阵计算

    单应(Homography)是射影几何中的概念,又称为射影变换。它把一个射影平面上的点(三维齐次矢量)映射到另一个射影平面上。单应是关于三维齐次矢量的一种线性变换,可以用一个3×3 的非奇异矩阵H表示,这个矩阵H称为单应矩阵。使用这个矩阵,就可以将射影平面上的一个点投影到另一个平面上(图7 中的m投影到m`)。

    图7 单应矩阵变换

    线性变换:

    平面上的点为三维齐次矢量,即:

    计算单应矩阵需要通过两幅图片的预处理、图像配准等操作,具体如下:

    (1)图像预处理

    预处理是图像拼接过程中的一个重要环节。输入图像由于图像采集环境的不同,如光照明暗的程度还有相关设备性能的优劣等,往往存在有噪声、对比度不够等缺点。另外,距离远近、焦距大小等又使得图像出现各种各样的奇怪问题。为了保证特征点提取和特征点匹配过程的准确性和高效性,必须对图像进行预处理。常用的图像预处理有:灰度处理和滤波。

    灰度处理:图像中的特征点与图像是彩色和灰色并没有关系,所以为了加快配准和融合的速度,可以先将相机获取到的彩色图像变成灰度图像,然后在灰度图像的基础上进行操作。

    滤波:摄像机所采集的图像在成像、数字化以及传输过程中,难免会受到各种各样噪声的干扰,图像的质量经常会发生出人意料的退化,严重影响了整个图像的视觉效果。通常这些噪声干扰使得图像退化,表现为图像模糊、特征淹没,这会对图像分析产生不利,使所获得的图像质量较低。对这样的图像直接进行分析是比较困难的。抑制使图像退化的各种干扰信号、增强图像中的有用信号,以及将观测到的不同图像在同一约束条件下进行校正处理就显得非常重要。常用的滤波方法有:平滑滤波、中值滤波和高斯滤波,每种滤波都有自己的优缺点,根据噪声的类型不同选择不同的滤波方法。

    由于本文使用OpenCV 库对图片进行处理,可以使用cvtColor 函数对图片做灰度处理,简单方便。

    (2)特征点检测和特征向量计算

    本文采用的特征提取算法是OpenCV 中自带的SURF(Speed Up RobustFeature,加速的鲁棒性特征)算法。OpenCV 中的SURF 特征提取算法的主要的五个步骤:构建Hessian 矩阵构造高斯金字塔尺度空间、利用非极大值抑制初步确定特征点、精确定位极值点、选取特征点的主方向、构造SURF 特征点描述子[4]。SURF 算法分为五个步骤:

    1)构建Hessian 矩阵和高斯金字塔尺度空间

    surf 采用的是Hessian 矩阵行列式产生的近似值图像,运算方便,检测速度较高。假设函数f(z,y),Hessian矩阵H是由函数,偏导数组成。图像中的某个像素点的Hessian 矩阵,如式(3):

    即每一个像素点都能够求出一个Hessian 矩阵。

    H矩阵的判别式如式(4):

    判别式的值就是H矩阵的特征值,所有的点可以根据判定结果的符号来分类,由高等数学可以知道,判断一个点是不是极值点,就是要判断判别式的取值是正还是负。

    在SURF 算法中,用图像像素l(x,y) 即为函数值f(x,y),选用二阶标准高斯函数作为滤波器,

    通过特定核的卷积计算二阶偏导数,这样便能计算出H矩阵的三个矩阵元素Lxx、Lxy、Lyy,从而计算出H矩阵,如式(5):

    但是特征点必须具备尺度无关性,所以在进行Hessian 矩阵构造前,需要对其进行高斯滤波。这样,经过高斯滤波后再做Hessian 矩阵的计算,如式(6):

    L(x,t) 表示的是不同解析度下的一幅图像,可以利用高斯核G(t) 与图像函数I(x) 在点x的卷积来实现,其中高斯核G(t) 如式(7):

    其中t为高斯方差,g(x)为高斯函数。使用这种方法可以为图像中每个像素计算出其H行列式的决定值,并用这个值来判别特征点。为方便应用,Herbert Bay 提出用近似值来代替L(x,t)。权值的引入是为了平衡准确值和近似值的误差,权值随尺度变化,则H矩阵的判别式可表示为式(8):

    2)利用非极大值抑制初步特征点

    将经过hessian 矩阵处理过的每个像素点和它邻近的3 维领域的26 个点进行大小比较,如果它是这26 个点中的最大值或者最小值,则保留下来,当做初步的特征点。

    3)精确定位极值点

    采用3 维线性插值法得到亚像素级的特征点,同时也去掉那些值小于一定阈值的点,增加极值使检测到的特征点数量减少,最终只有几个特征最强点会被检测出来。

    4)选取特征点的主方向

    统计特征点领域内的harr 小波特征。即在特征点的领域,统计60°大小的扇形内所有点的水平haar 小波特征和垂直haar 小波特征总和,haar 小波的尺寸变长为4s,这样一个扇形得到了一个值。然后60°扇形以一定间隔进行旋转,最后将最大值那个扇形的方向作为该特征点的主方向。

    5)构造surf 特征点描述算子

    在surf 中,也是在特征点周围取一个正方形框,框的边长为20s(s 是所检测到该特征点所在的尺度)。该框带方向,方向当然就是第4 步检测出来的主方向了。然后把该框分为16 个子区域,每个子区域统计25 个像素的水平方向和垂直方向的haar 小波特征,这里的水平和垂直方向都是相对主方向而言的。该haar 小波特征为水平方向值之和、水平方向绝对值之和、垂直方向之和、垂直方向绝对值之和。

    这样就会导致每个小型区域就有了4 个值,所以每一个特征点都是64(16×4)维的向量,和sift 算法[5]相比,向量维度减少了一半,这个优势在特征匹配过程中会特别明显,会大大加快匹配速度

    (3)FLANN 特征匹配

    FLANN 是指Fast Library for Approximate Nearest Neighbors。在高维空间中,这个搜索库常用来进行快速近似最近邻搜索,它包含了一个集合的算法,用这些算法对数据集进行最近邻搜索,也用来为系统自动选择最佳的算法和最佳参数。

    对于一个高维特征,可以发现在计算机视觉中,找到待匹配数据中的最近邻的匹配点的计算代价是昂贵的。对于高维特征,FLANN特征匹配比一般的匹配算法更有效、更快速。

    用SURF 算法提取特征点之后,计算出特征向量,也即特征描述子,然后用FLANN 匹配器进行特征描述子的匹配,根据图像变换的原理,对匹配的结果集进行计算,得出变换矩阵,即单应矩阵。

    2.5 图像融合

    图像融合的目的是将两幅图片无缝地拼接在同一个平面[6]。

    (1)直接平均法

    在找到单应性矩阵之后,通过OpenCV 函数将物体图像经过透视变换,变换到目标场景中,计算出重叠区域的四个角坐标之后也就是计算出了重叠区域的边界,在这个重叠区域中,对应的像素点的灰度值等于场景图像和物体图像变换后的图像的像素的平均值,那么这样的融合技术就称为直接平均法,其中用I表示拼接后的最终图像,用I1和I2表示待拼接的图像,则有如下关系式(9):

    (2)加权平均法

    与直接平均法类似,在图片的重叠区域中,对应的像素点的灰度值不再直接等于场景图像和物体图像变换后的图像的像素的平均值,而是等于场景图像和物体图像变换后的图像的像素先加权后进行平均[7-10]。用I为融合后的最终图像,用I1和I2表示待拼接图像,则有式(10):

    在式(10)中的w1代表待拼接图像重叠区域中属于左边目标场景中的像素对应的权值,w2代表待拼接图像重叠区域中属于物体图像变换后的图像的像素的权值,且w1+w2=1,其中0<w1<1,0<w2<1。为了实现重叠区域的平滑过渡,可以选择适当的权值,这样就可以基本上从源头消除拼接的缝隙。

    根据实际融合效果,可以选择权重不同的分布函数w1、w2,加权平均法可以分为很多种其中最常用的加权平均法就是渐入渐出加权平均法[11-15]。这两个权重值由重叠区域的宽度width 来决定,假定w1=1/width,那么在重叠区域中,w1从1 开始逐渐减小到0,而w2从0 开始逐渐增大到1,最终就实现了图I1和I2之间的重叠区域的平滑过渡。

    另外,在图像像素点I1(x,y)或I2(x,y)过低时,图像呈现的是黑色。即在使用渐入渐出加权平均法时,可以先检测待处理的像素点的值是否过低,若I1(x,y)<K时,则将该点的值直接去掉,w1=0,K值可以根据试验情况进行调整。

    3.1 全景拼接的实验流程

    根据实时视频拼接的流程编写程序,在Ubuntu 虚拟机中使用T5 的编译器进行交叉编译,将可执行文件下载到T5 实验板上。同时,准备程序运行所需要的库文件下载到T5 实验板目录/usr/bin 下,即可运行程序。下面展示运行程序过程中,图片的处理过程:

    (1)摄像头捕捉画面

    通过V4l2 将摄像头采集的图片传给T5,使用OpenCV 库文件获取图片,如图8 和图9 所示:

    图8 图像采集左图

    图9 图像采集右图

    (2)投影变换

    通过计算得出的单应矩阵将两幅图片投影到同一平面,如图10 所示:

    图10 投影变换后的图片

    图10 是把右图投影变换后,再将左图粘贴到右图变换后的平面。

    (3)图像融合

    通过渐入渐出加权平均法,将两幅图片进行融合,融合后的图片如图11 所示。

    图11 融合后的图片

    图11 将融合后的图片裁剪了右图投影变换后多余的黑色部分,展示了完美融合后的图片。

    3.2 视频拼接

    视频拼接是在图像拼接的基础上发展而来的[16-20],以上展现了图像拼接的全过程,视频拼接程序只需要通过OpenCV 不断从摄像头获取图像数据,再经过算法部分的程序进行图像拼接处理之后,编码推流即可展示给用户。

    3.3 图像融合算法的对比

    本文最关键部分是图像的融合,在实验过程中,在采用改进的加权平均算法和不采用该算法的结果差异明显,进行如下实验:

    (1)采集的图像

    采集的3 幅图片如图12、图13 和图14 所示:

    图12 融合前左图

    图13 融合前中图

    图14 融合前右图

    (2)不采用加权平均算法融合

    在不采用加权平均融合算法融合的图片如图15 所示:

    图15 不采用加权算法融合后图片

    (3)采用加权平均融合算法

    本文在采用改进的加权平均融合算法后,拼接的图片如图16 所示:

    图16 采用加权算法融合后图片

    在采用加权平均融合算法后,拼接的缝隙基本看不到,视觉效果较好,具有很好的实用性。

    本文利用全志T5 平台实现了多个视频的实时拼接。通过多个摄像头采集到数据之后,使用OpenCV 算法程序对数据进行处理,经过对图像的特征点提取、单应矩阵计算、透视变换以及融合处理之后,生成视野广的图像或全景图像。并对图像融合算法的改进,使得融合效果更好。但是,本次研究不足之处在于视频拼接时延部分稍大,会少许影响视频的观看体验,后续将进一步优化在全志T5平台的视频拼接设计。

    猜你喜欢摄像头驱动矩阵浙江首试公路非现场执法新型摄像头中国交通信息化(2022年9期)2022-10-28基于模糊PI控制的驱动防滑仿真系统分析汽车实用技术(2022年7期)2022-04-20摄像头连接器可提供360°视角图像汽车工程师(2021年12期)2022-01-18屈宏斌:未来五年,双轮驱动,砥砺前行房地产导刊(2020年11期)2020-12-28轨旁ATC系统门控柜接收/驱动板改造铁道通信信号(2019年4期)2019-10-10初等行变换与初等列变换并用求逆矩阵中央民族大学学报(自然科学版)(2016年3期)2016-06-27基于S3C6410的Wi-Fi驱动移植实现通信电源技术(2016年1期)2016-04-16矩阵南都周刊(2015年4期)2015-09-10矩阵南都周刊(2015年3期)2015-09-10矩阵南都周刊(2015年1期)2015-09-10
    相关热词搜索: 全景 拼接 技术研究

    • 文学百科
    • 故事大全
    • 优美句子
    • 范文
    • 美文
    • 散文
    • 小说文章