CN114845053A - 一种全景视频生成方法及装置 - Google Patents
一种全景视频生成方法及装置 Download PDFInfo
- Publication number
- CN114845053A CN114845053A CN202210438619.5A CN202210438619A CN114845053A CN 114845053 A CN114845053 A CN 114845053A CN 202210438619 A CN202210438619 A CN 202210438619A CN 114845053 A CN114845053 A CN 114845053A
- Authority
- CN
- China
- Prior art keywords
- image
- video
- panoramic
- real
- images
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 25
- 230000000007 visual effect Effects 0.000 claims abstract description 25
- 230000004927 fusion Effects 0.000 claims description 12
- 238000000605 extraction Methods 0.000 claims description 4
- 230000006870 function Effects 0.000 description 18
- 239000011159 matrix material Substances 0.000 description 16
- 230000009466 transformation Effects 0.000 description 16
- 230000008676 import Effects 0.000 description 13
- 238000013507 mapping Methods 0.000 description 6
- 239000013598 vector Substances 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 101100133143 Caenorhabditis elegans ndx-2 gene Proteins 0.000 description 4
- 238000001514 detection method Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000005286 illumination Methods 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 3
- 125000000174 L-prolyl group Chemical group [H]N1C([H])([H])C([H])([H])C([H])([H])[C@@]1([H])C(*)=O 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000003384 imaging method Methods 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 230000001131 transforming effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/698—Control of cameras or camera modules for achieving an enlarged field of view, e.g. panoramic image capture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/40—Scaling of whole images or parts thereof, e.g. expanding or contracting
- G06T3/4038—Image mosaicing, e.g. composing plane images from plane sub-images
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Processing (AREA)
Abstract
本申请提供一种全景视频生成方法和装置,所述方法包括:为预设的全景区域建立3D模型;设置多个具有预设视角的视频获取端获取所述全景区域的多个实时视频图像,并基于每个所述视频获取端的拍摄视角,从所述3D模型中获取与所述拍摄视角对应的3D图像;融合所述3D图像与所述实时视频图像获得融合图像,拼接所述融合图像获得全景视频图像。通过融合实时视频图像和3D模型,使得最终合成的全景图像能够保持最多细节。
Description
技术领域
本申请涉及一种图像处理技术,尤其涉及一种全景视频生成方法。本申请还涉及一种全景视频生成装置。
背景技术
目前视频监控技术已经相当成熟,其主要是在待监控位置进行摄像头部署,并将摄像头拍摄的视频呈现在显示屏幕上,以便于随时观察。
当前,视频监控技术可以通过多个摄像头对待监控区域进行拍摄,并利用图像拼接技术将每个摄像头拍摄的视频进行拼接形成全景图像,实现对待监控区域的全视角监控。但是当前的画面拼接技术,由于视频拍摄、摄像头像素或者光线明暗的问题,容易导致视频中画面细节在视频拼接过程中丢失,使得画面失真,导致全景图像与实际场景不匹配。
发明内容
为解决现有技术中全景图像细节丢失的问题,本申请提供一种全景视频生成方法。本申请还涉及一种全景视频生成装置。
本申请提供一种全景视频生成方法,包括:
为预设的全景区域建立3D模型;
设置多个具有预设视角的视频获取端获取所述全景区域的多个实时视频图像,并基于每个所述视频获取端的拍摄视角,从所述3D模型中获取与所述拍摄视角对应的3D图像;
融合所述3D图像与所述实时视频图像获得融合图像,拼接所述融合图像获得全景视频图像。
可选的,所述多个具有预设视角的视频获取端,包括:
每个所述视频获取端的畸变中心与所述全景视频柱面映射的投影中心重合。
可选的,所述预设视角包括:每个所述视频获取端与相邻的视频获取端获取的实时视频图像具有重叠部分。
可选的,所述拼接所述融合图像获得全景视频图像之前还包括:
调整所述实时视频图像的亮度,使所述每个所述实时视频图像的重叠部分亮度一致。
可选的,所述拼接所述融合图像包括:
提取每个所述融合图像的图像特征点;
基于所述图像特征点配准每个所述融合图像;
基于配准的所述融合图像,通过预设拼接算法对所述融合图像拼接。
本申请还提供一种全景视频生成装置,包括:
建模模块,用于为预设的全景区域建立3D模型;
视频模块,用于设置多个具有预设视角的视频获取端获取所述全景区域的多个实时视频图像,并基于每个所述视频获取端的拍摄视角,从所述3D模型中获取与所述拍摄视角对应的3D图像;
拼接模块,用于融合所述3D图像与所述实时视频图像获得融合图像,拼接所述融合图像获得全景视频图像。
可选的,所述多个具有预设视角的视频获取端,包括:
每个所述视频获取端的畸变中心与所述全景视频柱面映射的投影中心重合。
可选的,所述预设视角包括:每个所述视频获取端与相邻的视频获取端获取的实时视频图像具有重叠部分。
可选的,所述视频模块还包括:
亮度单元,用于调整所述实时视频图像的亮度,使所述每个所述实时视频图像的重叠部分亮度一致。
可选的,所述拼接模块还包括:
提取单元,用于提取每个所述融合图像的图像特征点;
配准单元,用于基于所述图像特征点配准每个所述融合图像;
拼接单元,用于基于配准的所述融合图像,通过预设拼接算法对所述融合图像拼接。
本申请相对与现有技术的优点:
本申请提供一种全景视频生成方法,包括:为预设的全景区域建立3D模型;设置多个具有预设视角的视频获取端获取所述全景区域的多个实时视频图像,并基于每个所述视频获取端的拍摄视角,从所述3D模型中获取与所述拍摄视角对应的3D图像;融合所述3D图像与所述实时视频图像获得融合图像,拼接所述融合图像获得全景视频图像。通过融合实时视频图像和3D模型,使得最终合成的全景图像能够保持最多细节。
附图说明
图1是本申请中全景视频生成的流程图。
图2是本申请中所述实时视频图像和3D图像融合流程图。
图3是本申请中的高斯正太分布图。
图4是本申请中像素点比较示意图。
图5是本申请中关键点描述示意图。
图6是本申请中全景视频生成装置示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
本申请提供一种全景视频生成方法,包括:为预设的全景区域建立3D模型;设置多个具有预设视角的视频获取端获取所述全景区域的多个实时视频图像,并基于每个所述视频获取端的拍摄视角,从所述3D模型中获取与所述拍摄视角对应的3D图像;融合所述3D图像与所述实时视频图像获得融合图像,拼接所述融合图像获得全景视频图像。通过融合实时视频图像和3D模型,使得最终合成的全景图像能够保持最多细节。
图1是本申请中全景视频生成的流程图。
请参照图1所示,S101为预设的全景区域建立3D模型。
所述3D模型是全景区域的模型,所述全景区域是指待监控区域。具体的,所述3D模型包括全景区域中的待监控物体。例如,所述全景区域为一间车间,所述待监控物体可以是所述车间中的车床以及其他相关机器,所述待监控物体还可以是所述车间的墙壁获取其他需要被监控的物体。
建立所述3D模型可以通过3D工程软件进行,例如Pro/E,UG,AutoCAD,solidwerk等。
请参照图1所示,S102设置多个具有预设视角的视频获取端获取所述全景区域的多个实时视频图像,并基于每个所述视频获取端的拍摄视角,从所述3D模型中获取与所述拍摄视角对应的3D图像。
所述视频获取端可以是,包括:摄像头,红外热像仪等可以获取连续视频的成像设备。所述视频获取端具有多个,分别部署到不同位置,其中相邻的每个视频获取端的视角是部分重叠的,并且每个所述视频获取端的畸变中心是和相同的柱面映射投影中心重合的。优选的,所述视频获取端的数量是360除以所述视频获取端的视角取整加1。可以清楚的是,所述视频获取端的具体数量是本领域技术人员根据实际需求设置的,并不是固定不变的。
布置完成所述视频获取端后,分别调整所述视频获取端的畸变参数和视频获取端畸变中心和柱面映射的投影中心的位置关系,以克服畸变和透视失真。
每个所述视频获取端分别获取各种的实时视频,并根据所述视频获取端顺序编号。本领域技术人员应当清楚,所述编号是为区别所述视频之间的不同,其采用何种编号方式不影响本申请的保护内容。
完成所述实时视频获取,然后根据每个所述视频获取端在全景环境中的位置和视角,对应的截取所述3D模型的3D图像。
请参照图1所示,S103融合所述3D图像与所述实时视频图像获得融合图像,拼接所述融合图像获得全景视频图像。
所属3D图像的细节内容是完整清楚的,并不会因为视频拍摄、摄像头像素或者光线明暗的因素影响。通过所述3D图像和实时视频图像的融合,将使得视频图像的细节内容更为清楚。
基于所述实时视频图像,提取所述视频图像中的图像帧,并按照顺序缓存到内存中;然后对每一个所述图像帧和3D图像进行图像融合。
图2是本申请中所述实时视频图像和3D图像融合流程图。
请参照图2所示,S201提取图像特征。
具体的,所述图像特征的提取可以采用SIFT(尺度不变特征变换)算法进行,包括:
1)尺度空间极值点检测:搜索所有尺度上的图像位置,通过高斯微分函数来识别潜在的对于尺度和旋转不变的兴趣点。
所述尺度空间是指在图像信息处理模型中引入一个被视为尺度的参数,通过连续变化尺度参数获得多尺度下的尺度空间表示序列,对这些序列进行尺度空间主轮廓的提取,并以该主轮廓作为一种特征向量,实现边缘、角点检测和不同分辨率上的特征提取。在本申请中,所述尺度可以是图像模糊程度,即所述多尺度就是图像的多个模糊程度。
所述模糊程度是通过高斯模糊算法实现的,包括:使用正态分布(高斯函数)计算模糊模板,并使用该模板与原图像做卷积运算,达到模糊图像的目的。例如:二维模板大小为m*n,则模板上的元素(x,y)对应的高斯计算公式为:
根据的值,计算出高斯模板矩阵的大小,使用上述公式计算高斯模板矩阵的值,
与所述实时视频图像做卷积,包括:以分布不为零的像素组成的卷积矩阵与原始图像做变
换,例如每个像素的值都是周围相邻像素值的加权平均。原始像素的值有最大的高斯分布
值,所以有最大的权重,相邻像素随着距离原始像素越来越远,其权重也越来越小,由此即
可获得所述实时视频图像的高斯模糊图像。
接下来,每一层模糊图像的像素点要和它所有的相邻点比较,看其是否比它的图像域和尺度域的相邻点大或者小。如图4所示,中间的检测点和它同尺度的8个相邻点和上下相邻尺度对应的9×2个点共26个点比较,以确保在尺度空间和二维的图像都检测到极值点。根据最后的比较结果最后确定该点为极值点。
2)关键点定位:在每个候选的位置上,通过一个拟合精细的模型来确定位置和尺度。关键点的选择依据于它们的稳定程度。
具体的,上述的出的极值点并不是真正的极值点,需要利用已知的离散空间点插值得到的连续空间极值点的方法叫做子像素插值,然后通过曲线拟合的方式获得拟合函数,并获取所述拟合函数的极值点,该拟合函数的极值点才是真正的极值点,该极值点就是关键点。具体的,可以通过对所述拟合函数求导的方式获取极值点。
3)方向确定:基于图像局部的梯度方向,分配给每个关键点位置一个或多个方向。所有后面的对图像数据的操作都相对于关键点的方向、尺度和位置进行变换,从而提供对于这些变换的不变性。其中所述梯度方向是指关键点邻域像素的梯度分布特性来确定其方向参数,再利用图像的梯度直方图求取关键点局部结构的稳定方向。
4)关键点描述:在每个关键点周围的邻域内,在选定的尺度上测量图像局部的梯度。这些梯度被变换成一种表示,这种表示允许比较大的局部形状的变形和光照变化。包括:使用一组向量来描述关键点也就是生成关键点描述符,这个描述符不只包含关键点,也含有关键点周围对其有贡献的像素点。
如图5A所示,中央为当前关键点的位置,每个小格代表为关键点邻域所在尺度空间的一个像素,求取每个像素的梯度幅值与梯度方向,箭头方向代表该像素的梯度方向,长度代表梯度幅值,然后利用高斯窗口对其进行加权运算。如图5B所示,最后在每个4×44×4的小块上绘制8个方向的梯度直方图,计算每个梯度方向的累加值,即可形成一个种子点。每个关键点由4个种子点组成,每个种子点有8个方向的向量信息。
S202,图像融合匹配。
所述融合图像包括:提取每个所述融合图像的图像特征点;基于所述图像特征点配准每个所述融合图像;基于配准的所述融合图像,通过预设拼接算法对所述融合图像拼接。
具体的,所述融合图像是根据所述关键点进行每一帧视频图像和3D图像的配准、像素点融合,形成融合图像。所述特征点是根据上述提取出的关键点,根据所述关键点进行图像匹配,包括:两个视频获取装置拍同一空间上得到两幅图像A、B,其中图像A到图像B存在一种变换,而且这种变换是一一对应的关系,这个变换矩阵用单应矩阵表示。OpenCV(一种计算机视觉和机器学习软件库)中可以用函数findHomography(一种坐标变换函数)计算得到变换矩阵H。利用所述变换矩阵H把图像B变换后放到图像A相应的位置,实现图像匹配。
具体的,利用变换矩阵H对图像B做变换,然后把图像B与图像A重叠在一起,并重新计算重叠区域新的像素值。对于计算重叠区域的像素值,优选的,实现一个图像的线性渐变,对于重叠的区域,靠近左边的部分,让左边图像内容显示的多一些,靠近右边的部分,让右边图像的内容显示的多一些。基于此,本申请提供的图像匹配代码如下:
from pylab import *
from numpy import *
from PIL import Image
# If you have PCV installed, these imports should work
from PCV.geometry import homography, warp
from PCV.localdescriptors import sift
"""
This is the panorama example from section 3.3.
"""
# set paths to data folder
featname = ['C:\\Users\DELL\Desktop\PCV\jmu\panorama/z0'+str(i+1)+'.sift' for i in range(5)]
imname = ['C:\\Users\DELL\Desktop\PCV\jmu\panorama/z0'+str(i+1)+'.jpg' for i in range(5)]
# extract features and match
l = {}
d = {}
for i in range(5):
sift.process_image(imname[i],featname[i])
l[i],d[i] = sift.read_features_from_file(featname[i])
matches = {}
for i in range(4):
matches[i] = sift.match(d[i+1],d[i])
# visualize the matches (Figure 3-11 in the book)
'''
for i in range(4):
im1 = array(Image.open(imname[i]))
im2 = array(Image.open(imname[i+1]))
figure()
sift.plot_matches(im2,im1,l[i+1],l[i],matches[i],show_below=True)
'''
# function to convert the matches to hom. points
def convert_points(j):
ndx = matches[j].nonzero()[0]
fp = homography.make_homog(l[j+1][ndx,:2].T)
ndx2 = [int(matches[j][i]) for i in ndx]
tp = homography.make_homog(l[j][ndx2,:2].T)
# switch x and y - TODO this should move elsewhere
fp = vstack([fp[1],fp[0],fp[2]])
tp = vstack([tp[1],tp[0],tp[2]])
return fp,tp
# estimate the homographies
model = homography.RansacModel()
fp,tp = convert_points(1)
H_12 = homography.H_from_ransac(fp,tp,model)[0] #im 1 to 2
fp,tp = convert_points(0)
H_01 = homography.H_from_ransac(fp,tp,model)[0] #im 0 to 1
tp,fp = convert_points(2) #NB: reverse order
H_32 = homography.H_from_ransac(fp,tp,model)[0] #im 3 to 2
tp,fp = convert_points(3) #NB: reverse order
H_43 = homography.H_from_ransac(fp,tp,model)[0] #im 4 to 3
# warp the images
delta = 500 # for padding and translation
im1 = array(Image.open(imname[1]), "uint8")
im2 = array(Image.open(imname[2]), "uint8")
im_12 = warp.panorama(H_12,im1,im2,delta,delta)
im1 = array(Image.open(imname[0]), "f")
im_02 = warp.panorama(dot(H_12,H_01),im1,im_12,delta,delta)
im1 = array(Image.open(imname[3]), "f")
im_32 = warp.panorama(H_32,im1,im_02,delta,delta)
im1 = array(Image.open(imname[4]), "f")
im_42 = warp.panorama(dot(H_32,H_43),im1,im_32,delta,2*delta)
figure()
imshow(array(im_42, "uint8"))
axis('off')
show()
另外,因为视频获取设备和光照强度的差异,会造成一幅图像内部,以及图像之间亮度的不均匀,拼接后的图像会出现明暗交替,这样给观察造成极大的不便。室外场景的拼接效果比室内的要好很多,多图拼接对图片的要求也比较高,差异性大或太小(几乎相同)的拼接效果都很差。本申请优选用于室外场景的全景图像合成。优选的,所述拼接所述融合图像获得全景视频图像之前还包括,调整所述实时视频图像的亮度,使所述每个所述实时视频图像的重叠部分亮度一致。
本申请还提供一种全景视频生成装置,包括:建模模块301,视频模块302,拼接模块303。
图6是本申请中全景视频生成装置示意图。
请参照图6所示,建模模块301,用于为预设的全景区域建立3D模型。
所述3D模型是全景区域的模型,所述全景区域是指待监控区域。具体的,所述3D模型包括全景区域中的待监控物体。例如,所述全景区域为一间车间,所述待监控物体可以是所述车间中的车床以及其他相关机器,所述待监控物体还可以是所述车间的墙壁获取其他需要被监控的物体。
建立所述3D模型可以通过3D工程软件进行,例如Pro/E,UG,AutoCAD,solidwerk等。
请参照图6所示,视频模块302,用于设置多个具有预设视角的视频获取端获取所述全景区域的多个实时视频图像,并基于每个所述视频获取端的拍摄视角,从所述3D模型中获取与所述拍摄视角对应的3D图像。
所述视频获取端可以是,包括:摄像头,红外热像仪等可以获取连续视频的成像设备。所述视频获取端具有多个,分别部署到不同位置,其中相邻的每个视频获取端的视角是部分重叠的,并且每个所述视频获取端的畸变中心是和相同的柱面映射投影中心重合的。优选的,所述视频获取端的数量是360除以所述视频获取端的视角取整加1。可以清楚的是,所述视频获取端的具体数量是本领域技术人员根据实际需求设置的,并不是固定不变的。
布置完成所述视频获取端后,分别调整所述视频获取端的畸变参数和视频获取端畸变中心和柱面映射的投影中心的位置关系,以克服畸变和透视失真。
每个所述视频获取端分别获取各种的实时视频,并根据所述视频获取端顺序编号。本领域技术人员应当清楚,所述编号是为区别所述视频之间的不同,其采用何种编号方式不影响本申请的保护内容。
完成所述实时视频获取,然后根据每个所述视频获取端在全景环境中的位置和视角,对应的截取所述3D模型的3D图像。
请参照图6所示,拼接模块303,用于融合所述3D图像与所述实时视频图像获得融合图像,拼接所述融合图像获得全景视频图像。
所属3D图像的细节内容是完整清楚的,并不会因为视频拍摄、摄像头像素或者光线明暗的因素影响。通过所述3D图像和实时视频图像的融合,将使得视频图像的细节内容更为清楚。
基于所述实时视频图像,提取所述视频图像中的图像帧,并按照顺序缓存到内存中;然后对每一个所述图像帧和3D图像进行图像融合。
请参照图2所示,S201提取图像特征。
具体的,所述图像特征的提取可以采用SIFT(尺度不变特征变换)算法进行,包括:
1)尺度空间极值点检测:搜索所有尺度上的图像位置,通过高斯微分函数来识别潜在的对于尺度和旋转不变的兴趣点。
所述尺度空间是指在图像信息处理模型中引入一个被视为尺度的参数,通过连续变化尺度参数获得多尺度下的尺度空间表示序列,对这些序列进行尺度空间主轮廓的提取,并以该主轮廓作为一种特征向量,实现边缘、角点检测和不同分辨率上的特征提取。在本申请中,所述尺度可以是图像模糊程度,即所述多尺度就是图像的多个模糊程度。
所述模糊程度是通过高斯模糊算法实现的,包括:使用正态分布(高斯函数)计算模糊模板,并使用该模板与原图像做卷积运算,达到模糊图像的目的。例如:二维模板大小为m*n,则模板上的元素(x,y)对应的高斯计算公式为:
根据的值,计算出高斯模板矩阵的大小,使用上述公式计算高斯模板矩阵的值,
与所述实时视频图像做卷积,包括:以分布不为零的像素组成的卷积矩阵与原始图像做变
换,例如每个像素的值都是周围相邻像素值的加权平均。原始像素的值有最大的高斯分布
值,所以有最大的权重,相邻像素随着距离原始像素越来越远,其权重也越来越小,由此即
可获得所述实时视频图像的高斯模糊图像。
接下来,每一层模糊图像的像素点要和它所有的相邻点比较,看其是否比它的图像域和尺度域的相邻点大或者小。如图4所示,中间的检测点和它同尺度的8个相邻点和上下相邻尺度对应的9×2个点共26个点比较,以确保在尺度空间和二维的图像都检测到极值点。最后确定该点为极值点。
2)关键点定位:在每个候选的位置上,通过一个拟合精细的模型来确定位置和尺度。关键点的选择依据于它们的稳定程度。
具体的,上述的出的极值点并不是真正的极值点,需要利用已知的离散空间点插值得到的连续空间极值点的方法叫做子像素插值,然后通过曲线拟合的方式获得拟合函数,并获取所述拟合函数的极值点,该拟合函数的极值点才是真正的极值点,该极值点就是关键点。具体的,可以通过对所述拟合函数求导的方式获取极值点。
3)方向确定:基于图像局部的梯度方向,分配给每个关键点位置一个或多个方向。所有后面的对图像数据的操作都相对于关键点的方向、尺度和位置进行变换,从而提供对于这些变换的不变性。其中所述梯度方向是指关键点邻域像素的梯度分布特性来确定其方向参数,再利用图像的梯度直方图求取关键点局部结构的稳定方向。
4)关键点描述:在每个关键点周围的邻域内,在选定的尺度上测量图像局部的梯度。这些梯度被变换成一种表示,这种表示允许比较大的局部形状的变形和光照变化。包括:使用一组向量来描述关键点也就是生成关键点描述符,这个描述符不只包含关键点,也含有关键点周围对其有贡献的像素点。
如图5A所示,中央为当前关键点的位置,每个小格代表为关键点邻域所在尺度空间的一个像素,求取每个像素的梯度幅值与梯度方向,箭头方向代表该像素的梯度方向,长度代表梯度幅值,然后利用高斯窗口对其进行加权运算。如图5B所示,最后在每个4×44×4的小块上绘制8个方向的梯度直方图,计算每个梯度方向的累加值,即可形成一个种子点。每个关键点由4个种子点组成,每个种子点有8个方向的向量信息。
S202,图像融合匹配。
所述融合图像包括:提取每个所述融合图像的图像特征点;基于所述图像特征点配准每个所述融合图像;基于配准的所述融合图像,通过预设拼接算法对所述融合图像拼接。
具体的,所述特征点是根据上述提取出的关键点,根据所述关键点进行图像匹配,包括:两个视频获取装置拍同一空间上得到两幅图像A、B,其中图像A到图像B存在一种变换,而且这种变换是一一对应的关系,这个变换矩阵用单应矩阵表示。OpenCV(一种计算机视觉和机器学习软件库)中可以用函数findHomography(一种坐标变换函数)计算得到变换矩阵H。利用所述变换矩阵H把图像B变换后放到图像A相应的位置,实现图像匹配。
具体的,利用变换矩阵H对图像B做变换,然后把图像B与图像A重叠在一起,并重新计算重叠区域新的像素值。对于计算重叠区域的像素值,优选的,实现一个图像的线性渐变,对于重叠的区域,靠近左边的部分,让左边图像内容显示的多一些,靠近右边的部分,让右边图像的内容显示的多一些。基于此,本申请提供的图像匹配代码如下:
from pylab import *
from numpy import *
from PIL import Image
# If you have PCV installed, these imports should work
from PCV.geometry import homography, warp
from PCV.localdescriptors import sift
"""
This is the panorama example from section 3.3.
"""
# set paths to data folder
featname = ['C:\\Users\DELL\Desktop\PCV\jmu\panorama/z0'+str(i+1)+'.sift' for i in range(5)]
imname = ['C:\\Users\DELL\Desktop\PCV\jmu\panorama/z0'+str(i+1)+'.jpg' for i in range(5)]
# extract features and match
l = {}
d = {}
for i in range(5):
sift.process_image(imname[i],featname[i])
l[i],d[i] = sift.read_features_from_file(featname[i])
matches = {}
for i in range(4):
matches[i] = sift.match(d[i+1],d[i])
# visualize the matches (Figure 3-11 in the book)
'''
for i in range(4):
im1 = array(Image.open(imname[i]))
im2 = array(Image.open(imname[i+1]))
figure()
sift.plot_matches(im2,im1,l[i+1],l[i],matches[i],show_below=True)
'''
# function to convert the matches to hom. points
def convert_points(j):
ndx = matches[j].nonzero()[0]
fp = homography.make_homog(l[j+1][ndx,:2].T)
ndx2 = [int(matches[j][i]) for i in ndx]
tp = homography.make_homog(l[j][ndx2,:2].T)
# switch x and y - TODO this should move elsewhere
fp = vstack([fp[1],fp[0],fp[2]])
tp = vstack([tp[1],tp[0],tp[2]])
return fp,tp
# estimate the homographies
model = homography.RansacModel()
fp,tp = convert_points(1)
H_12 = homography.H_from_ransac(fp,tp,model)[0] #im 1 to 2
fp,tp = convert_points(0)
H_01 = homography.H_from_ransac(fp,tp,model)[0] #im 0 to 1
tp,fp = convert_points(2) #NB: reverse order
H_32 = homography.H_from_ransac(fp,tp,model)[0] #im 3 to 2
tp,fp = convert_points(3) #NB: reverse order
H_43 = homography.H_from_ransac(fp,tp,model)[0] #im 4 to 3
# warp the images
delta = 500 # for padding and translation
im1 = array(Image.open(imname[1]), "uint8")
im2 = array(Image.open(imname[2]), "uint8")
im_12 = warp.panorama(H_12,im1,im2,delta,delta)
im1 = array(Image.open(imname[0]), "f")
im_02 = warp.panorama(dot(H_12,H_01),im1,im_12,delta,delta)
im1 = array(Image.open(imname[3]), "f")
im_32 = warp.panorama(H_32,im1,im_02,delta,delta)
im1 = array(Image.open(imname[4]), "f")
im_42 = warp.panorama(dot(H_32,H_43),im1,im_32,delta,2*delta)
figure()
imshow(array(im_42, "uint8"))
axis('off')
show()
另外,因为视频获取设备和光照强度的差异,会造成一幅图像内部,以及图像之间亮度的不均匀,拼接后的图像会出现明暗交替,这样给观察造成极大的不便。室外场景的拼接效果比室内的要好很多,多图拼接对图片的要求也比较高,差异性大或太小(几乎相同)的拼接效果都很差。本申请优选用于室外场景的全景图像合成。优选的,所述拼接所述融合图像获得全景视频图像之前还包括,调整所述实时视频图像的亮度,使所述每个所述实时视频图像的重叠部分亮度一致。
Claims (10)
1.一种全景视频生成方法,其特征在于,包括:
为预设的全景区域建立3D模型;
设置多个具有预设视角的视频获取端获取所述全景区域的多个实时视频图像,并基于每个所述视频获取端的拍摄视角,从所述3D模型中获取与所述拍摄视角对应的3D图像;
融合所述3D图像与所述实时视频图像获得融合图像,拼接所述融合图像获得全景视频图像。
2.根据权利要求1所述全景视频生成方法,其特征在于,多个所述具有预设视角的视频获取端,包括:
所述视频获取端具有多个,每个所述视频获取端的畸变中心与所述全景视频柱面映射的投影中心重合,布置完成所述视频获取端,根据每个所述视频获取端在全景环境中的位置和视角,对应的截取所述3D模型的3D图像。
3.根据权利要求1所述全景视频生成方法,其特征在于,所述预设视角包括:所述视频获取端具有多个,分别部署到不同位置,每个所述视频获取端与相邻的视频获取端获取的实时视频图像具有重叠部分。
4.根据权利要求3所述全景视频生成方法,其特征在于,拼接所述融合图像获得全景视频图像之前还包括:
调整所述实时视频图像的亮度,使每个所述实时视频图像的重叠部分亮度一致,基于所述实时视频图像,提取所述视频图像中的图像帧,并按照顺序缓存到内存中。
5.根据权利要求1所述全景视频生成方法,其特征在于,拼接所述融合图像包括:
提取每个所述融合图像的图像特征点;
基于所述图像特征点配准每个所述融合图像;
基于配准的所述融合图像,通过预设拼接算法对所述融合图像拼接。
6.一种全景视频生成装置,其特征在于,包括:
建模模块,用于为预设的全景区域建立3D模型;
视频模块,用于设置多个具有预设视角的视频获取端获取所述全景区域的多个实时视频图像,并基于每个所述视频获取端的拍摄视角,从所述3D模型中获取与所述拍摄视角对应的3D图像;
拼接模块,用于融合所述3D图像与所述实时视频图像获得融合图像,拼接所述融合图像获得全景视频图像。
7.根据权利要求6所述全景视频生成装置,其特征在于,多个所述具有预设视角的视频获取端,包括:
所述视频获取端具有多个,每个所述视频获取端的畸变中心与所述全景视频柱面映射的投影中心重合,布置完成所述视频获取端,根据每个所述视频获取端在全景环境中的位置和视角,对应的截取所述3D模型的3D图像。
8.根据权利要求6所述全景视频生成装置,其特征在于,所述预设视角包括:所述视频获取端具有多个,分别部署到不同位置,每个所述视频获取端与相邻的视频获取端获取的实时视频图像具有重叠部分。
9.根据权利要求8所述全景视频生成装置,其特征在于,所述视频模块还包括:
亮度单元,用于调整所述实时视频图像的亮度,使每个所述实时视频图像的重叠部分亮度一致,基于所述实时视频图像,提取所述视频图像中的图像帧,并按照顺序缓存到内存中。
10.根据权利要求6所述全景视频生成装置,其特征在于,所述拼接模块还包括:
提取单元,用于提取每个所述融合图像的图像特征点;
配准单元,用于基于所述图像特征点配准每个所述融合图像;
拼接单元,用于基于配准的所述融合图像,通过预设拼接算法对所述融合图像拼接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210438619.5A CN114845053A (zh) | 2022-04-25 | 2022-04-25 | 一种全景视频生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210438619.5A CN114845053A (zh) | 2022-04-25 | 2022-04-25 | 一种全景视频生成方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114845053A true CN114845053A (zh) | 2022-08-02 |
Family
ID=82566701
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210438619.5A Pending CN114845053A (zh) | 2022-04-25 | 2022-04-25 | 一种全景视频生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114845053A (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1801953A (zh) * | 2005-12-15 | 2006-07-12 | 上海交通大学 | 仅用一幅平面标定物图像的摄像机标定方法 |
WO2018113082A1 (zh) * | 2016-12-21 | 2018-06-28 | 深圳市掌网科技股份有限公司 | 一种 3d 全景拍摄***以及方法 |
CN109246416A (zh) * | 2018-09-21 | 2019-01-18 | 福州大学 | 车载六路摄像头的全景拼接方法 |
CN110910338A (zh) * | 2019-12-03 | 2020-03-24 | 煤炭科学技术研究院有限公司 | 一种三维实景视频的获取方法、装置、设备及存储介质 |
CN112017222A (zh) * | 2020-09-08 | 2020-12-01 | 北京正安维视科技股份有限公司 | 视频全景拼接与三维融合方法及装置 |
CN113271434A (zh) * | 2021-03-24 | 2021-08-17 | 北京潞电电气设备有限公司 | 一种监测***及其方法 |
CN114143528A (zh) * | 2020-09-04 | 2022-03-04 | 北京大视景科技有限公司 | 多视频流融合方法、电子设备、存储介质 |
-
2022
- 2022-04-25 CN CN202210438619.5A patent/CN114845053A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1801953A (zh) * | 2005-12-15 | 2006-07-12 | 上海交通大学 | 仅用一幅平面标定物图像的摄像机标定方法 |
WO2018113082A1 (zh) * | 2016-12-21 | 2018-06-28 | 深圳市掌网科技股份有限公司 | 一种 3d 全景拍摄***以及方法 |
CN109246416A (zh) * | 2018-09-21 | 2019-01-18 | 福州大学 | 车载六路摄像头的全景拼接方法 |
CN110910338A (zh) * | 2019-12-03 | 2020-03-24 | 煤炭科学技术研究院有限公司 | 一种三维实景视频的获取方法、装置、设备及存储介质 |
CN114143528A (zh) * | 2020-09-04 | 2022-03-04 | 北京大视景科技有限公司 | 多视频流融合方法、电子设备、存储介质 |
CN112017222A (zh) * | 2020-09-08 | 2020-12-01 | 北京正安维视科技股份有限公司 | 视频全景拼接与三维融合方法及装置 |
CN113271434A (zh) * | 2021-03-24 | 2021-08-17 | 北京潞电电气设备有限公司 | 一种监测***及其方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6561216B2 (ja) | 光学フローを使用した中間ビューの生成 | |
CN109348119B (zh) | 一种全景监控*** | |
US9811946B1 (en) | High resolution (HR) panorama generation without ghosting artifacts using multiple HR images mapped to a low resolution 360-degree image | |
Sinha et al. | Pan–tilt–zoom camera calibration and high-resolution mosaic generation | |
CN104732482B (zh) | 一种基于控制点的多分辨率图像拼接方法 | |
CN112365404B (zh) | 一种基于多相机的接触网全景图像拼接方法、***及设备 | |
CN105005964B (zh) | 基于视频序列影像的地理场景全景图快速生成方法 | |
CN109685078A (zh) | 基于自动标注的红外图像识别方法 | |
CN103902953B (zh) | 一种屏幕检测***及方法 | |
CN111815517B (zh) | 一种基于球机抓拍图片的自适应全景拼接方法 | |
CN105335977B (zh) | 摄像***及目标对象的定位方法 | |
CN104392416A (zh) | 一种运动场景的视频拼接方法 | |
CN111866523B (zh) | 全景视频合成方法、装置、电子设备和计算机存储介质 | |
CN112348958A (zh) | 关键帧图像的采集方法、装置、***和三维重建方法 | |
CN107945221A (zh) | 一种基于rgb‑d图像的三维场景特征表达与高精度匹配方法 | |
CN113221665A (zh) | 一种基于动态最佳缝合线和改进渐入渐出法的视频融合算法 | |
CN111242848A (zh) | 基于区域特征配准的双目相机图像缝合线拼接方法及*** | |
CN113793266A (zh) | 一种多目机器视觉图像拼接方法、***及存储介质 | |
CN109697696B (zh) | 用于全景视频的补盲方法 | |
CN106851130A (zh) | 一种视频拼接方法及装置 | |
Inamoto et al. | Immersive evaluation of virtualized soccer match at real stadium model | |
Rong et al. | Mosaicing of microscope images based on SURF | |
CN111260555A (zh) | 一种基于surf的改进图像拼接方法 | |
CN114845053A (zh) | 一种全景视频生成方法及装置 | |
CN110544203A (zh) | 一种运动最小二乘法与线约束相结合的视差图像拼接方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |