一种全景视频拼接方法及装置与流程

文档序号:12497539阅读:309来源:国知局
一种全景视频拼接方法及装置与流程

本发明实施例涉及视频处理技术领域,尤其涉及一种全景视频拼接方法、及装置。



背景技术:

随着视频处理技术的快速发展,全景视频的出现为人们带来了全新的视觉体验,满足了人们获取更广视觉范围的场景信息的需求。目前,全景成像系统主要分为单摄像机成像系统和多摄像机成像系统两种。单摄像机成像系统中全景图像不需要拼接,但分辨率和清晰度较低,适用范围受限。多摄像机成像系统一般通过拼接多个摄像机拍摄的不同方位的视频图像来形成全景视频,相比单摄像机成像系统来说分辨率和清晰度较高,应用范围更广。

目前,全景视频多应用于监控及直播等场景中,这些应用场景对全景视频的实时性和清晰度的要求较高。然而,现有的全景视频拼接方案中,由于需要处理的数据量较大,且算法复杂,为了保证较好的实时性,清晰度往往不高,全景视频的图像质量较差。



技术实现要素:

本发明实施例的目的是提供一种全景视频拼接方法及装置,以兼顾全景视频的拼接效率及图像质量。

一方面,本发明实施例提供了一种全景视频拼接方法,包括:

获取待拼接的多路视频源数据;

采用并行方式根据预设投影参数将对应于同一时刻的各视频源图像投影至预设全景投影面,得到由多个图块构成的全景投影视频图像,其中,每个图块对应一个视频源图像,每两个图块之间的重叠部分构成图块重叠区;

采用并行方式根据预设融合参数对位于图块重叠区内的预设缝合线进行条带式融合处理,并输出融合后的全景视频图像。

另一方面,本发明实施例提供了全景视频拼接装置,包括:

视频源数据获取模块,用于获取待拼接的多路视频源数据;

投影模块,用于采用并行方式根据预设投影参数将对应于同一时刻的各视频源图像投影至预设全景投影面,得到由多个图块构成的全景投影视频图像,其中,每个图块对应一个视频源图像,每两个图块之间的重叠部分构成图块重叠区;

融合模块,用于采用并行方式根据预设融合参数对位于图块重叠区内的预设缝合线进行条带式融合处理;

全景视频输出模块,用于输出融合后的全景视频图像。

本发明实施例中提供的全景视频拼接方案,在获取到待拼接的多路视频源数据之后,采用并行方式对用于拼接全景视频图像的视频源图像进行投影及融合等处理,保证拼接效率,可增强全景视频输出的实时性;此外,采用预先计算好的投影参数、全景投影面、融合参数以及缝合线来进行相关处理,可减少视频拼接时的运算量,进一步提高拼接效率,同时由于上述参数等内容是预先计算好的,能够保证图像的高清晰度。因此,本发明实施例提供的技术方案能够兼顾全景视频的拼接效率及图像质量,保证所输出的全景视频具备较高的时效性和较佳的图像质量,可适用于广电级直播。

附图说明

图1为本发明实施例一提供的一种全景视频拼接方法的流程示意图;

图2为本发明实施例二提供的一种全景视频拼接方法的流程示意图;

图3为本发明实施例二提供的一种最佳缝合线示意图;

图4为本发明实施例二提供的一种缝合线条带示意图;

图5为本发明实施例二提供的一种缝合线处理效果示意图;

图6为本发明实施例三提供的一种全景视频拼接方法的流程示意图;

图7为本发明实施例三提供的平移参数对应的曲线示意图;

图8为本发明实施例四提供的一种全景视频拼接装置的结构框图。

具体实施方式

下面结合附图并通过具体实施方式来进一步说明本发明的技术方案。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。

实施例一

图1为本发明实施例一提供的一种全景视频拼接方法的流程示意图,该方法可以由全景视频拼接装置执行,其中该装置可由软件和/或硬件实现,一般可集成在视频拼接设备中。如图1所示,该方法包括:

步骤110、获取待拼接的多路视频源数据。

示例性的,本实施例中的视频拼接设备具体可为计算机等终端,视频拼接设备中包含中央处理器(Central Processing Unit,CPU)和图形处理器(Graphics Processing Unit,GPU)(又称显卡)。在CPU端和GPU端均设置有多个缓冲区,用以支持本发明实施例中涉及到的并行处理方式。此外,在CPU端和GPU端可均设置一个结果缓冲区,用于存放全景视频图像。

优选的,本发明实施例基于CUDA(Compute Unified Device Architecture)或OpenCL(Intel/AMD显卡上实现)来实现。CUDA是由英伟达公司提出的一个并行计算架构,它是基于GPU的,在GPU上高速并发执行,极大的提高了程序算法的运行速度。在CUDA或OpenCL编程环境中,主要包括CPU和GPU两个部分。CPU作为主机,即Host端,GPU作为设备,即Device端。CPU和GPU有专用的通道进行数据通信,CPU负责对逻辑性实务进行处理,以及对串行化运算的控制;GPU负责执行大规模的并行化处理任务。可以理解的是,本发明实施例也可基于其他类型的并行计算架构来实现,并不受限于基于CUDA或OpenCL来实现。

以下描述使用CUDA的函数和概念。简单说明一下二者的对应关系,CUDA的流(stream)对应于OpenCL的命令队列(command_queue),CUDA的网格(grid)和块(block)分别对应于OpenCL的工作组(work group)和工作项(work item)。CUDA的拷贝函数分同步的cudaMemcpy和异步的cudaMemcpyAsync,OpenCL的拷贝函数clEnqueueWriteBuffer和clEnqueueReadBuffer只需要一个bool值参数决定是否阻塞,阻塞即是同步,不阻塞即是异步。本发明的算法不依赖于CUDA或OpenCL的特殊函数。

示例性的,多路视频源数据可由多个视频采集设备(如包括摄像头和采集卡的相机)进行视频采集而得到,视频采集设备可实时将所采集的视频源数据发送至视频拼接设备。为了保证全景视频的清晰度,优选的,视频源数据为高清视频源数据,如至少2k(2048x1536)高清视频源。一般的,每个视频采集设备对应一路视频源,视频采集设备的数量一般为3~10个。

进一步的,在视频采集设备所采集的对应于同一时刻的各视频源图像中,可能存在部分视频帧图像相比上一时刻来说并未发生变化,为了减少数据传输量,优选的,本步骤可包括:获取预设时间间隔内的相比上一时刻存在画面更新的多路视频源数据。预设时间间隔可根据实际需求来确定,例如可利用定时器Timer来实现,预设时间间隔对应于定时器的时间间隔。在Timer到期时,将过去一个预设时间间隔内更新的数据帧传递给GPU,启动各帧的投影操作和缝合线处理。这里调用GPU的异步拷贝操作函数向GPU发起的操作被放进GPU的操作队列,放入队列的时间T被记录下来,同时向拼接结果队列Q添加一个元素,表示有新的数据帧可用。

步骤120、采用并行方式根据预设投影参数将对应于同一时刻的各视频源图像投影至预设全景投影面,得到由多个图块构成的全景投影视频图像。

其中,每个图块对应一个视频源图像,每两个图块之间的重叠部分构成图块重叠区。

示例性的,本实施例中的并行方式具体可包括多个视频源图像被并行处理,如采用不同的函数分别处理多个视频源图像,每个函数处理至少一个视频源图像;还可包括同一视频源图像中的多个像素可被并行处理,如采用不同的线程分别处理多个像素,每个线程处理至少一个像素。优选的,为了提高拼接效率,本实施例中的并行方式包括:不同视频源图像采用不同的函数并行处理,同一视频源图像中的不同像素采用不同的线程并行处理。具体的,可使用GPU的异步操作特性来实现。更具体的,由于数据传输和投影操作采用CUDA的异步函数执行,这样就可以在GPU中为每路视频开辟多个缓冲区,每路视频对应一个流stream,在stream上使用cudaMemcpyAsync将视频源数据从主机内存拷贝到GPU内存,并启动GPU函数reproj<<<grids,blks,0,stream>>>(参数)。同时记录下此操作为一个事件ev_stream=cudaEventRecord(stream)。此事件在使用者调用全景视频帧的函数中使用,简单地说,就是等待这个事件ev_stream时间点上的操作完成,这样就实现了同步。本质上,外设组件互连标准(Peripheral Component Interconnect,PCI)总线传输数据是串行的,但是由于不同流可以并行执行,流里面的函数对每个像素也是并行执行,使用这种异步方式,可以在数据传输完成就执行投影操作,因为投影操作已经在队列中,不需要使用者调用CUDA的函数发起此操作,这个时间差在长时间使用时不可忽视。待每路视频源图像执行完投影操作后,便可将结果写入GPU端拼接缓冲区G_S_BUF。同时,当待拼接的多路视频源数据仅包含预设时间间隔内的相比上一时刻存在画面更新的多路视频源数据时,即仅处理有数据更新的视频帧,多个视频帧缓冲区与单个投影缓冲区(也即全景视频帧缓冲区)的组合方式可以做到最少的数据处理。

示例性的,在具体实施过程中,视频采集设备的配置(如焦距)、数量以及相对位置是确定的,可预先根据上述信息及所采集的视频截图来拼接全景图像,并记录拼接过程对应的投影平面、投影参数、最佳缝合线和融合参数,得到预设全景投影面、预设投影参数、预设缝合线和预设融合参数,在进行视频拼接时,直接利用这些预设参数来进行拼接处理,可有效降低运算量,进一步提高拼接效率,同时由于上述参数等内容是预先计算好的,能够保证图像的高清晰度。可以理解的是,将多副图像拼接成全景图像的方法有很多,例如,在PC(personal computer,个人计算机)机上可以做到无缝拼接的收费软件PTGUI或开源的Hugin等,本实施例对具体的拼接方式不做限定,仅通过某种拼接方式获得预设全景投影面、预设投影参数、预设缝合线和预设融合参数即可。需要说明的是,为了保证拼接处能够实现较好的过渡效果,本实施例中对缝合线进行条带式融合处理。

本步骤中,根据预设投影参数将对应于同一时刻的各视频源图像投影至预设全景投影面,得到由多个图块构成的全景投影视频图像。全景投影视频图像中的每个像素点的来源是确定的某个视频采集设备所采集的视频源图像的某个像素点附近的值(如插值),也可以理解为,全景投影视频图像上的每一个像素点(dx,dy)对应于视频源图像的位置(sx,sy),该对应关系包含于预设投影参数中,(dx,dy)是整数坐标,(sx,sy)是浮点坐标,用于双线性插值。用GPU的并行计算能力为全景投影视频图像上每个像素点从确定的视频源图像的确定位置插值计算得到像素值,是GPU能够做到较高的实时帧率(如25fps以上)的关键因素。

步骤130、采用并行方式根据预设融合参数对位于图块重叠区内的预设缝合线进行条带式融合处理,并输出融合后的全景视频图像。

示例性的,本步骤中仍然采用并行方式及预设参数进行融合处理,以进一步保证拼接效率及拼接质量。

优选的,对缝合线的融合处理需要等待当前全景投影视频图像完成,且融合处理所涉及的像素数量较少,故可放在R_Thread线程调用的输出函数中执行,即在读取数据之前启动缝合线的处理。R_Thread线程尝试从队列Q获取可用数据帧(即全景投影视频图像),然后等待该数据帧被GPU处理完成,调用GPU提供的函数F等待时间T之前的操作全部完成,然后调用GPU的非异步拷贝函数从G_S_BUF拷贝到CPU端的拼接结果缓冲区C_S_BUF。一般情况下,在没有可用数据帧时,R_Thread是被阻塞的。待融合处理完成后,即可输出全景视频图像。

本发明实施例中提供的全景视频拼接方法,在获取到待拼接的多路视频源数据之后,采用并行方式对用于拼接全景视频图像的视频源图像进行投影及融合等处理,保证拼接效率,可增强全景视频输出的实时性;此外,采用预先计算好的投影参数、全景投影面、融合参数以及缝合线来进行相关处理,可减少视频拼接时的运算量,进一步提高拼接效率,同时由于上述参数等内容是预先计算好的,能够保证图像的高清晰度。因此,本发明实施例提供的技术方案能够兼顾全景视频的拼接效率及图像质量,保证所输出的全景视频具备较高的时效性和较佳的图像质量,可适用于广电级直播。

实施例二

图2为本发明实施例二提供的一种全景视频拼接方法的流程示意图,本实施例以上述实施例为基础进行优化,在本实施例中,在步骤“获取待拼接的多路视频源数据”之前,还包括:获取多个视频采集设备的设备信息和多个视频采集设备所采集的对应于同一时刻的视频截图;根据设备信息将所获取的视频截图拼接成全景图像,并记录拼接过程对应的投影平面、投影参数、最佳缝合线和融合参数,得到预设全景投影面、预设投影参数、预设缝合线和预设融合参数。

进一步的,对根据设备信息将所获取的视频截图拼接成全景图像的步骤进行了进一步的优化。

相应的,本实施例的方法包括如下步骤:

步骤210、获取多个视频采集设备的设备信息和多个视频采集设备所采集的对应于同一时刻的视频截图。

其中,所述设备信息包括焦距和设备所在位置。

步骤220、根据设备信息将所获取的视频截图拼接成全景图像,并记录拼接过程对应的投影平面、投影参数、最佳缝合线和融合参数,得到预设全景投影面、预设投影参数、预设缝合线和预设融合参数。

优选的,本步骤具体可包括:对所获取的视频截图进行特征点匹配;根据所述设备信息和特征点匹配结果将所获取的视频截图投影至同一坐标系下并展开,得到由多个图块构成的全景投影图像,其中,每个图块对应一个视频截图,每两个图块之间的重叠部分构成图块重叠区;利用最大流最小割定理计算每两个图块之间的最佳缝合线,其中,以图块重叠区的梯度值作为图块重叠区内像素的权重值;对所述最佳缝合线进行条带式融合处理。

示例性的,特征点匹配可采用sift/surf等算法与ransac算法相结合的方式去掉错配点,计算各个相机之间的单应性矩阵,也就是各个相机为中心的三维坐标系之间的转换参数,将各个相机的视频截图投影到某一个相机的坐标系下,再按照圆柱投影展开成一张图,即全景投影图,这个全景投影图不是唯一的,可以以某个相机为准,还可上下左右偏移,一旦这张全景投影图确定了,各相机上像素点要投影到全景图上的什么位置(fx,fy)就确定了,用这对浮点坐标插值即可。全景视频图像4096x2048的输出有800多万像素,GPU的并行计算能力才能做到25fps以上的帧率。虽然各视频帧的数据量不小,以yuyv为例,2048x 1536x 2byte=6MB,4个相机就是24MB。最坏的情况下,每次传递给GPU的数据就是24MB。但是这不是问题,因为目前中档台式机的PCI-X总线在最低时钟频率66MHz下的总线数据吞吐能力就达到533Mb/s,也就是66.625MB/s。数据传输不成问题。况且,多数情况下,直播场景中画面持续更新的视频帧不会是全部,也就是每一个全景视频帧只需要传输数据有更新的视频帧做计算即可。

在将各视频截图投影到全景图的坐标系下之后,由于各相机之间有重叠区(特征点匹配所必要的),使得各视频截图投影后得到的图块也会有重叠区。在对重叠区进行取舍时需要使用图切割的办法绕开大的物体,避免视觉上明显的错位问题。此处的错位问题是计算误差造成的,误差来源于焦距、摄像头畸变参数的估计及摄像头本身器件的光学精度等,是无法完全消除的。本实施例中使用复杂的图切割算法搜索最佳缝合线,并对缝合线进行分层融合,以解决该问题。

本实施例中,用图块重叠区的梯度值作为像素点的权重值,利用图论中的最大流最小割定理将最佳缝合线转换成图中的最小割问题,也就是使得找到的缝合线是图的最小分割线,其中,梯度值作为权重的意义在于,大的物体边缘梯度值较大,这样就等于标记了物体边缘位置。算法就能依此避免穿过大的物体,缝合位置就会在地面、草坪、墙壁等平坦的区域,这写位置存在的错位是不容易看出的。图3为本发明实施例二提供的一种最佳缝合线示意图,如图8所示,最佳缝合线31绕开了绿色指示牌32(图中未示出颜色),具体的缝合位置在灰度平坦区域。

优选的,本实施例中对最佳缝合线进行条带式融合处理,可包括:按照预设像素宽度对最佳缝合线进行拓宽,得到缝合线条带;利用多层拉普拉斯金字塔对缝合线条带进行融合。其中,预设像素宽度可根据实际需求进行设置。对缝合线按照指定像素宽度拓宽,得到一个条带,在此区域内做融合操作。这个条带中的像素要从投影操作中去掉,也即仅利用预设投影参数计算这些像素的值,但不加入到全景投影视频图像中,避免并行带来的条带的闪烁。

图4为本发明实施例二提供的一种缝合线条带示意图,图4中示出了由7个视频采集设备所采集的图像进行拼接的示意图,图中的灰度值表示距离缝合线的距离,值越小越接近缝合线。现有方案中一般的处理方式就是采用此像素值作为权重P=P1*wei/255.0+P2*(1.0-wei/255)进行融合处理,这样加权是低通性质的滤波,丢失了高频信息就会造成条带的模糊。

本实施例中,采用改进的拉普拉斯金字塔融合缝合线条带,保证GPU的实时性。金字塔融合的本质是先经过带通滤波(让某一范围的频率通过,滤除其它频率)将两幅图像分解到不同频带上去,在不同的频带上采用适当的算子做融合操作,然后金字塔重构操作还原图像。考虑到要保证较高的帧率,所以不适合使用常规的拉普拉斯金字塔的处理办法对整幅图像进行分解,并在各层采用各像素点的梯度大小(指定邻域范围梯度加权值)作为融合依据(对于同名点像素P1和P2,梯度G1>G 2则保留P1的值,否则保留P2的值)。因此本实施例中对现有的拉普拉斯金字塔融合方案进行了如下优化:

仅融合缝合线附近若干像素。采用多层(下面以优选的4层为例)拉普拉斯金字塔,第一层缝合线两边就是0和255,没有融合。第二层缝合线位置有1-3个像素(宽度)的值不为0或255,这个值就是加权权重。第三层缝合线位置有3-5个像素(宽度)的值不为0或255,这个值作为加权权重。第四层缝合线位置4-6个像素(宽度)的值不为0或255,这个值为加权权重。

由于拉普拉斯金字塔的构造特点是上一层宽和高的1/2,所以第四层拉普拉斯金字塔融合像素宽度为4-6,影响到结果图的是缝合线位置的(3~7)x 2^3=32~56像素,考虑到5x5的高斯模版的影响,最终影响到的像素宽度最大可达60像素左右。由于缝合线比较弯曲,缝合线位置的加权像素宽度均值在5左右,可以取缝合线宽度为40像素。这就意味着融合操作只需要处理缝合线位置40-60像素的宽度,大大减少了计算量,使得GPU并行处理成为可能。

示例性的,上面描述的缝合线附近的加权权重采用如下计算方法:

第一层的权重是缝合线左边0,右边255。也就是左右两幅图(拉普拉斯金字塔第一层)沿着缝合线分开,不做融合。

第二层的权重是第一层的权重图使用5x5的高斯核处理的结果。由于加权处理使得缝合线附近出现0-255之间的值,这个值作为左右两幅图的加权权重。

第三层的权重图是第二层的权重图使用5x5的高斯核处理的结果。

第四层的权重图是第三层的权重图使用5x5的高斯核处理的结果。

需要注意的是,仅保留缝合线附近位置的权重,其余位置需要丢掉(将缝合线按照10像素宽度拓宽即可得到掩码,用来保留缝合线附近的权重值)。

图5为本发明实施例二提供的一种缝合线处理效果示意图,显示了上述处理后的效果图。图5中分别示出了第2、3、4层缝合线附近的非0或255的值。图中黑色深浅代表(0,255)之间的权重值,第1层边界附近没有0-255之间的值,2-4层边界附近才会有。上面三个图经过缩放到差不多相同的区域便于查看。2-4层的像素宽度差别不大,在1-2个像素之间。

拉普拉斯金字塔的构建具体如下:

高斯金字塔G0=原图Y0,

高斯金字塔G1=高斯5x5模版对G0下采样,宽高均为G0的一半。

高斯金字塔G2=高斯5x5模版对G1下采样,宽高均为G1的一半。

高斯金字塔G3=高斯5x5模版对G2下采样,宽高均为G2的一半。

拉普拉斯金字塔L3=G3

拉普拉斯金字塔L2=G2-高斯5x5模版上采样G3(宽高等于G2的宽和高)

拉普拉斯金字塔L1=G1-高斯5x5模版上采样G2(宽高等于G1的宽和高)

拉普拉斯金字塔L0=G 0-高斯5x5模版上采样G1(宽高等于G0的宽和高)

对于左右两幅图P1和P2分别做上述操作,分别得到P1、P2的高斯及拉普拉斯金字塔。接下来,对拉普拉斯金字塔L0~L3按照上述的权重图分别加权融合得到新的拉普拉斯金字塔Px_L0~Px_L3。

伪代码如下,本质上,是每个像素按照各层的权重图加权。

Px_L0=P1_L0*(1.0-wei/255.0)+P2_L0*wei/255.0

Px_L1=P1_L1*(1.0-wei/255.0)+P2_L1*wei/255.0

Px_L2=P1_L2*(1.0-wei/255.0)+P2_L2*wei/255.0

Px_L3=P1_L3*(1.0-wei/255.0)+P2_L3*wei/255.0

随后,再执行拉普拉斯重建操作,得到最终融合的结果。重建操作具体如下:

Px_L2+=Px_L3按照高斯5x5模版上采样结果(宽高等于Px_L2的宽高)。

Px_L1+=Px_L2按照高斯5x5模版上采样结果(宽高等于Px_L1的宽高)。

Px_L0+=Px_L1按照高斯5x5模版上采样结果(宽高等于Px_L0的宽高)。

其中的高斯5x5模版如下:

int pdKernel[25]=

{1,4,6,4,1,

4,16,24,16,4,

6,24,36,24,4,

4,16,24,16,4,

1,4,6,4,1};

上采样操作,宽高为原来的一半,下采样也很类似,最终的结果就是Px_L0,这个图中的有效像素就是融合之后的条带,拷贝到用于存放全景视频图像的缓冲区即可。

需要说明的是,缝合线的条带中的像素(60万)相对整个全景视频帧像素(830万)是很少的,不能够为简单地为每个像素开一个线程,若该像素是需要处理的像素就做处理,否则返回。因为像素数量庞大,开的线程多了,GPU需要为每个线程块(一个线程块有不超过1024个线程,因不同型号GPU而异)拷贝参数,每个线程还需去GPU全局内存读取数据,会造成不小的时间开销,此时保证25帧的帧率就很困难了。实际操作上,需要记录每个带融合像素的位置、对应的图块、每个像素通过上/下采样得到时对应的像素位置及使用的高斯模版位置。在GPU中仅仅为这些像素开辟线程。这些在上述参数计算过程中均可以确定。因此,优选的,所述预设融合参数包括:每个待融合像素的位置及对应的图块,每个待融合像素通过下采样和上采样分别得到的对应的像素位置,以及所采用的高斯模板的位置。

需要说明的是,采用更多层拉普拉斯金字塔(比如8层,最高层加权4个像素宽度,则影响到最终的全景图上缝合线位置约5x 2^7=640像素宽度)可以获得更加理想的效果,但是由于分层处理步骤繁多,采用较多层数会直接导致计算量剧增,严重影响实时性。发明人经过试验,采用4层拉普拉斯金字塔,缝合线宽度40像素,涉及像素60万,帧率从32掉到了27,所以采用更多层(就得更宽范围)帧率就无法保持25fps以上了。此外,发明人还发现,采用4层拉普拉斯金字塔的融合效果已经足够理想,能够适用于广电级直播需求,因此本发明实施例中优选采用4层。

优选的,本发明实施例中条带式融合处理的相关操作是在YUV色彩空间下的Y分量进行的。其中“Y”表示明亮度(Luminance或Luma),也就是灰阶值;而“U”和“V”表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。因为U和V分量在缝合线两侧没有差异。Y分量的差异低于3-5像素,人眼就已经无法分辨,缝合线就不明显了。在上述6的操作下,已经实现了缝合线位置的无缝过渡,不会模糊也不会有亮度突变。

步骤230、获取待拼接的多路视频源数据。

步骤240、采用并行方式根据预设投影参数将对应于同一时刻的各视频源图像投影至预设全景投影面,得到由多个图块构成的全景投影视频图像。

步骤250、采用并行方式根据预设融合参数对位于图块重叠区内的预设缝合线进行条带式融合处理,并输出融合后的全景视频图像。

本实施例中,按照预设融合参数采用与步骤220相对应的融合方式对位于图块重叠区内的预设缝合线进行条带式融合处理。

本发明实施例对获取预设全景投影面、预设投影参数、预设缝合线和预设融合参数的具体方案进行了详述,利用最大流最小割定理计算每两个图块之间的最佳缝合线,并进一步采用了改进的拉普拉斯金字塔对缝合线条带进行融合,可实现缝合线位置的无缝过渡,有效提高了全景视频图像的拼接质量。

实施例三

图6为本发明实施例三提供的一种全景视频拼接方法的流程示意图,本实施例以上述实施例为基础进行优化,在本实施例中,在步骤“采用并行方式根据预设融合参数对位于图块重叠区内的预设缝合线进行条带式融合处理”之前,还包括:以图块重叠区的像素差异最小化为原则对各图块的亮度直方图进行平移调节操作,以减少各图块之间的亮度差异。

相应的,本实施例的方法包括如下步骤:

步骤610、获取多个视频采集设备的设备信息和多个视频采集设备所采集的对应于同一时刻的视频截图。

其中,所述设备信息包括焦距和设备所在位置。

步骤620、根据设备信息将所获取的视频截图拼接成全景图像,并记录拼接过程对应的投影平面、投影参数、最佳缝合线和融合参数,得到预设全景投影面、预设投影参数、预设缝合线和预设融合参数。

步骤630、获取待拼接的多路视频源数据。

步骤640、采用并行方式根据预设投影参数将对应于同一时刻的各视频源图像投影至预设全景投影面,得到由多个图块构成的全景投影视频图像。

步骤650、以图块重叠区的像素差异最小化为原则对各图块的亮度直方图进行平移调节操作,以减少各图块之间的亮度差异。

在上述实施例中采用多层拉普拉斯金字塔已经实现了缝合线位置的无缝过渡,不会模糊也不会有亮度突变。但存在一个问题是图块整体亮度差异可能会比较明显,36-48像素的过渡无法弥补太明显的亮度差异,需要对各图块的整理亮度进行调整,以减少各图块之间的亮度差异。

常用的亮度调整方法有直方图匹配法及匀光处理等方法,但是这些方法一般只适用于大范围场景,比如遥感图像。对于直播类等小范围场景,上述方法会造成灰度级丢失,结果造成图片质量欠佳。比如一张桌子看起来是一个颜色,其实有3-5个灰度,灰度级丢失就意味着可能只有1-2个灰度级,这时桌子就是一块一块的色块,没有过渡,很不自然。

本实施例中采用了全新的亮度调节方案,具体的,本步骤可包括:对于参考图块和待调节图块,分别计算图块重叠区的亮度直方图;利用候选平移参数值调整所述待调节图块的颜色映射表,得到第一颜色映射表;根据所述第一颜色映射表更新所述待调节图块的图块重叠区的亮度直方图;将对应于同一图块重叠区的图块记为匹配对,对于每个匹配对,将第一图块对应的图块重叠区的亮度直方图的亮度总和与第二图块对应的图块重叠区的亮度直方图的亮度总和的差值的绝对值作为亮度差异评价函数值;以各匹配对的亮度差异评价函数值的和最小为原则,得到每个待调节图块对应的目标平移参数值;利用目标平移参数值调整所述待调节图块的颜色映射表,得到第二颜色映射表;采用所述第二颜色映射表映射所述待调节图块中的每个像素,以实现对所述待调节图块的亮度直方图平移调节操作。

其中,对于每次平移调节操作,参考图块的数量可以为一个也可以为多个,待调节图块的数量可以为一个也可以为多个,具体可参照各图块之间的相互位置关系来确定。多个图块的亮度调节需要综合考虑差异,比如1-2,1-3,1-4,2-4,2-3,2-5,4-6以及5-6的图块重叠区,数字表示图块编号,“-”表示两个图块存在重叠。在以1为准调节亮度时,2、3、4要同时调整,以2-4和2-3作为约束,并计算总体亮度差异评价函数值,取此函数值最小时,2、3、4的亮度调节值为亮度调节结果。再对照2和4调整6的亮度,以5-6为约束。具体参考哪一路调整亮度可以指定。

上述亮度调节方案中,平移参数的表达式为:

Y=1/(1-X/255)-1

其中,Y为平移参数;X为亮度调节因子,其取值范围为[-100,100]。

图7为本发明实施例三提供的平移参数对应的曲线示意图,X用于表征亮度调节范围,值越大越亮越小越暗。Y的值是[-0.2817,0.6452]范围内的单调增函数,属于双曲线的一支。

对给定的亮度值X使用此公式计算得到一个Y值,利用平移参数值来调整颜色映射表的具体方式为用这个Y值乘以颜色映射表Z=[0:1:255],得到新的颜色映射表nZ=[0:1:255]+Y*[0:1:255]。使用nZ映射图块的任意像素点Px=nZ[Px],得到的图块亮度就会变量或变暗。这种曲线的特点是X=0位置亮度不变化,亮度调整在[-50,50]范围内亮度变化值受到抑制,属于微调,其余区间接近于线性变化。采用这种调节方式的好处在于,在光照并不复杂的场景,比如白天室外场景以及体育比赛场地等,摄像头拍摄出来的视频帧亮度差异并不大,只需要微调即可,能够减少运算量,保证全景视频图像输出的实时性。

优选的,在对于参考图块和待调节图块,分别计算图块重叠区的亮度直方图之前,还包括:利用特征点匹配和/或颜色匹配对各图块重叠区进行匹配操作,并按照预设条件筛选出有效的图块重叠区。

为了保证重叠区的有效,需要考虑到错位问题可能使得某些重叠区实际匹配的上的有效像素不多,此时使用特征点匹配和颜色匹配两种方式评价重叠区的有效性。快速特征匹配(比如harris或orb特征点匹配与ransac算法结合剔除错配点)对重叠区操作,对匹配点数量进行排序,取匹配点不低于中位数*0.9(不排除非常接近中位数的)的匹配对。使用颜色匹配是因为harris或orb特征点在梯度小的区域极少存在,而这样的大块区域往往是同名的像素点。具体做法是采用图切割法分别对A、B的重叠部分划分区域(每个区域称为一个子图块),设定一个像素阈值,比如重叠区像素的5%,用以剔除太小的子图块。对其他子图块分别计算U、V分量的颜色直方图,这样的子图块并不多,数量一般均在100以内,使用巴氏距离两两计算直方图距离,根据距离排序,取距离不大于中位数d_mid*0.9的匹配对,剔除像素数量悬殊的匹配对。计算这些匹配对涉及的像素总和sum_pix。

对U或V分量的直方图Ha和Hb,利用U、V分量计算出两个巴氏距离batt_U和batt_V,两个值相乘得到一个距离值batt=batt_U*batt_V。相乘的原因是两个分量上的巴氏距离都要比较大才能说明匹配较好。

对所有的有重叠区计算得到一个特征点匹配对数N1和匹配的像素总和N2。由于N1表征梯度大的区域的匹配点,N2表示的是梯度小的区域的匹配点,二者相加作为评价函数值Nx=N1+N2。

所有重叠区得到的Nx值排序,取不低于中位数m_Nx*0.9的重叠区进入下一步,调节图块亮度。

在进行图块亮度调节的具体操作上,先找到两个图块A、B之间的重叠像素(Pa和Pb,都在全景图的(x,y)位置)。然后,计算各自的颜色直方图(这里就是重叠区Y分量的直方图Ha和Hb)。考虑到误差存在导致错位,不宜直接使用Pa和Pb的值的差异作为亮度差异评价函数,更合适的办法是使用A、B在重叠区的亮度总和之差异,这样做的好处在于,真正的同名点之间的亮度值做差计算得以实现。例如以图块A(参考图块)为参照,调整图块B(待调节图块)的亮度。使用X的值对B计算颜色映射表,依照此表计算新的颜色直方图nHb。再将Ha和nHb的亮度总和之差的绝对值作为亮度差异评价函数值。

再比如以A为参照,调节B和C的亮度,同时,B和C之间有重叠区作为约束。需要注意的是,A和B之间的重叠区、A和C之间的重叠区、B和C之间的重叠区是不同的,对应的直方图对也是不同的,记作Hab_A和Hab_B、Hac_A和Hac_C、Hbc_B和Hbc_C。分别计算上述三个匹配对的亮度总和之差的绝对值,将三个绝对值的和作为亮度差异评价函数值。

如果B、C、D同时对A调整亮度,B和C、C和D、B和D之间有重叠区作为约束,也是与上面类似的做法。

按照上面的逻辑,假设参照A调整好了B、C、D,此时E与B、C、D均有重叠区,那么需要参照B、C、D调整E的亮度。在亮度可调节的范围内,同时调整Heb_E、Hec_E和Hed_E,使得它们分别与Heb_B、Hec_C和Hed_D的评价函数值之和最小。

同理,如果E、F与B、C、D同时有重叠区时,E和F对B、C、D同时调节亮度,亮度差异评价函数值之和取最小。若此时E和F还有重叠区作为约束,要在同时调节E和F的同时,将E和F之间的重叠区亮度差异评价函数值考虑进来,就像上述参照A调节B和C的亮度,有B和C之间的重叠区作为约束一样处理。

可以理解的是,一般2K视频输出的高清相机最多能有8-10台左右组成全景相机,输出4K到6K,更多的相机并不必要,因为8-10台广角相机足以覆盖水平360度和垂直360度,同时,GPU能处理到25帧以上帧率的的视频帧大小基本在6K以内,主板PCI总线的数据吞吐也几乎达到了极限。所以,虽然上述算法较为复杂,但由于上述硬件的限制,参照某一路相机调整其它相机视频帧的亮度,基本上有2~3次调节层次就可以覆盖全部相机。

比如第一层以0为准,调节1、2、3路,以1、2、3之间的重叠区作为约束。第二层,以1、2、3路为准,调节4、5、6、7路,以4~7路之间的重叠区作为约束。第二层可能会出现同时以1、2、3路为准,调节4、5路,以4、5的重叠区为约束,再以1、2、3中某1~2路为准,调节6、7路,以4、5与6、7之间的重叠区为约束。即以1~3路为准,与之有重叠区较多者优先。第二层也可能没有将4~7路调整完,仅调整了4~5路,这时出现第三层调整,以4~5为准,调节6~7路,同时以6~7路之间的重叠区为约束。

后续依次类推,如果图块已经全部调节完毕,就退出。一般情况下,能够拼成一个完整的全景图,一个图块至少与一个图块相邻,一个图块与之相邻的图块数量多数都在两个以上,即使经过上述的特征点匹配、颜色匹配筛选都是如此,出现某个图块没有调整的情况是不存在的。

简言之,已经调好亮度的图块,要么作为约束调整其它图块,要么调整其它图块时考虑与之的重叠区作为约束,力求总体亮度差异最小化。在此基础上,缝合线条带的金字塔融合才能将缝合线位置平滑过渡,实现实时的无缝拼接。

步骤660、采用并行方式根据预设融合参数对位于图块重叠区内的预设缝合线进行条带式融合处理,并输出融合后的全景视频图像。

本发明实施例提供的全景视频拼接方法,在对预设缝合线进行条带式融合处理之前,以图块重叠区的像素差异最小化为原则对各图块的亮度直方图进行平移调节操作,减少了各图块之间的亮度差异,使整帧全景视频图像的亮度均匀一致,实现无缝拼接,进一步保证了实时高质量全景视频的输出,更好地满足了广电级应用需求。

实施例四

图8为本发明实施例四提供的一种全景视频拼接装置的结构框图,该装置可由软件和/或硬件实现,一般集成在视频拼接设备中,可通过执行全景视频拼接方法来进行全景视频的拼接。如图8所示,该装置包括视频源数据获取模块81、投影模块82、融合模块83和全景视频输出模块84。

其中,视频源数据获取模块81,用于获取待拼接的多路视频源数据;投影模块82,用于采用并行方式根据预设投影参数将对应于同一时刻的各视频源图像投影至预设全景投影面,得到由多个图块构成的全景投影视频图像,其中,每个图块对应一个视频源图像,每两个图块之间的重叠部分构成图块重叠区;融合模块83,用于采用并行方式根据预设融合参数对位于图块重叠区内的预设缝合线进行条带式融合处理;全景视频输出模块84,用于输出融合后的全景视频图像。

本发明实施例提供的全景视频拼接装置,在获取到待拼接的多路视频源数据之后,采用并行方式对用于拼接全景视频图像的视频源图像进行投影及融合等处理,保证拼接效率,可增强全景视频输出的实时性;此外,采用预先计算好的投影参数、全景投影面、融合参数以及缝合线来进行相关处理,可减少视频拼接时的运算量,进一步提高拼接效率,同时由于上述参数等内容是预先计算好的,能够保证图像的高清晰度。因此,本发明实施例提供的技术方案能够兼顾全景视频的拼接效率及图像质量,保证所输出的全景视频具备较高的时效性和较佳的图像质量,可适用于广电级直播。

在上述实施例的基础上,该装置还包括:

数据获取模块,用于在所述获取待拼接的多路视频源数据之前,获取多个视频采集设备的设备信息和所述多个视频采集设备所采集的对应于同一时刻的视频截图,其中,所述设备信息包括焦距和设备所在位置;

图像拼接模块,用于根据所述设备信息将所获取的视频截图拼接成全景图像,并记录拼接过程对应的投影平面、投影参数、最佳缝合线和融合参数,得到预设全景投影面、预设投影参数、预设缝合线和预设融合参数。

在上述实施例的基础上,所述获取待拼接的多路视频源数据,包括:获取预设时间间隔内的相比上一时刻存在画面更新的多路视频源数据。

在上述实施例的基础上,所述并行方式包括:不同视频源图像采用不同的函数并行处理,同一视频源图像中的不同像素采用不同的线程并行处理。

在上述实施例的基础上,所述根据所述设备信息将所获取的视频截图拼接成全景图像,包括:对所获取的视频截图进行特征点匹配;根据所述设备信息和特征点匹配结果将所获取的视频截图投影至同一坐标系下并展开,得到由多个图块构成的全景投影图像,其中,每个图块对应一个视频截图,每两个图块之间的重叠部分构成图块重叠区;利用最大流最小割定理计算每两个图块之间的最佳缝合线,其中,以图块重叠区的梯度值作为图块重叠区内像素的权重值;对所述最佳缝合线进行条带式融合处理。

在上述实施例的基础上,所述对所述最佳缝合线进行条带式融合处理,包括:按照预设像素宽度对所述最佳缝合线进行拓宽,得到缝合线条带;利用多层拉普拉斯金字塔对所述缝合线条带进行融合。

在上述实施例的基础上,所述预设融合参数包括:每个待融合像素的位置及对应的图块,每个待融合像素通过下采样和上采样分别得到的对应的像素位置,以及所采用的高斯模板的位置。

在上述实施例的基础上,该装置还包括:

亮度调节模块,用于在采用并行方式根据预设融合参数对位于图块重叠区内的预设缝合线进行条带式融合处理之前,以图块重叠区的像素差异最小化为原则对各图块的亮度直方图进行平移调节操作,以减少各图块之间的亮度差异。

在上述实施例的基础上,所述亮度调节模块具体用于:在采用并行方式根据预设融合参数对位于图块重叠区内的预设缝合线进行条带式融合处理之前,对于参考图块和待调节图块,分别计算图块重叠区的亮度直方图;利用候选平移参数值调整所述待调节图块的颜色映射表,得到第一颜色映射表;根据所述第一颜色映射表更新所述待调节图块的图块重叠区的亮度直方图;将对应于同一图块重叠区的图块记为匹配对,对于每个匹配对,将第一图块对应的图块重叠区的亮度直方图的亮度总和与第二图块对应的图块重叠区的亮度直方图的亮度总和的差值的绝对值作为亮度差异评价函数值;以各匹配对的亮度差异评价函数值的和最小为原则,得到每个待调节图块对应的目标平移参数值;利用目标平移参数值调整所述待调节图块的颜色映射表,得到第二颜色映射表;采用所述第二颜色映射表映射所述待调节图块中的每个像素,以实现对所述待调节图块的亮度直方图平移调节操作。

在上述实施例的基础上,平移参数的表达式为:

Y=1/(1-X/255)-1

其中,Y为平移参数;X为亮度调节因子,其取值范围为[-100,100]。

在上述实施例的基础上,所述亮度调节模块还用于:

在对于参考图块和待调节图块,分别计算图块重叠区的亮度直方图之前,利用特征点匹配和/或颜色匹配对各图块重叠区进行匹配操作,并按照预设条件筛选出图块重叠区的有效部分。

上述实施例中提供的全景视频拼接装置可执行本发明任意实施例所提供的全景视频拼接方法,具备执行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的全景视频拼接方法。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1