首页 / 专利库 / 显示技术 / 视差 / 大视差场景下基于自身单应性变换的实时视频拼接方法

视差场景下基于自身单应性变换的实时视频拼接方法

阅读:66发布:2020-05-08

专利汇可以提供视差场景下基于自身单应性变换的实时视频拼接方法专利检索,专利查询,专利分析的服务。并且本 发明 提供了大 视差 场景下基于自身单应性变换的实时视频拼接方法,本发明非常适用于大视差场景下的视频拼接,因为视差会造成两路视频中前景和背景位移明显,该方法将前景和背景先分别拼接好,再前景和背景拼接结果融合,可以有效避免重影和错位,提升视频拼接效果;且如果待拼接视频当前 帧 只含背景时,背景通常是静止不动的,则可以提取出一个拼接模板。对于后续只含背景的帧,直接采用该模板拼接,压缩计算量加快拼接速度。,下面是视差场景下基于自身单应性变换的实时视频拼接方法专利的具体信息内容。

1.大视差场景下基于自身单应性变换的实时视频拼接方法,其特征在于,包括如下步
骤:
步骤1,读取两路待拼接视频,两路待拼接视频的当前分别为M1和M2,判断,两路当前
帧M1和M2中是否存在前景,如果两路当前帧M1和M2都存在前景,执行下列步骤2;如果两路当前帧M1和M2都不存在前景,执行步骤5;
步骤2,两路待拼接视频的当前帧M1和M2的前景区域分别为fore(M1)和fore(M2),融合
前景区域fore(M1)和fore(M2);
步骤3,两路待拼接视频的当前帧M1和M2的背景区域分别为back(M1)和back(M2),融合
背景区域back(M1)和back(M2);
步骤4,进行完整的前景区域和背景区域融合;
步骤5,初始化拼接模板:两路待拼接视频的当前帧M1和M2中只存在背景时,初始化作
为后续只含背景帧的拼接模板;
步骤6,利用拼接模板拼接两路待拼接视频的当前帧M1和M2。
2.如权利要求1所述的方法,其特征在于,步骤1包含以下步骤:
步骤1-1,打开两路待拼接视频,并判断视频打开是否成功,如果打开成功,获取视频的
帧率fps,视频的格式fourcc,以及视频的帧宽度frameW和帧高度frameH;如果打开失败,再尝试一次打开两路待拼接视频,若连续失败,则返回打开视频失败信息,不进行后续步骤,直到两路待拼接视频打开成功;
步骤1-2,分别从两路待拼接视频流中读取当前帧M1和M2;步骤1-3,通过背景差分法对
M1和M2分别分割前后景:视频中只包含固定背景的视频帧当作背景模型M,然后对视频当前帧M’与背景模型M做差分,差值小于阈值像素是背景,其他像素是前景:
其中,fore为当前帧M’的前景区域,fore(x,y)表示前景区域里横纵坐标为x和y的像素
点,M(x,y)表示背景模型M里横纵坐标分别为x和y的像素点,T为阈值;根据上述公式得到M1的前景区域fore(M1),M1的背景区域back(M1),M2的前景区域fore(M2),M2的背景区域back(M2)。
3.如权利要求2所述的方法,其特征在于,步骤2包括以下步骤:
步骤2-1,采用逼近投影算法,对当前帧M1的前景区域和M2的前景区域进行图像对齐;
步骤2-2,提取出fore(M1)和fore(M2)的重叠区域;
步骤2-3,对fore(M1)和fore(M2)的重叠区域做多频带融合,得到最终fore(M1)和fore
(M2)的拼接结果。
4.如权利要求3所述的方法,其特征在于,步骤2-1包括:
步骤2-1-1:将两路待拼接视频的当前帧M1和M2分别转换为灰度图g1和g2,分别提取灰
度图g1和g2的SURF特征点;
步骤2-1-2,利用近似最近邻快速搜索FLANN算法,得到灰度图g1任意特征点m1在灰度图
g2上的k个距离最近的对应特征点ni,i=1,2,...,k;
步骤2-1-3,采用劳氏算法Lowe’s algorithm来获取优秀匹配点:当dist1dist2成立时,保留具有最小距离的匹配点对(m1,n1),否则抛弃;其中dist1表示灰度图g2上任一特征点和当前特征点m1最接近的欧式特征距离,即n1和m1的欧式距离;dist2表示灰度图g2上任一特征点和当前特征点m1次接近的欧式特征距离,即n2和m1的欧式距离;ratio为筛选系数;
步骤2-1-4,对灰度图g2中特征点使用近似最近邻快速搜索和劳氏算法处理,得到灰度
图g2灰度到图g1的匹配点对(n1,m2),如果m1=m2,匹配成功,否则抛弃;最终得到初步筛选后匹配点集pointSet;
步骤2-1-5,从匹配点集pointSet中,根据每一对匹配点的横纵坐标值(x_i,y_i),(x_
i',y_i'),其中i从1到N,N是pointSet中的点的个数,得到:
矩阵
步骤2-1-6,将灰度图g2划分成C1xC2个网格,然后计算每个网格中心点x*的单应性矩阵
h*:
其中, 表示网格中心点x*和匹配点集pointSet中的每个点x_i间的权
2N*2N
值,||h||=1,W*∈R ,
h*的解即是W*A最小奇异值所对应的右奇异向量;
步骤2-1-7,图像g2划分成的C1 x C2个网格,然后将每个网格内的所有像素点都用该
网格中心点x*的单应性矩阵h*变换得到对应点,即g2上任一点(u,v,z)与它所在网格中心点对应的单应性矩阵h*相乘变换得到对应点(x’,y’,z’):
变换公式:
其中,h*33表示单应性矩阵h*的第三行第三列元素,归一化最终得到图像g2上的点(u,v,
z)对齐到图像g1上的坐标(x,y):
图像g2即变换到了目标图像g1的坐标系下,也即M2的前景区域fore(M2)变换到了M1的
前景区域fore(M1)坐标系下。
5.如权利要求4所述的方法,其特征在于,步骤2-2包括:
步骤2-2-1,为fore(M1)和fore(M2)准备掩膜图像,在fore(M1)坐标系下,属于fore
(M1)及变换过来的fore(M2)的掩膜像素值设为1,不属于fore(M1)及变换过来的fore(M2)
的掩膜像素值设为0;
步骤2-2-2,双目图像中前景目标的位置大小都不相同,为了使前景目标在图像拼接后
保持完整,需要对前景图像进行分割,融合,拼接处理。即fore(M2)的左上,左下,右上,右下四个点:PleftTop,PleftBottom,PrightTop,PrightBottom,通过相应单应性矩阵h*,经过公式fore’(M2)(x,y)=h**fore(M2)(x,y)变换,得到它们在fore(M1)坐标下的四个对应点P’leftTop,P’leftBottom,P’rightTop,P’rightBottom。这时fore(M1)的左上,左下,右上,右下四个角点分别为OleftTop,OleftBottom,OrightTop,OrightBottom。则重叠区域Rectoverlap为:
Rectoverlap.start_x=min(P’leftTop.x,P’leftBottom.x),
Rectoverlap.start_y=min(P’leftTop.y,P’rightTop.y),
Rectoverlap.width=max(OrightTop.x,OrightBottom.x)-Rectoverlap.start_x,
Rectoverlap.height=max(OleftBottom.y,OrightBottom.y)-Rectoverlap.start_y。
start_x和start_y即矩形区域Rectoverlap的左上角点的横纵坐标值,height即矩形区域
Rectoverlap的高度,width即矩形区域Rectoverlap的宽度;x,y即相应点的横纵坐标值;
至此得到了fore(M1)和fore(M2)的重叠区域Rectoverlap;除了重叠区域外,还可能在实
际fore(M1)和fore(M2)拼接中存在四个边角矩形,分别是RectleftCorner,RectrightCorner,RecttopCorner,RectbottomCorner,它们是fore(M1)和fore(M2)中没有被重叠的矩形区域,则最终fore(M1)和fore(M2)的拼接结果是这四个没有被重叠的边角矩形RectleftCorner,
RectbottomCorner,RectrightCorner,RecttopCorner按逆时针排列,中间内嵌重叠区域Rectoverlap所组成的完整图像。
6.如权利要求5所述的方法,其特征在于,步骤2-3包括:
步骤2-3-1,对用于多频带融合的两张图像逐步下采样得到图像的高斯金字塔:设重叠
区域Rectoverlap在原图像fore(M1)上为fore_overlap(M1),在原图像fore(M2)上为fore_
overlap(M2)。对fore_overlap(M1)和fore_overlap(M2)逐步下采样获得它们的高斯金字
塔;高斯金字塔通过高斯滤波和亚采样实现,高斯金字塔最底层图像G0即要处理的原图
fore_overlap(M1)或fore_overlap(M2);再利用高斯核(5*5矩阵)对G0进行卷积,然后对卷积后的图像删除其偶数行和列,即下采样,就得到了高斯金字塔第二层图像G1;G1的大小即G0的四分之一,又以G1为输入,重复卷积和下采样操作得到更上一层的图像,反复迭代
次,形成图像的完整高斯金字塔;
步骤2-3-2,对用于多频带融合的两张图像逐步上采样得到图像的拉普拉斯金字塔:在
高斯金字塔的运算过程中,图像经过卷积和下采样操作会丢失部分高频细节,为了描述这
些细节,定义了拉普拉斯金字塔;第K层拉普拉斯金字塔通过第K层高斯金字塔减去第K+1层高斯金字塔上采样、卷积得到:
LK即拉普拉斯金字塔第K层,GK即高斯金字塔第K层,GK+1即高斯金字塔第K+1层,Up函数
将原图像每个维度放大为2倍,新增的偶数行以0填充,g为5*5高斯核矩阵;
重叠区域Rectoverlap在原图像fore(M1)上为fore_overlap(M1),在原图像fore(M2) 上
为fore_overlap(M2);对fore_overlap(M1)和fore_overlap(M2)分别计算拉普拉斯金字
塔,然后将金字塔每层图像融合:
LSK=LAK×maskk+LBK×(1-maskk),
其中,LSK是结果图像的第K层拉普拉斯金字塔图像,LAK,LBK分别为fore_overlap(M1)
和fore_overlap(M2)第K层拉普拉斯图像,maskK是用于融合的掩膜图像。掩膜图像左半部
分值为1,右半部分值为0,同时中间部分作为过滤带,值为:
y∈[0,heightK],
其中,weightK,heightK分别为第K层拉普拉斯图像的宽度和高度;于是,重叠图像的拉
普拉斯金字塔逐层融合后得到一个新的拉普拉斯金字塔;
步骤2-3-3,得到多频带融合的最终结果:将步骤2-3-2所得拉普拉斯金字塔所有层叠
加到一起,得到多频带融合的最终结果:
LSresult=resize(LS0,sz)+...+resize(LSK,sz)+...+resize(LSN,sz),
其中,LSresult是多频带融合的结果,LSK是第K层拉普拉斯金字塔,resize用于对图像做
缩放处理,sz是重叠图像的大小,N是拉普拉斯金字塔的层数;在步骤2-2-2得到的两路前景图像fore(M1)和fore(M2)的完整拼接结果基础上,经过步骤2-3的多频带融合处理,融合出了完整的前景图像。
7.如权利要求6所述的方法,其特征在于,步骤3包括以下步骤:
步骤3-1,采用逼近投影算法,对两路视频流中读取的当前帧M1和M2的背景区域back
(M1)和back(M2)进行对齐;
步骤3-2,背景区域back(M1)和back(M2)对齐后,需要对背景区域进行修补,通过图像
对齐算法对齐后,只需要将对应像素赋值,即能够填补背景左图和右图的部分前景空洞;
步骤3-3,提取出背景区域back(M1)和back(M2)的重叠区域;
步骤3-4,对back(M1)和back(M2)的重叠区域做多频带融合,得到最终back(M1)和back
(M2)的拼接结果。
8.如权利要求7所述的方法,其特征在于,步骤3-3包括:
步骤3-3-1,为back(M1)和back(M2)准备掩膜图像:在back(M1)坐标系下,属于back
(M1)及变换过来的back(M2)的掩膜像素值设为1,不属于back(M1)及变换过来的back(M2)
的掩膜像素值设为0;
步骤3-3-2,提取出背景图像back(M1)和back(M2)的重叠区域:back(M2)的左上,左下,
右上,右下四个角点:PleftTop,PleftBottom,PrightTop,PrightBottom,通过相应单应性矩阵h*,经过公式back’(M2)(x,y)=h**back(M2)(x,y)变换,得到它们在back(M1)坐标下的四个对应点
P’leftTop,P’leftBottom,P’rightTop,P’rightBottom;这时back(M1)的左上,左下,右上,右下四个角点分别为OleftTop,OleftBottom,OrightTop,OrightBottom;则重叠区域Rectoverlap为:
Rectoverlap.start_x=min(P’leftTop.x,P’leftBottom.x),
Rectoverlap.start_y=0,
Rectoverlap.width=OrightTop.x-OleftTop.x-Rectoverlap.start_x,
Rectoverlap.height=min(OleftBottom.y-OleftTop.y,PleftBottom.y-PleftTop.y),
start_x和start_y即矩形区域Rectoverlap的左上角点的横纵坐标值,height即矩形区域
Rectoverlap的高度,width即矩形区域Rectoverlap的宽度。x,y即相应点的横纵坐标值。
9.如权利要求8所述的方法,其特征在于,步骤4包括以下步骤:
步骤4-1,在前景目标上选取一个基准点base,在背景空洞上选取另一个基准点base':
首先要在前景目标上选取一个基准点base,在背景空洞上选取另一个基准点base',在前背景融合中选用的基准点集包括:前景重心点foregravity,背景重心点backgravity;前景中心点forecenter,背景中心点backcenter;前景中的左上角点foreLT,背景中的左上角点backLT;前景中的右上角点foreRT,背景中的右上角点backRT;基准点的位置通过掩膜来计算,前景掩膜中前景目标和背景掩膜中的前景空洞都是非0元素,其他区域是0元素,基准点位置即各点
的横纵坐标计算公式如下:
其中,foreXMIN、foreXMAX、foreYMIN、foreYMAX、foreXi、foreYi依次是前景目标横坐标最小值、横坐标最大值、纵坐标最小值、纵坐标最大值、任意点横坐标和任意点纵坐标;同样,backXMIN、backXMAX、backYMIN、backYMAX、backXi、backYi是背景空洞上的对应值;
步骤4-2,前景和背景融合:基于base点的像素值赋值到base'后,将前景掩膜中的非0
像素值一一赋值到背景区域上,具体即前景目标上的任一非0像素点,先求得其和基准点
base的横纵坐标差值,然后将基准点base'加上这个差值得到一个横纵坐标对,再把前景目标上的这个像素点的像素值赋值给这个横纵坐标对。
10.如权利要求9所述的方法,其特征在于,步骤5包括以下步骤:
步骤5-1,采用逼近投影算法,对M1和M2进行图像对齐;
步骤5-2,提取出当前帧M1和M2的重叠区域;
步骤5-3,融合M1和M2的重叠区域并得到最终M1和M2的拼接结果;
步骤5-4,保存当前M1和M2融合的拼接模板,即保存M1和M2进行图像对齐中的每个网格
中心点x*的单应性矩阵h*。

说明书全文

视差场景下基于自身单应性变换的实时视频拼接方法

技术领域

[0001] 本发明属于计算机视觉图像处理、多媒体信息技术等领域,尤其涉及大视差场景下基于自身单应性变换的实时视频拼接方法。

背景技术

[0002] 视频拼接指将多路具有重叠区域的小视野视频拼接成一路完整大视野视频,有效解决了单个摄像头视野的局限,在虚拟现实、智能监控等领域有着广泛的应用。在城市中,大量的摄像头被安装用于消除隐患,保卫人民群众生命财产安全;同样,在当前热点的智慧城市建设中,摄像头是发挥着首要作用的“眼睛”。但诸如道路、行政大厅、商场等场合需要同时安装多个摄像头进行监控,导致相关人员需要同时关注多路监控视频,而且多路监控
视频不利于视频后续的处理和分析。在这样的背景下,需要将多路视频拼接成一路完整视
频。
[0003] 在视频拼接的现实使用场景中,可能存在大视差的情况。即同一目标在两个摄像机内所处的位置不一样,且位移较明显,通常这个目标是距离摄像机很近的前景目标。现实生活中也有常识,物体离观察者越近,两只眼睛看到的物体位置差异越大,这种情况在两个摄像头中同样存在。如果采用主流的视频拼接方法对这类大视差场景做视频拼接,要么只
能对齐前景或后景中的一个平面而忽略其他平面,造成重影错位等现象;要么从全局
把很多相差很大的平面依然对齐结合,造成视觉上不自然。
[0004] 因此,针对大视差场景下采用特定的实时拼接方法是非常有必要的。

发明内容

[0005] 发明目的:解决在大视差场景下进行视频拼接的问题,提供一种基于自身单应性变换的实时视频拼接方法,能有效消除大视差场景下因为两路待拼接视频中前背景位移明
显而造成视频拼接中的重影错位现象。
[0006] 技术方案:本发明公开了一种大视差场景下基于自身单应性变换的实时视频拼接方法,其核心在于:判断若待拼接两路视频当前存在前景,则将两路视频当前帧的前景和背景分割;对两个前景区域和背景区域都采用图像对齐、提取重叠区域、多频带融合重叠区域的步骤融合好;再将融合好的前景图像填补到背景图像的空洞上;判断若两路视频当前
帧不存在前景,则只需要融合背景,背景融合都可采用一个相同的模板,加快拼接速度。具体包括以下步骤:
[0007] 步骤1,读取两路待拼接视频,判断它们当前帧中是否存在前景:从两路待拼接视频中分别读取当前帧M1和M2,通过差分背景法分别判断M1和M2中每个像素点属于前景还是
背景,进而判断出当前帧中是否存在前景;
[0008] 步骤2,若判断出两路当前帧M1和M2都存在前景,融合帧中的前景区域fore(M1)和fore(M2):采用APAP逼近投影算法,对两个前景区域对齐;对齐后提取出fore(M1)和fore
(M2)的重叠区域;对重叠区域做多频带融合,并得到帧中前景区域fore(M1)和fore(M2)的
融合结果;
[0009] 步骤3,若判断出两路当前帧M1和M2都存在前景,融合帧中的背景区域back(M1)和back(M2):采用APAP逼近投影算法,对两个背景区域对齐;对对齐后对因前背景分割在背景区域中造成的空洞进行修补;提取出back(M1)和back(M2)的重叠区域;对重叠区域做多频
带融合,并得到帧中背景区域back(M1)和back(M2)的融合结果;
[0010] 步骤4,完整的前景区域和背景区域融合:在前景目标上选取一个基准点base,在背景空洞上选取另一个基准点base';基于这两个基准点将完整的前景区域和背景区域融
合,让前景覆盖背景中因分割前背景造成的空洞;
[0011] 步骤5,若判断出两路当前帧M1和M2不存在前景,初始化拼接模板:M1和M2中只存在背景时,因为视频中背景几乎是静止不动的,则图像对齐所用的单应性矩阵,重叠区域都是可以复用的,保存下来作为后续只含背景帧拼接的模板;
[0012] 步骤6,若判断出两路当前帧M1和M2不存在前景,利用拼接模板拼接M1和M2;
[0013] 其中,步骤1包含以下步骤:
[0014] 步骤1-1,打开两路待拼接视频并判断视频打开是否成功,如果打开成功,获取视频的帧率fps,视频的格式fourcc,以及视频的帧宽度frameW和帧高度frameH;如果打开失败,再尝试一次打开两路待拼接视频,若连续失败,则返回打开视频失败信息,不进行后续步骤,直到两路待拼接视频打开成功;
[0015] 步骤1-2,分别从两路视频流中读取当前帧M1和M2;
[0016] 步骤1-3,通过背景差分法对M1和M2分别分割前后景。视频中只包含固定背景的视频帧当作背景模型M,然后对视频当前帧M’与背景模型M做差分,差值小于阈值的像素是背景,其他像素是前景:
[0017]
[0018] 其中,fore为当前帧M’的前景区域,fore(x,y)表示前景区域里横纵坐标为x和y的像素点,M(x,y)表示背景模型M里横纵坐标分别为x和y的像素点,T为阈值:可以根据人工经验选择,如一般设为40即可;也可以根据最大类间方法差(OTSU法)更精确的计算出一个最佳阈值T。根据上述公式得到M1的前景区域fore(M1),M1的背景区域back(M1),M2的前景区域fore(M2),M2的背景区域back(M2)。
[0019] 步骤2包括以下步骤:
[0020] 步骤2-1,采用逼近投影算法(参考文章Adaptive as-natural-as-possible image stitching),对当前帧M1的前景区域和M2的前景区域进行图像对齐;
[0021] 步骤2-1-1:将两路待拼接视频的当前帧M1和M2分别转换为灰度图g1和g2,分别提取灰度图g1和g2的SURF(speed up robust feature)特征点(参考文章SURF:Speeded Up 
Robust Features);
[0022] 步骤2-1-2,利用近似最近邻快速搜索FLANN算法(参考文章Fast Approximate Nearest Neighbors with Automatic Algorithm Configuration),得到灰度图g1任意特
征点m1在灰度图g2上的k个距离最近的对应特征点ni(i=1,2,...,k);通常k=2;则n1就表示灰度图g2上和特征点m1欧式特征距离最接近的特征点,n2就表示灰度图g2上和特征点m1
欧式特征距离次接近的特征点;
[0023] 步骤2-1-3,采用劳氏算法Lowe’s algorithm来获取优秀匹配点(参考文章Distinctive Image Features from Scale-Invariant Keypoints):当dist1dist2成立时,保留具有最小距离的匹配点对(m1,n1),否则抛弃;其中dist1表示灰度图g2上任一特征点和当前特征点m1最接近的欧式特征距离,即n1和m1的欧式距离;dist2表示灰度图g2上任一特征点和当前特征点m1次接近的欧式特征距离,即n2和m1的欧式距离;ratio为筛选系数,本方法中设为0.6,
[0024] 步骤2-1-4,对灰度图g2中特征点使用近似最近邻快速搜索和劳氏算法处理,得到灰度图g2到灰度图g1的匹配点对(n1,m2),如果m1=m2,匹配成功,否则抛弃;最终得到初步筛选后匹配点集pointSet;
[0025] 步骤2-1-5,从匹配点集pointSet中,根据每一对匹配点的横纵坐标值(x_i,y_i),(x_i',y_i'),其中i从1到N,N是pointSet中的点的个数,得到:
[0026] 矩阵
[0027] 步骤2-1-6,将灰度图g2划分成C1xC2个网格,一般性的灰度图g2尺寸是1920*1080像素,则可取C1和C2值都为20,即灰度图g2划分成20*20个网格。然后计算每个网格中心点x*的单应性矩阵h*:
[0028]
[0029] 其中, 表示网格中心点x*和匹配点集pointSet中的每个点x_i间的权值,||h||=1,W*∈R2N*2N,
[0030] h*的解即是W*A最小奇异值所对应的右奇异向量。
[0031] 步骤2-1-7,图像g2划分成的C1 x C2个网格,然后将每个网格内的所有像素点都用该网格中心点x*的单应性矩阵h*变换得到对应点,即g2上任一点(u,v,z)与它所在网格中心点对应的单应性矩阵h*相乘变换得到对应点(x’,y’,z’):
[0032] 变换公式: z=1
[0033] 其中,h*33表示单应性矩阵h*的第三行第三列元素,归一化最终得到图像g2上的点(u,v,z)对齐到图像g1上的坐标(x,y):
[0034]
[0035] 图像g2即变换到了目标图像g1的坐标系下,也即M2的前景区域fore(M2)变换到了M1的前景区域fore(M1)坐标系下;
[0036] 步骤2-2,提取出fore(M1)和fore(M2)的重叠区域;
[0037] 步骤2-2-1,为fore(M1)和fore(M2)准备掩膜图像,在fore(M1)坐标系下,属于fore(M1)及变换过来的fore(M2)的掩膜像素值设为1,不属于fore(M1)及变换过来的fore
(M2)的掩膜像素值设为0;
[0038] 步骤2-2-2,双目图像中前景目标的位置大小都不相同,为了使前景目标在图像拼接后保持完整,需要对前景图像进行分割,融合,拼接处理。即fore(M2)的左上,左下,右上,右下四个角点:PleftTop,PleftBottom,PrightTop,PrightBottom,通过相应单应性矩阵h*,经过公式fore’(M2)(x,y)=h**fore(M2)(x,y)变换,得到它们在fore(M1)坐标下的四个对应点
P’leftTop,P’leftBottom,P’rightTop,P’rightBottom。这时fore(M1)的左上,左下,右上,右下四个角点分别为OleftTop,OleftBottom,OrightTop,OrightBottom。则重叠区域Rectoverlap为:
[0039] Rectoverlap.start_x=min(P’leftTop.x,P’leftBottom.x),
[0040] Rectoverlap.start_y=min(P’leftTop.y,P’rightTop.y),Rectoverlap.width=max(OrightTop.x,OrightBottom.x)-Rectoverlap.start_x,
[0041] Rectoverlap.height=max(OleftBottom.y,OrightBottom.y)-Rectoverlap.start_y。
[0042] start_x和start_y即矩形区域Rectoverlap的左上角点的横纵坐标值,height即矩形区域Rectoverlap的高度,width即矩形区域Rectoverlap的宽度;x,y即相应点的横纵坐标值;
[0043] 至此得到了fore(M1)和fore(M2)的重叠区域Rectoverlap。除了重叠区域外,还可能在实际fore(M1)和fore(M2)拼接中存在四个边角矩形,分别是RectleftCorner,RectrightCorner,RecttopCorner,RectbottomCorner,它们是fore(M1)和fore(M2)中没有被重叠的矩形区域。则最终fore(M1)和fore(M2)的拼接结果是这四个没有被重叠的边角矩形RectleftCorner,RectbottomCorner,RectrightCorner,RecttopCorner按逆时针排列,中间内嵌重叠区域Rectoverlap所组成的完整图像;
[0044] 步骤2-3,对fore(M1)和fore(M2)的重叠区域做多频带融合(参考文章A multiresolution spline with application to image mosaics),使fore(M1)和fore
(M2)融合效果更自然,得到最终fore(M1)和fore(M2)的拼接结果。多频带融合从尺度维度
来融合图像,不仅可以使边界区域过渡自然而且融合结果具有视觉一致性。
[0045] 步骤2-3包括:
[0046] 步骤2-3-1,对用于多频带融合的两张图像逐步下采样得到图像的高斯金字塔:设重叠区域Rectoverlap在原图像fore(M1)上为fore_overlap(M1),在原图像fore(M2)上为
fore_overlap(M2)。对fore_overlap(M1)和fore_overlap(M2)逐步下采样获得它们的高斯
金字塔。高斯金字塔包含图像的不同尺度,可用于模拟人类的视觉特性,近距离观察图像
时,图像较大且细节清晰,这就是高斯金字塔的底层高分辨率图像表示;远距离观察图像
时,图像较小且画面模糊,这就是高斯金字塔的顶层分辨率图像表示。高斯金字塔通过高斯滤波和亚采样实现,高斯金字塔最底层图像G0即要处理的原图fore_overlap(M1)或fore_
overlap(M2)。再利用高斯核(5*5矩阵)对G0进行卷积,然后对卷积后的图像删除其偶数行
和列,即下采样,就得到了高斯金字塔第二层图像G1。G1的大小即G0的四分之一,又以G1为输入,重复卷积和下采样操作得到更上一层的图像,反复迭代多次,例如10次,形成图像的完整高斯金字塔。
[0047] 步骤2-3-2,对用于多频带融合的两张图像逐步上采样得到图像的拉普拉斯金字塔。在高斯金字塔的运算过程中,图像经过卷积和下采样操作会丢失部分高频细节,为了描述这些细节,定义了拉普拉斯金字塔。第K层拉普拉斯金字塔通过第K层高斯金字塔减去第K+1层高斯金字塔上采样、卷积得到:
[0048]
[0049] LK即拉普拉斯金字塔第K层,GK即高斯金字塔第K层,GK+1即高斯金字塔第K+1层,Up函数将原图像每个维度放大为2倍,新增的偶数行以0填充,g为5*5高斯核矩阵。
[0050] 重叠区域Rectoverlap在原图像fore(M1)上为fore_overlap(M1),在原图像fore(M2)上为fore_overlap(M2)。对fore_overlap(M1)和fore_overlap(M2)分别计算拉普拉斯
金字塔,然后将金字塔每层图像融合:
[0051] LSK=LAK×maskk+LBK×(1-maskk),
[0052] 其中,LSK是结果图像的第K层拉普拉斯金字塔图像,LAK,LBK分别为fore_overlap(M1)和fore_overlap(M2)第K层拉普拉斯图像,maskK是用于融合的掩膜图像。掩膜图像左半部分值为1,右半部分值为0,同时中间部分作为过滤带,值为:
[0053]
[0054] y∈[0,heightK],
[0055] 其中,weightK,heightK分别为第K层拉普拉斯图像的宽度和高度。于是,重叠图像的拉普拉斯金字塔逐层融合后得到一个新的拉普拉斯金字塔;
[0056] 步骤2-3-3,得到多频带融合的最终结果:将步骤2-3-2所得拉普拉斯金字塔所有层叠加到一起,得到多频带融合的最终结果:
[0057] LSresult=resize(LS0,sz)+...+resize(LSK,sz)+...+resize(LSN,sz),
[0058] 其中,LSresult是多频带融合的结果,LSK是第K层拉普拉斯金字塔,resize用于对图像做缩放处理,sz是重叠图像的大小,N是拉普拉斯金字塔的层数。实际操作过程中,要注意图像分解的层数问题。层数越多算法越复杂,相应的时间需求越高,层数少的话融合效果不够自然。一般情况下,将图像分解5层能够较好平衡时间消耗和融合效果。这样,在步骤2-2-2得到的两路前景图像fore(M1)和fore(M2)的完整拼接结果基础上,经过步骤2-3的多频带
融合处理,使得拼接结果视觉上更自然,于是融合出了完整的前景图像。
[0059] 步骤3包括以下步骤:
[0060] 步骤3-1,采用逼近投影算法,对两路视频流中读取的当前帧M1和M2的背景区域back(M1)和back(M2)进行对齐:具体算法及操作和前景图像对齐完全一样,参见步骤2-1;
[0061] 步骤3-2,背景区域back(M1)和back(M2)对齐后,需要对背景区域进行修补。因为背景图像中的前景目标被提取后,会在前景目标所在的区域形成一个空洞,如果直接以这
样的图像进行背景拼接,那么因为前景和背景其实不在一个平面上,按背景平面去对齐,两张图像上的前景空洞区域是不能对齐的,反而背景对齐后这空洞会比两张图像上任何一
张都大。而如果以这样的背景融合结果,最后和前景融合结果拼起来得到最终结果,会发现前景融合的结果不能完全填补背景上的这块空洞。所以在这里要对对齐后的背景图像进行
修补,尽量减少空洞区域。处理方式即通过将两张有空洞的背景区域相互赋值。因为在大视差场景下,双目图像的视差位移大。左图的前景空洞区域可能部分出现在右图没有空洞的
区域,同样右图的前景空洞区域可能部分出现在左图没有空洞的区域,于是通过图像对齐
算法(参见步骤2-1)对齐后,只需要将对应像素赋值,即可填补背景左图和右图的部分前景空洞,这对于后续的前背景区域融合得到的最终结果减少空洞很有用处。
[0062] 步骤3-3,提取出背景区域back(M1)和back(M2)的重叠区域;
[0063] 步骤3-3-1,为back(M1)和back(M2)准备掩膜图像:在back(M1)坐标系下,属于back(M1)及变换过来的back(M2)的掩膜像素值设为1,不属于back(M1)及变换过来的back
(M2)的掩膜像素值设为0;
[0064] 步骤3-3-2,提取出背景图像back(M1)和back(M2)的重叠区域:back(M2)的左上,左下,右上,右下四个角点:PleftTop,PleftBottom,PrightTop,PrightBottom,通过相应单应性矩阵h*,经过公式back’(M2)(x,y)=h**back(M2)(x,y)变换,得到它们在back(M1)坐标下的四个对应点P’leftTop,P’leftBottom,P’rightTop,P’rightBottom。这时back(M1)的左上,左下,右上,右下四个角点分别为OleftTop,OleftBottom,OrightTop,OrightBottom。则重叠区域Rectoverlap为:
[0065] Rectoverlap.start_x=min(P’leftTop.x,P’leftBottom.x),
[0066] Rectoverlap.start_y=0,
[0067] Rectoverlap.width=OrightTop.x-OleftTop.x-Rectoverlap.start_x,
[0068] Rectoverlap.height=min(OleftBottom.y-OleftTop.y,PleftBottom.y-PleftTop.y)。
[0069] start_x和start_y即矩形区域Rectoverlap的左上角点的横纵坐标值,height即矩形区域Rectoverlap的高度,width即矩形区域Rectoverlap的宽度。x,y即相应点的横纵坐标值。
[0070] 步骤3-4,对back(M1)和back(M2)的重叠区域做多频带融合,使back(M1)和back(M2)融合效果更自然,得到最终back(M1)和back(M2)的拼接结果。具体算法及操作和前景
图像的多频带融合完全一样,参见步骤2-3。
[0071] 步骤4包括以下步骤:
[0072] 步骤4-1,在前景目标上选取一个基准点base,在背景空洞上选取另一个基准点base':通过上面的步骤,已经将两路视频流当前帧的前景和背景分别拼接完毕。接下来就是将前景和背景的拼接结果融合到一起,从而组成最终完整的当前帧拼接结果。在前景和
背景的融合过程中,最重要的是选取合适的融合位置,原则是融合位置应最大程度覆盖背
景中因分割前景造成的空洞区域。首先要在前景目标上选取一个基准点base,在背景空洞
上选取另一个基准点base'。然后基于基准点就可以将前景目标和背景空洞融合。在前背景融合中常选用的几种基准点集包括:前景重心点foregravity,背景重心点backgravity;前景中心点forecenter,背景中心点backcenter;前景中的左上角点foreLT,背景中的左上角点backLT;
前景中的右上角点foreRT,背景中的右上角点backRT;基准点的位置通过掩膜来计算,前景掩膜中前景目标和背景掩膜中的前景空洞都是非0元素,其他区域是0元素,基准点位置即
各点的横纵坐标计算公式如下:
[0073]
[0074]
[0075]
[0076]
[0077] 其中,foreXMIN、foreXMAX、foreYMIN、foreYMAX、foreXi、foreYi依次是前景目标横坐标最小值、横坐标最大值、纵坐标最小值、纵坐标最大值、任意点横坐标和任意点纵坐标。同样,backXMIN、backXMAX、backYMIN、backYMAX、backXi、backYi是背景空洞上的对应值。
[0078] 步骤4-2,前景和背景融合:在前景目标上选取了合适的基准点base,在背景空洞上选取了合适的基准点base'后,即可将前景和背景融合。基于base点的像素值赋值到
base'后,将前景掩膜中的非0像素值一一赋值到背景区域上,具体即前景目标上的任一非0像素点,先求得其和基准点base的横纵坐标差值,然后将基准点base'加上这个差值得到一个横纵坐标对,再把前景目标上的这个像素点的像素值赋值给这个横纵坐标对即可。
[0079] 步骤5包括以下步骤:
[0080] 步骤5-1,采用逼近投影算法,对M1和M2进行图像对齐:具体算法及操作和采用逼近投影算法对前景图像对齐完全一样,只是这里对齐的目标是整个M1和M2,参见步骤2-1。
[0081] 步骤5-2,提取出当前帧M1和M2的重叠区域。具体算法及操作和提取出两背景图像的重叠区域一样,参见步骤3-3。
[0082] 步骤5-3,融合M1和M2的重叠区域并得到最终M1和M2的拼接结果。具体算法及操作和融合两背景图像的重叠区域并得到最终拼接结果一样,参见步骤3-4。
[0083] 步骤5-4,保存当前M1和M2融合的拼接模板。即保存M1和M2进行图像对齐中的每个网格中心点x*的单应性矩阵h*。因为背景几乎是静止不动的,所以只含背景的两路帧拼接
时,图像对齐中的网格单应性矩阵和两图像的重叠区域是完全可以在之后复用的,减少拼
接时间,提高拼接效率。
[0084] 步骤6包括以下步骤:
[0085] 采用逼近投影算法,对M1和M2进行图像对齐,这里的对齐可以直接采用步骤5-4中保存的拼接模板作为M2变换到M1的网格单应性矩阵。重叠区域也可复用拼接模板中的重叠
区域,然后多频带融合M1和M2的重叠区域并得到最终M1和M2的拼接结果,参见步骤3-4。
[0086] (逼近投影算法参见:Lin,C.C.,Pankanti,S.U.,Ramamurthy,K.N.,Aravkin,A.Y.,2015.Adaptive as-natural-as-possible image stitching,in:Computer Vision 
and Pattern Recognition,pp.1155–1163.
[0087] 多频带融合算法参见:Burt,P.J.,1983.A multiresolution spline with application to image mosaics.Acm Trans on Graphics 2,217–236.
[0088] SURF参见:Bay,H.,Ess,A.,Tuytelaars,T.,Van Gool,L.,2008.Speeded-up robust features.Computer Visionand Image Understanding 110,404–417.
[0089] FLANN参见:Muja,M.,2009.Fast approximate nearest neighbors with automatic algorith m configuration,in:International Conference on Computer 
Vision Theory and Application Vissapp,pp.331–340.
[0090] Lowe’s algorithm参见:Lowe,D.G.,2004.Distinctive image features from scale-invariant keypoints.International Journal of Computer Vision 60,91–
110.)
[0091] 有益效果:本发明的显著优点是:
[0092] (1)本发明提出的实时视频拼接方法有着很高应用价值。在室内监控、虚拟现实等领域广泛存在大视差场景下的视频拼接。在大视差场景下,本发明能够有效去除错位和重
影等现象,使拼接效果更真实自然。
[0093] (2)本发明提出的实时视频拼接方法压缩了计算量,降低了处理时间。针对只含背景的帧,基于背景是静止不动的,可以复用同一个模板进行拼接。该方法下1080P视频平均拼接速度达到20fps,满足实时性要求。
附图说明
[0094] 下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
[0095] 图1为本发明方法的流程图
[0096] 图2a为一路待拼接视频的当前帧。
[0097] 图2b为另一路待拼接视频的当前帧。
[0098] 图3a图2a中前景分割的结果。
[0099] 3b为图2a中背景分割的结果。
[0100] 图3c为图2b中前景分割的结果。
[0101] 图3d为图2b中背景分割的结果。
[0102] 图4为两路前景图像的融合结果,即图3a和图3c的融合结果。
[0103] 图5为两路背景图像的融合结果,即图3b和图3d的融合结果。
[0104] 图6为完整的前背景融合结果,即图4和图5的融合结果。
[0105] 图7为两路视频当前帧中没有前景的融合结果,即采用模板拼接的结果。

具体实施方式

[0106] 本方法的流程图如图1所示,按照下述过程进行:
[0107] 步骤1,读取两路待拼接视频,判断它们当前帧中是否存在前景:从两路待拼接视频中分别读取当前帧M1和M2,通过差分背景法分别判断M1和M2中每个像素点属于前景还是
背景,进而判断出当前帧中是否存在前景;
[0108] 步骤2,若判断出两路当前帧M1和M2都存在前景,融合帧中的前景区域fore(M1)和fore(M2):采用APAP逼近投影算法,对两个前景区域对齐;对齐后提取出fore(M1)和fore
(M2)的重叠区域;对重叠区域做多频带融合,并得到帧中前景区域fore(M1)和fore(M2)的
融合结果;
[0109] 步骤3,若判断出两路当前帧M1和M2都存在前景,融合帧中的背景区域back(M1)和back(M2):采用APAP逼近投影算法,对两个背景区域对齐;对对齐后对因前背景分割在背景区域中造成的空洞进行修补;提取出back(M1)和back(M2)的重叠区域;对重叠区域做多频
带融合,并得到帧中背景区域back(M1)和back(M2)的融合结果;
[0110] 步骤4,完整的前景区域和背景区域融合:在前景目标上选取一个基准点base,在背景空洞上选取另一个基准点base';基于这两个基准点将完整的前景区域和背景区域融
合,让前景覆盖背景中因分割前背景造成的空洞;
[0111] 步骤5,若判断出两路当前帧M1和M2不存在前景,初始化拼接模板:M1和M2中只存在背景时,因为视频中背景几乎是静止不动的,则图像对齐所用的单应性矩阵,重叠区域都是可以复用的,保存下来作为后续只含背景帧拼接的模板;
[0112] 步骤6,若判断出两路当前帧M1和M2不存在前景,利用拼接模板拼接M1和M2;
[0113] 步骤7,串接每个结果帧后得到拼接结果视频。
[0114] 对于步骤1,读取两路待拼接视频并判断它们当前帧中是否存在前景的具体实施细节如下步骤:
[0115] 步骤1-1,打开两路待拼接视频并判断视频打开是否成功,如果打开成功,获取视频的帧率fps,视频的格式fourcc,以及视频的帧宽度frameW和帧高度frameH;
[0116] 步骤1-2,分别从两路视频流中读取当前帧M1和M2;
[0117] 步骤1-3,通过背景差分法对M1和M2分别分割前后景。视频中只包含固定背景的视频帧当作背景模型M,然后对视频当前帧M’与背景模型M做差分,差值小于阈值的像素是背景,其他像素是前景:
[0118]
[0119] 其中,fore为前景区域,T为阈值。据此得到M1的前景区域fore(M1),M1的背景区域back(M1),M2的前景区域fore(M2),M2的背景区域back(M2)。
[0120] 对于步骤2,融合两路视频当前帧的前景区域具体实施细节如下步骤:
[0121] 步骤2-1,采用逼近投影算法,对fore(M1)和fore(M2)进行图像对齐;
[0122] 步骤2-1-1:将M1和M2分别转换为灰度图g1和g2,分别提取灰度图g1和g2的SURF特征点;
[0123] 步骤2-1-2,利用近似最近邻快速搜索FLANN算法,得到图g1任意特征点m1在图g2上的k个距离最近的对应特征点ni(i=1,2,...,k);
[0124] 步骤2-1-3,采用劳氏算法Lowe’s algorithm来获取优秀匹配点:当dist1
[0125] 步骤2-1-4,对图g2中特征点使用近似最近邻快速搜索和劳氏算法处理,得到图g2到图g1的匹配点对(n1,m2),如果m1=m2,匹配成功,否则抛弃;最终得到初步筛选后匹配点集pointSet;
[0126] 步骤2-1-5,从匹配点集pointSet中,根据每一对匹配点(x_i,y_i),(x_i',y_i'),其中i从1到N,N是pointSet中的,可以得到:
[0127] 矩阵
[0128] 步骤2-1-6,将图像g2划分成C1xC2个网格,然后计算每个网格中心点x*的单应性矩阵h*:
[0129]
[0130] 其中, 表示网格中心点x*和匹配点集pointSet中的每个点x_i间的权值,||h||=1,W*∈R2N*2N,
[0131] h*的解即是W*A最小奇异值所对应的右奇异向量。
[0132] 步骤2-1-7,图像g2划分成的C1 x C2个网格,然后将每个网格内的所有像素点都用该网格中心点x*的单应性矩阵h*变换得到对应点。即g2上任一点(u,v,z)与它所在网格中心点对应的单应性矩阵h*相乘变换得到对应点(x’,y’,z’):
[0133] 变换公式: z=1,
[0134] 其中,h*33表示单应性矩阵h*的第三行第三列元素,归一化最终得到图像g2上的点(u,v,z)对齐到图像g1上的坐标(x,y):
[0135]
[0136] 图像g2即变换到了目标图像g1的坐标系下,也即M2的前景区域fore(M2)变换到了M1的前景区域fore(M1)坐标系下;
[0137] 步骤2-2,提取出fore(M1)和fore(M2)的重叠区域;
[0138] 步骤2-2-1,为fore(M1)和fore(M2)准备掩膜图像,在fore(M1)坐标系下,属于fore(M1)及变换过来的fore(M2)的掩膜像素值设为1,不属于fore(M1)及变换过来的fore
(M2)的掩膜像素值设为0;
[0139] 步骤2-2-2,双目图像中前景目标的位置大小都不相同,为了使前景目标在图像拼接后保持完整,需要对前景图像进行分割,融合,拼接处理。即fore(M2)的左上,左下,右上,右下四个角点:PleftTop,PleftBottom,PrightTop,PrightBottom,通过相应单应性矩阵h*,经过公式fore’(M2)(x,y)=h**fore(M2)(x,y)变换,得到它们在fore(M1)坐标下的四个对应点
P’leftTop,P’leftBottom,P’rightTop,P’rightBottom。这时fore(M1)的左上,左下,右上,右下四个角点分别为OleftTop,OleftBottom,OrightTop,OrightBottom。则重叠区域Rectoverlap为:
[0140] Rectoverlap.start_x=min(P’leftTop.x,P’leftBottom.x),
[0141] Rectoverlap.start_y=min(P’leftTop.y,P’rightTop.y),Rectoverlap.width=max(OrightTop.x,OrightBottom.x)-Rectoverlap.start_x,
[0142] Rectoverlap.height=max(OleftBottom.y,OrightBottom.y)-Rectoverlap.start_y。
[0143] 至此得到了fore(M1)和fore(M2)的重叠区域Rectoverlap。除了重叠区域外,还可能在实际fore(M1)和fore(M2)拼接中存在四个边角矩形,分别是RectleftCorner,RectrightCorner,RecttopCorner,RectbottomCorner,它们是fore(M1)和fore(M2)中没有被重叠的矩形区域。则最终fore(M1)和fore(M2)的拼接结果是这四个没有被重叠的边角矩形RectleftCorner,RectbottomCorner,RectrightCorner,RecttopCorner按逆时针排列,中间内嵌重叠区域Rectoverlap所组成的完整图像;
[0144] 步骤2-3,对fore(M1)和fore(M2)的重叠区域做多频带融合,使fore(M1)和fore(M2)融合效果更自然,得到最终fore(M1)和fore(M2)的拼接结果。多频带融合从尺度维度
来融合图像,不仅可以使边界区域过渡自然而且融合结果具有视觉一致性。
[0145] 步骤2-3-1,对用于多频带融合的两张图像逐步下采样得到图像的高斯金字塔。设重叠区域Rectoverlap在原图像fore(M1)上为fore_overlap(M1),在原图像fore(M2)上为
fore_overlap(M2)。对fore_overlap(M1)和fore_overlap(M2)逐步下采样获得它们的高斯
金字塔。高斯金字塔包含图像的不同尺度,可用于模拟人类的视觉特性,近距离观察图像
时,图像较大且细节清晰,这就是高斯金字塔的底层高分辨率图像表示;远距离观察图像
时,图像较小且画面模糊,这就是高斯金字塔的顶层分辨率图像表示。高斯金字塔通过高斯滤波和亚采样实现,高斯金字塔最底层图像G0即要处理的原图fore_overlap(M1)或fore_
overlap(M2)。再利用高斯核(5*5矩阵)对G0进行卷积,然后对卷积后的图像删除其偶数行
和列,即下采样,就得到了高斯金字塔第二层图像G1。G1的大小即G0的四分之一,又以G1为输入,重复卷积和下采样操作得到更上一层的图像,反复迭代多次,形成图像的完整高斯金字塔。
[0146] 步骤2-3-2,对用于多频带融合的两张图像逐步上采样得到图像的拉普拉斯金字塔。在高斯金字塔的运算过程中,图像经过卷积和下采样操作会丢失部分高频细节,为了描述这些细节,定义了拉普拉斯金字塔。第K层拉普拉斯金字塔通过第K层高斯金字塔减去第K+1层高斯金字塔上采样、卷积得到:
[0147]
[0148] LK即拉普拉斯金字塔第K层,GK即高斯金字塔第K层,GK+1即高斯金字塔第K+1层,Up函数将原图像每个维度放大为2倍,新增的偶数行以0填充,g为5*5高斯核矩阵。
[0149] 重叠区域Rectoverlap在原图像fore(M1)上为fore_overlap(M1),在原图像fore(M2)上为fore_overlap(M2)。对fore_overlap(M1)和fore_overlap(M2)分别计算拉普拉斯
金字塔,然后将金字塔每层图像融合:
[0150] LSK=LAK×maskk+LBK×(1-maskk)
[0151] 其中,LSK是结果图像的第K层拉普拉斯金字塔图像,LAK,LBK分别为fore_overlap(M1)和fore_overlap(M2)第K层拉普拉斯图像,maskK是用于融合的掩膜图像。掩膜图像左半部分值为1,右半部分值为0,同时中间部分作为过滤带,值为:
[0152]
[0153] y∈[0,heightK],
[0154] 其中,weightK,heightK分别为第K层拉普拉斯图像的宽度和高度。于是,重叠图像的拉普拉斯金字塔逐层融合后得到一个新的拉普拉斯金字塔。
[0155] 步骤2-3-3,得到多频带融合的最终结果。将步骤2-3-2所得拉普拉斯金字塔所有层叠加到一起,得到多频带融合的最终结果:
[0156] LSresult=resize(LS0,sz)+...+resize(LSK,sz)+...+resize(LSN,sz),
[0157] 其中,LSresult是多频带融合的结果,LSK是第K层拉普拉斯金字塔,resize用于对图像做缩放处理,sz是重叠图像的大小,N是拉普拉斯金字塔的层数。实际操作过程中,要注意图像分解的层数问题。层数越多算法越复杂,相应的时间需求越高,层数少的话融合效果不够自然。一般情况下,将图像分解5层能够较好平衡时间消耗和融合效果。这样,在步骤2-2-2得到的两路前景图像fore(M1)和fore(M2)的完整拼接结果基础上,经过步骤2-3的多频带
融合处理,使得拼接结果视觉上更自然,于是融合出了完整的前景图像。
[0158] 对于步骤3,融合两路视频当前帧的背景区域具体实施细节如下步骤:
[0159] 步骤3-1,采用逼近投影算法,对两路视频流中读取的当前帧M1和M2的背景区域back(M1)和back(M2)进行对齐:具体算法及操作和前景图像对齐完全一样,参见步骤2-1;
[0160] 步骤3-2,背景区域back(M1)和back(M2)对齐后,需要对背景区域进行修补。因为背景图像中的前景目标被提取后,会在前景目标所在的区域形成一个空洞,如果直接以这
样的图像进行背景拼接,那么因为前景和背景其实不在一个平面上,按背景平面去对齐,两张图像上的前景空洞区域是不能对齐的,反而背景对齐后这块空洞会比两张图像上任何一
张都大。而如果以这样的背景融合结果,最后和前景融合结果拼起来得到最终结果,会发现前景融合的结果不能完全填补背景上的这块空洞。所以在这里要对对齐后的背景图像进行
修补,尽量减少空洞区域。处理方式即通过将两张有空洞的背景区域相互赋值。因为在大视差场景下,双目图像的视差位移大。左图的前景空洞区域可能部分出现在右图没有空洞的
区域,同样右图的前景空洞区域可能部分出现在左图没有空洞的区域,于是通过图像对齐
算法(参见步骤2-1)对齐后,只需要将对应像素赋值,即可填补背景左图和右图的部分前景空洞,这对于后续的前背景区域融合得到的最终结果减少空洞很有用处。
[0161] 步骤3-3,提取出背景区域back(M1)和back(M2)的重叠区域;
[0162] 步骤3-3-1,为back(M1)和back(M2)准备掩膜图像:在back(M1)坐标系下,属于back(M1)及变换过来的back(M2)的掩膜像素值设为1,不属于back(M1)及变换过来的back
(M2)的掩膜像素值设为0;
[0163] 步骤3-3-2,提取出背景图像back(M1)和back(M2)的重叠区域:back(M2)的左上,左下,右上,右下四个角点:PleftTop,PleftBottom,PrightTop,PrightBottom,通过相应单应性矩阵h*,经过公式back’(M2)(x,y)=h**back(M2)(x,y)变换,得到它们在back(M1)坐标下的四个对应点P’leftTop,P’leftBottom,P’rightTop,P’rightBottom。这时back(M1)的左上,左下,右上,右下四个角点分别为OleftTop,OleftBottom,OrightTop,OrightBottom。则重叠区域Rectoverlap为:
[0164] Rectoverlap.start_x=min(P’leftTop.x,P’leftBottom.x),
[0165] Rectoverlap.start_y=0,
[0166] Rectoverlap.width=OrightTop.x-OleftTop.x-Rectoverlap.start_x,
[0167] Rectoverlap.height=min(OleftBottom.y-OleftTop.y,PleftBottom.y-PleftTop.y)。
[0168] 步骤3-4,对back(M1)和back(M2)的重叠区域做多频带融合,使back(M1)和back(M2)融合效果更自然,得到最终back(M1)和back(M2)的拼接结果。具体算法及操作和前景
图像的多频带融合完全一样,参见步骤2-3。
[0169] 对于步骤4,完整的前景区域和背景区域融合具体实施细节如下步骤:
[0170] 步骤4-1,在前景目标上选取一个基准点base,在背景空洞上选取另一个基准点base':通过上面的步骤,已经将两路视频流当前帧的前景和背景分别拼接完毕。接下来就是将前景和背景的拼接结果融合到一起,从而组成最终完整的当前帧拼接结果。在前景和
背景的融合过程中,最重要的是选取合适的融合位置,原则是融合位置应最大程度覆盖背
景中因分割前景造成的空洞区域。首先要在前景目标上选取一个基准点base,在背景空洞
上选取另一个基准点base'。然后基于基准点就可以将前景目标和背景空洞融合。在前背景融合中常选用的几种基准点集包括重心foregravity,backgravity,中心forecenter,backcenter,左上角foreLT,backLT,右上角foreRT,backRT。基准点的位置通过掩膜来计算,前景掩膜中前景目标和背景掩膜中的前景空洞都是非0元素,其他区域是0元素,基准点计算公式如下:
[0171]
[0172]
[0173]
[0174]
[0175] 其中,foreXMIN、foreXMAX、foreYMIN、foreYMAX、foreXi、foreYi依次是前景目标横坐标最小值、横坐标最大值、纵坐标最小值、纵坐标最大值、任意点横坐标和任意点纵坐标。同样,backXMIN、backXMAX、backYMIN、backYMAX、backXi、backYi是背景空洞上的对应值。
[0176] 步骤4-2,前景和背景融合:在前景目标上选取了合适的基准点base,在背景空洞上选取了合适的基准点base'后,即可将前景和背景融合。基于base点的像素值赋值到
base'后,将前景掩膜中的非0像素值一一赋值到背景区域上,具体即前景目标上的任一非0像素点,先求得其和基准点base的横纵坐标差值,然后将基准点base'加上这个差值得到一个横纵坐标对,再把前景目标上的这个像素点的像素值赋值给这个横纵坐标对即可。
[0177] 对于步骤5,初始化拼接模板具体实施细节如下步骤:
[0178] 步骤5-1,采用逼近投影算法,对M1和M2进行图像对齐:具体算法及操作和采用逼近投影算法对前景图像对齐完全一样,只是这里对齐的目标是整个M1和M2,参见步骤2-1。
[0179] 步骤5-2,提取出当前帧M1和M2的重叠区域。具体算法及操作和提取出两背景图像的重叠区域一样,参见步骤3-3。
[0180] 步骤5-3,融合M1和M2的重叠区域并得到最终M1和M2的拼接结果。具体算法及操作和融合两背景图像的重叠区域并得到最终拼接结果一样,参见步骤3-4。
[0181] 步骤5-4,保存当前M1和M2融合的拼接模板。即保存M1和M2进行图像对齐中的每个网格中心点x*的单应性矩阵h*。因为背景几乎是静止不动的,所以只含背景的两路帧拼接
时,图像对齐中的网格单应性矩阵和两图像的重叠区域是完全可以在之后复用的,减少拼
接时间,提高拼接效率。
[0182] 对于步骤6,利用拼接模板拼接两路视频只含背景的当前帧具体实施细节如下步骤:
[0183] 采用逼近投影算法,对M1和M2进行图像对齐,这里的对齐可以直接采用步骤5-4中保存的拼接模板作为M2变换到M1的网格单应性矩阵。重叠区域也可复用拼接模板中的重叠
区域,然后多频带融合M1和M2的重叠区域并得到最终M1和M2的拼接结果,参见步骤3-4。
[0184] 实施例
[0185] 本实施例的实验硬件环境是:Intel(R)Core(TM)i7-7700 CPU@3.6Hz、NVIDIA GeForce GTX1050、8.0G内存,软件开发环境是:Microsoft Visual Studio2013、Microsoft Windows10、OpenCV2.4.13、NVIDIA CUDA 8.0。
[0186] 本发明公开了一种大视差场景下基于自身单应性变换的实时视频拼接方法,其核心在于:判断若待拼接两路视频当前帧存在前景,则将两路视频当前帧的前景和背景分割;
对两个前景区域和背景区域都采用图像对齐、提取重叠区域、多频带融合重叠区域的步骤
融合好;再将融合好的前景图像填补到背景图像的空洞上;判断若两路视频当前帧不存在
前景,则只需要融合背景,背景融合都可采用一个相同的模板,加快拼接速度。具体包括以下步骤:
[0187] 步骤1,读取两路待拼接视频,判断它们当前帧中是否存在前景:从两路待拼接视频中分别读取当前帧,如图2a和图2b所示。通过差分背景法分别判断两路视频当前帧中每
个像素点属于前景还是背景,进而判断出当前帧中是否存在前景;从而得到图2a的前景图
像图3a,背景图像图3b;图2b的前景图像图3c,背景图像图3d;
[0188] 步骤2,若判断出两路当前帧都存在前景,融合帧中的前景图像,即融合如图3a和图3c:采用APAP逼近投影算法,对两个前景图像对齐;对齐后提取出两个前景图像的重叠区域;对重叠区域做多频带融合,并得到前景图像的融合结果,如图4;
[0189] 步骤3,若判断出两路当前帧都存在前景,融合帧中的背景图像,即融合如图3b和图3d:采用APAP逼近投影算法,对两个背景图像对齐;对对齐后对因前背景分割在背景图像中造成的空洞进行修补;提取出两个背景图像的重叠区域;对重叠区域做多频带融合,并得到两背景图像的融合结果,如图5所示;
[0190] 步骤4,完整的前景区域和背景区域融合:在前景目标上选取一个基准点base,在背景空洞上选取另一个基准点base';基于这两个基准点将完整的前景区域和背景区域融
合,让前景覆盖背景中因分割前背景造成的空洞,结果如图6所示;
[0191] 步骤5,若判断出两路当前帧中不存在前景,初始化拼接模板:因为视频中背景几乎是静止不动的,则图像对齐所用的单应性矩阵,重叠区域都是可以复用的,保存下来作为后续只含背景帧拼接的模板;
[0192] 步骤6,若判断出两路当前帧中不存在前景,利用拼接模板拼接两路当前帧,结果如图7所示。
[0193] 本发明提供了大视差场景下基于自身单应性变换的实时视频拼接方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有
技术加以实现。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈