1.一种利用单摄像机实时生成半球全景视频图像的方法,其特征在于,包括下述步骤:
步骤A,在半球面上选定一条经线作为0°经线,沿0°经线方向在俯仰90度的范围内设置若干个预置点,相邻预置点之间纬度差基本一致;
步骤B,在各个预置点处,将摄像机光轴的俯仰角方向调整为预置点所在的纬线的纬度方向,从预置点开始绕垂直轴在水平360度的范围内旋转摄像机,并在旋转过程中每隔一定时间间隔采集图像,将即时采集的每帧视频图像预处理;
步骤C,将预处理后的与同一个预置点纬度相同的视频图像拼接为一沿水平方向设置的条带全景;各个预置点的条带全景沿竖直方向排列;
步骤D,对各条带全景中嵌入的每帧视频图像,对其与左、右帧视频图像的重叠区域进行光线一致性调整;
步骤E,将各条带全景进行0°经度对齐后拼接为一半球展开图像;
步骤F,将所述半球展开图像正投影成圆盘显示;
步骤G,将所述半球展开图像正侧投影成半球显示;
所述步骤C具体包括下述步骤:
摄像机在当前绕垂直轴旋转的水平方向上等时间间隔采集N幅图像,根据当前条带全景的帧间相关距离d,计算出每帧视频图像中变形较小的中间垂直条带,以及该中间垂直条带在当前条带全景中的位置,将其嵌入计算出的位置;
其中,N是一个大于N0的常数,N0是条带全景一个周期中所包含的视频图像帧数,N0可通过如下公式得到:
其中,D0为中心处于0°纬度的条带全景的圆周周长,d0为中心处于0°纬度的条带全景的帧间相关距离。
2.如权利要求1所述的方法,其特征在于,所述当前条带全景的帧间相关距离d的计算通过下述步骤得到:
步骤C11,获取当前视频图像帧,计算沿摄像机旋转运动方向的该帧图像梯度,得到平行梯度图Gy(h,y);
步骤C12,设W为图像宽度,H为图像高,中心处于0°纬度的条带全景的帧间相关距离为d0,当前条带帧间相关距离为d,球体半径为R,图像最底行像素点所在纬度圆的纬度为所在纬度圆的半径为rb,通过如下公式计算当前帧图像最底行视场角大小θb:
θb是与2π/N0一个数量级的小数,用θb与1000相乘取整后记作WI,把WI作为梯度图球面变换后的宽;
步骤C13,根据所述图像最底行的视角大小将步骤C11平行梯度图做球面变换,使具有相同垂直视角的像素点排列在一垂直列上;平行梯度图Gy(h,y)进行球面变换后得到变换后的平行梯度图gy(h,θ),球面变换关系式:
其中,
y为梯度图最底行从左到右的像素点的位置;y对应的视角度数为θ,h为梯度图中像素点与梯度图中心像素点的垂直距离,h大小从-H/2到H/2,W为梯度图宽度,H为梯度图高;θb为图像最底行视场角大小;r为梯度图中与梯度图中心像素点垂直距离为h的行所在的纬度圆的半径;R为球体半径,d0为中心处于0°纬度的条带全景的帧间相关距离,d为当前条带帧间相关距离;
步骤C14,对步骤C13球面变换后的梯度图,进行垂直方向的梯度投影,即将梯度图中像素点的值沿列方向累加起来,形成一个沿行方向的一维信号序列;
步骤C15,根据下述公式计算步骤C13球面变换后梯度图的像素位移Sθ:
其中,Φ0为中心处于0°纬度的条带全景的相邻帧图像视场角位移;WI为梯度图球面变换后的宽,WI的大小为θb与1000相乘取整后的数,其中θb是与2π/N0一个数量级的小数;
步骤C16,根据步骤C15得到的球面变换后梯度图的像素位移Sθ,在相邻两帧梯度图的一维信号序列中各取一段,计算这两段的相关系数ρ;
步骤C17,将当前条带全景的帧间相关距离d从1依次增大到d0,针对每一个d,执行步骤C12到步骤C16,计算出一系列的相关系数ρ(d),相关系数ρ(d)的最大值对应的d作为当前条带全景的帧间相关距离;
步骤C18,获得步骤C17中d依次从1增大到d0的相关系数序列ρ(d),使用窗函数对相关系数序列ρ(d)进行拟合,得到拟合后的相关函数ρ0(t):
其中,t是相关函数ρ0(t)的连续取值的自变量,hf是拟合函数的窗口宽度,一般可取hf=2;进一步计算出如下的相关函数插值序列;
对序列ρ1[i]进行数字低通滤波:
在数字低通滤波的计算中,在i+j<1,或i+j>10d0时,令ρ1[i+j]=0,m是滤波常数,m=4;j为半球展开图像的像素纵坐标,j的取值范围为[-m,m];
上述ρ2[i]是一个精确到一位小数的帧间相关函数序列,其最大值ρ2[m]对应的d=m/10即为亚像素精度的帧间相关距离。
3.如权利要求1所述的方法,其特征在于,所述步骤E具体包括下述步骤:
步骤E1,对每个条带全景,相对于中心处于0°纬度的条带全景底部行,当前条带全景中的各行依次左移s个像素点,s通过下述公式得到:
其中,D0为中心处于0°纬度的条带全景的圆周周长;R为球体半径;Wh为与当前条带全景图像的中心行垂直距离为h的图像行的周长,rh为该行图像所在的球面纬度圆的半径,rh通过下述公式得到:
其中,d为当前条带全景图像的帧间相关距离;
步骤E2,将各条带全景投影到半球面,伸展为半球展开图:
其中,d为当前条带的帧间相关距离,d0为中心处于0°纬度的条带全景的帧间相关距离,H为当前条带全景图的高度,Hh和Hl分别为变换后条带全景在半球展开图像中的顶部行的位置和底部行的位置;
步骤E3,对半球展开图中的相邻条带进行光线一致性调整。
4.如权利要求1所述的方法,其特征在于:
设半球展开图像像素点直角坐标为(i,j),半球展开图像第i行的宽度为Ci,圆盘全景图像中像素点的极坐标为(r(i,j),θ(i,j)),所述步骤F具体根据如下公式将所述半球展开图像正投影成圆盘显示:
r(i,j)=i
设球体半径为R,半球展开图像的像素直角坐标为(i,j),第i行的宽度为Ci,在半球显示中截取的起始经度为v,正侧投影后半球显示的图像像素点直角坐标为(X(i,j),Y(i,j)),所述步骤G具体根据如下公式将所述半球展开图像正侧投影成半球显示:
其中在计算中,若满足 条件的第i行的j的取值大于Ci,则在半球展开
图像中对应的实际像素的坐标为(i,j-Ci)。
5.一种利用单摄像机实时生成半球全景视频图像的系统,其特征在于,包括:
一摄像机,其放置在一个俯仰90度、水平360度的范围内旋转的云台上;
云台控制单元,用于控制云台将摄像机光轴的俯仰角方向调整为预置点所在的纬线的纬度方向,带动所述摄像机从预置点开始绕垂直轴在水平360度的范围内旋转;所述各个预置点沿半球面上选定的一条0°经线方向设置,且相邻预置点之间纬度差基本一致;
图像采集单元,用于在所述摄像机旋转过程中每隔一定时间间隔采集图像,并将即时采集的每帧视频图像预处理;
条带全景拼接单元,用于将预处理后的与同一个预置点相对应的视频图像拼接为一沿水平方向设置的条带全景,并针对各条带全景中嵌入的每帧视频图像,对其与左、右帧视频图像的重叠区域进行光线一致性调整;各个预置点的条带全景沿竖直方向排列;
半球展开图像拼接单元,用于将所述条带全景拼接单元拼接成的各条带全景进行0°经度对齐后进一步拼接为一半球展开图像;
半球全景视频图像生成单元,用于将所述半球展开图像正投影成圆盘显示、正侧投影成半球显示;
所述条带全景拼接单元在水平方向上采集N幅图像,根据当前条带全景的帧间相关距离d,计算出每帧视频图像的保留变形较小的中间垂直条带在当前条带全景中的位置,将其嵌入计算出的位置;
其中,N大于一个周期条带全景中所包含的视频图像帧数N0,N0可通过如下公式得到:
其中,D0为中心处于0°纬度的条带全景的圆周周长,d0为中心处于0°纬度的条带全景的帧间相关距离。
6.如权利要求5所述的系统,其特征在于,
所述条带全景拼接单元包括:
平行梯度图计算模块,用于获取当前视频图像帧,计算沿摄像机运动方向的该帧图像梯度,得到平行梯度图;
最底行视角计算模块,用于通过如下公式计算图像最底行视角宽度θb:
其中R为球体半径,W为图像宽度,H为图像高,d0为中心处于0°纬度的条带全景的帧间相关距离,d为当前条带帧间相关距离,当前条带图像最底行像素点所在纬度圆的纬度为所在纬度圆的半径为rb;
计算出的θb是与2π/N0一个数量级的小数,用θb与1000相乘取整后记作WI,把WI作为梯度图球面变化后的宽;
球面变换模块,用于根据所述图像最底行的视角大小将所述平行梯度图计算模块计算得到的梯度图做球面变换,使具有相同垂直视角的像素点排列在一垂直列上;具体为,设变换前的梯度图Gy(h,y)及变换后的梯度图gy(h,θ),球面变换关系式:
其中,y为梯度图最底行从左到右的像素点的位置;y对应的视角度数为θ,h为梯度图中像素点与梯度图中心像素点的垂直距离,h大小从-H/2到H/2,W为梯度图宽度,H为梯度图高;θb为图像最底行视场角大小;r为梯度图中垂直距离为h的像素点的球面纬度圆的半径,r通过下述公式得到:
R为球体半径,d0为中心处于0°纬度的条带全景的帧间相关距离,d为当前条带帧间相关距离;
梯度垂直投影信息提取模块,用于对所述球面变换模块进行球面变换后的梯度图,进行垂直方向的梯度投影,即将梯度图中的像素点值沿列方向累加起来,形成一个沿行方向的一维信号序列;
像素位移计算模块,用于根据下述公式计算所述球面变换模块进行变换后梯度图的像素位移为Sθ:
其中,Φ0为0°纬度条带全景图像中的相邻帧图像的视场角位移;
相关系数计算模块,用于根据所述像素位移计算模块得到的球面变换后梯度图像素位移Sθ,在相邻两帧梯度图的一维信号序列中各取一段,计算这两段的相关系数ρ;
条带全景的帧间相关距离计算模块,用于将当前条带全景的帧间相关距离d从1依次增大到d0,d0是0°纬度条带的帧间相关距离,针对每一个d,依次经过所述最底行视角计算模块、所述球面变换模块、所述梯度垂直投影信息提取模块、所述像素位移计算模块、所述相关系数计算模块计算出一系列的相关系数ρ(d),相关系数ρ(d)最大值时对应的d作为当前条带全景的帧间相关距离;
拟合模块,用于对所述条带全景的帧间相关距离计算模块得到的一系列帧间相关距离d的相关系数序列ρ(d),使用窗函数对该相关系数序列进行拟合,得到拟合后的相关函数ρ0(t):
其中,t是相关函数ρ0(t)的连续取值的自变量,hf是拟合函数的窗口宽度,一般可取hf=2;
亚像素精度相关距离计算模块,用于对所述拟合模块得到的相关函数ρ0(t),计算具有亚像素精度的帧间相关距离;该模块首先计算相关函数插值序列:
然后对序列ρ1[i]进行数字低通滤波:
在上式的计算中,在i+j<1,或i+j>10d0时,令ρ1[i+j]=0;m是滤波常数,m=4;
j为半球展开图像的像素纵坐标,j的取值范围为[-m,m];ρ2[i]是一个精确到一位小数的相关函数序列,其最大值ρ2[m]对应的d=m/10即为亚像素精度的帧间相关距离。
7.如权利要求5所述的系统,其特征在于,所述半球展开图像拼接单元包括:
条带0°经度对齐模块,用于在半球展开图像中将0°经度所在的像素点对齐到展开图的第一个垂直列上;
具体为,以中心处于0°纬度的条带全景底部行为基准,通过下述公式对每个条带全景中的各行依次左移s个像素点,s通过下述公式得到:
其中,D0为中心处于0°纬度的条带全景的圆周周长;R为球体半径;Wh为与当前条带全景图像的中心行垂直距离为h的当前条带图像行的周长,rh为该行图像所在的球面纬度圆的半径,rh通过下述公式得到:
其中,d为当前条带全景图像的帧间相关距离;
半球展开图像嵌入模块,用于按照如下公式将各条带全景伸展嵌入到半球展开图中:
其中,R为球体半径,d为帧间相关距离,d0为中心处于0°纬度的条带全景的帧间相关距离,H为当前条带全景图的高度,Hh和Hl分别为变换后条带全景在半球展开图像中的顶部行的位置和底部行的位置;
相邻条带一致性调整模块,用于对相邻的条带全景的重叠区域进行光线一致性调整。
8.如权利要求5所述的系统,其特征在于,所述半球全景视频图像生成单元将半球展开图像正投影成圆盘显示、正侧投影成半球显示,包括:
半球展开图像像素点的直角坐标(i,j)与正投影成圆盘显示中像素点的极坐标(r(i,j),θ(i,j))的关系利用如下公式计算:
r(i,j)=i
其中,Ci为半球展开图像第i行的宽度;
半球展开图像的像素点直角坐标(i,j)与正侧投影成半球显示的全景像素点的直角坐标(X(i,j),Y(i,j))的关系利用如下公式计算:
其中,R为球体半径,Ci为半球展开图像第i行的宽度,v为在半球显示中截取的起始经度值;在计算中,若满足 条件的第i行的j的取值大于Ci,则在半球展开图像中对应的实际像素的坐标为(i,j-Ci)。
利用单摄像机实时生成半球全景视频图像的方法及系统\n技术领域\n[0001] 本发明属于图像处理技术领域,尤其涉及一种利用单摄像机实时生成半球全景视频图像的方法及系统。\n背景技术\n[0002] 实时生成半球全景视频图像对于在安防监控系统中的应用有着非常重要的意义,同时也可用于其它使用,现有技术中,生成半球全景视频图像的方法有:\n[0003] 1992年,美国Alabama大学使用全景环形透镜PAL,利用它的平面圆柱透镜现象提出了半球成像和跟踪系统,实现实时的接近半球视场范围(160°)内寻的制导和跟踪的全新方案。\n[0004] 2001年中国科学院计算所实现了一个基于固定视点的球面全景图室内漫游系统,该系统能够将水平方向的图像投影到球面上,并实现漫游功能。该系统只是针对静态图像,并且没有完整的实现整个半球模型。\n[0005] 2005年浙江大学CAD&CG国家重点实验室开发了一套桌面型虚拟建筑环境实时漫游系统,该系统读取多幅静态图像,然后进行水平拼接和垂直拼图两种操作,生成全景图,并实现漫游功能。该系统是针对静态图像,实时性不强,并且能够覆盖的视角有限。\n[0006] “中国安防”年2006年12月出版的第3期中,文中介绍其“全景视频监控”是指只用一个摄像头不用机械移动部件,也不用图像拼接,能够捕捉涵盖整个半球(180°×360°),单文中并未给出具体的实现方法。\n[0007] 综上所述,现有技术中,利用单个普通摄像机实时生成整个半球全景视频图像的方法处于空白。\n发明内容\n[0008] 本发明所要解决的第一个技术问题在于提供一种利用单摄像机实时生成半球全景视频图像的方法,旨在实现利用单个普通摄像机实时生成整个半球全景视频图像。\n[0009] 本发明是这样实现的,一种利用单摄像机实时生成半球全景视频图像的方法,包括下述步骤:\n[0010] 步骤A,在半球面上选定一条经线作为0°经线,沿0°经线方向在俯仰90度的范围内设置若干个预置点,相邻预置点之间纬度差基本一致;\n[0011] 步骤B,在各个预置点处,将摄像机光轴的俯仰角方向调整为预置点所在的纬线的纬度方向,从预置点开始绕垂直轴在水平360度的范围内旋转摄像机,并在旋转过程中每隔一定时间间隔采集图像,将即时采集的每帧视频图像预处理;\n[0012] 步骤C,将预处理后的与同一个预置点纬度相同的视频图像拼接为一沿水平方向设置的条带全景;各个预置点的条带全景沿竖直方向排列;\n[0013] 步骤D,对各条带全景中嵌入的每帧视频图像,对其与左、右帧视频图像的重叠区域进行光线一致性调整;\n[0014] 步骤E,将各条带全景进行0°经度对齐后拼接为一半球展开图像;\n[0015] 步骤F,将所述半球展开图像正投影成圆盘显示;\n[0016] 步骤G,将所述半球展开图像正侧投影成半球显示。\n[0017] 本发明所要解决的第二个技术问题在于提供一种利用单摄像机实时生成半球全景视频图像的系统,包括:\n[0018] 一摄像机,其放置在一个俯仰90度、水平360度的范围内旋转的云台上;\n[0019] 云台控制单元,用于控制云台将摄像机光轴的俯仰角方向调整为预置点所在的纬线的纬度方向,带动所述摄像机从预置点开始绕垂直轴在水平360度的范围内旋转;所述各个预置点沿半球面上选定的一条0°经线方向设置,且相邻预置点之间纬度差基本一致;\n[0020] 图像采集单元,用于在所述摄像机旋转过程中每隔一定时间间隔采集图像,并将即时采集的每帧视频图像预处理;\n[0021] 条带全景拼接单元,用于将预处理后的与同一个预置点相对应的视频图像拼接为一沿水平方向设置的条带全景,并针对各条带全景中嵌入的每帧视频图像,对其与左、右帧视频图像的重叠区域进行光线一致性调整;各个预置点的条带全景沿竖直方向排列;\n[0022] 半球展开图像拼接单元,用于将所述条带全景拼接单元拼接成的各条带全景进行\n0°经度对齐后进一步拼接为一半球展开图像;\n[0023] 半球全景视频图像生成单元,用于将所述半球展开图像正投影成圆盘显示、正侧投影成半球显示。\n[0024] 本发明中,半球全景视频图像由多幅水平方向和垂直方向的图像拼接融合生成,计算、拼接和成像速度快,设备简单,成本低,可广泛应用于车站候车厅和机场候机厅等大场面场景视频监控及交通监控、全景安防监控等使用。\n附图说明\n[0025] 图1是本发明实施例提供的利用单摄像机实时生成半球全景视频图像方法的实现流程图;\n[0026] 图2是本发明实施例提供的图像球面变换示意图;\n[0027] 图3是本发明实施例提供的条带全景向球面投影示意图;\n[0028] 图4是本发明实施例提供的半球展开图像示意图;\n[0029] 图5是本发明实施例提供的半球展开图像条带融合示意图;\n[0030] 图6是本发明实施例提供的半球展开图像正侧投影行坐标示意图;\n[0031] 图7是本发明实施例提供的半球展开图像正侧投影列坐标示意图;\n[0032] 图8是本发明实施例提供的利用单摄像机实时生成半球全景视频图像的方法原理图;\n[0033] 图9是本发明实施例提供的利用单摄像机实时生成半球全景视频图像的系统结构原理图;\n[0034] 图10是图9的控制原理图;\n[0035] 图11是本发明实施例提供的条带全景拼接单元的结构原理图;\n[0036] 图12是本发明实施例提供的半球展开图像拼接单元的结构原理图。\n具体实施方式\n[0037] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。\n[0038] 本发明利用现使用的普通单摄像机,在水平360°、俯仰90°范围旋转的云台上,随云台的旋转进行连续的视频采集,将连续采集的多帧图像,经计算机实时合成半球全景视频图像。\n[0039] 半球全景视频图像由多幅水平方向和垂直方向的图像拼接融合生成,本发明实施例中垂直方向上有9幅图像条带,水平方向每个条带上有161.1幅图像。本发明首先选定一条经线作为0°经线,沿0°经线设置9个预置点,对各个条带,以预置点为起点,沿同一纬度圆在水平旋转过程中采集图像,将采集的图像预处理后嵌入条带。预置点处于0°纬度的条带全景为第1个条带,垂直向上,与9个预置点相对应的条带全景编号依次为1,2,...,9。\n根据各个条带半径计算出各个条带全景在半球展开图像中的位置,将条带全景进行0经度对齐后嵌入半球展开图像,对相邻条带全景重叠区域进行光线一致性调整。将半球展开图像正投影成圆盘显示,正侧投影成半球显示。\n[0040] 图1示出了本发明提供的利用单摄像机实时生成半球全景视频图像方法的实现流程,详述如下:\n[0041] 步骤A,在半球面上选定一条经线作为0°经线,沿0°经线方向在俯仰90度的范围内设置若干个预置点,相邻预置点之间纬度差基本一致。\n[0042] 步骤B,在各个预置点上,将摄像机光轴的俯仰角方向调整为预置点所在的纬线的纬度方向,从预置点开始绕垂直轴在水平360度的范围内旋转摄像机,并在旋转过程中每隔一定时间间隔采集图像,将即时采集的每帧视频图像预处理。\n[0043] 预处理包括:视频奇偶场景锯齿消减,删除每帧视频图像中变形较大的视频图像左、右边界垂直条带,保留变形较小的视频图像中间垂直条带。\n[0044] 视频奇偶场锯齿消减的具体方案和目的是:对于逐行扫描的摄像机可以省略这一步骤;对于隔行扫描的摄像机,只取每一帧视频图像的奇数场,对奇数场的每一行,计算每一个奇数列像素与后续相邻偶数列像素的平均值,然后将偶数列像素丢弃。该步骤的目的是为了消除某些摄像机由于运动带来的图像奇偶场锯齿偏移。\n[0045] 保留变形较小的视频图像中间垂直条带的标准是,一般摄像机会在边界处有一些非成像的黑条带,并在四周边界处变形较大。根据摄像机质量的差异,剪切掉视频图像每帧左右各10至30个像素宽度的垂直条带。\n[0046] 步骤C,将预处理后的与同一个预置点相对应的纬度圆上的视频图像拼接为一沿水平方向设置的条带全景;各个预置点的条带全景沿竖直方向排列。\n[0047] 在预置点所在的同一纬度圆的水平方向上采集N幅图像,根据当前条带全景的帧间相关距离d,计算出每帧视频图像中保留的变形较小的中间垂直条带在当前条带全景中的位置,将其嵌入计算出的位置。若一个周期全景条带由N0帧图像拼接而成,则上述N是N0与20之和的整数部分(N也可以是其它值,加20的目的是使摄像机旋转采集的图像帧数所覆盖的圆周视场适当大于一个圆周周期),N是每一个条带全景生成中实际采集的图像帧数。由于云台绕垂直轴水平旋转的角速度为固定不变,与摄像机光轴的纬度方向无关,因此设定在不同预置点所在纬度圆上的摄像机采集的图像序列的图像帧数N都是相同的。对计算出的当前条带全景的帧间相关距离d进行四舍五入得到dI,根据dI计算出每帧视频图像中保留的变形较小的中间垂直条带在当前条带全景中的位置,并将其嵌入计算出的位置。\n[0048] 假设中心处于0°纬度的条带全景的圆周周长为D0,中心处于0°纬度的条带全景的帧间相关距离为d0,N0的计算具体为公式(1):\n[0049] \n[0050] 其中,上述中心处于0°纬度的条带全景图的圆周周长D0的计算方式在ZL200710125400.5中有描述,为便于理解,本发明仅简述如下:\n[0051] A、获取云台匀速转动三到四个周期期间采集的视频图像序列。\n[0052] B、根据帧间相关距离d,对步骤A采集的视频图像序列进行全景拼接。\n[0053] C、对步骤B拼接得到的多周期全景图像,计算其灰度图的梯度投影直方图P(t)。\n[0054] D、对步骤C获得的梯度投影直方图,进行一维低通滤波,计算滤波信号的局部极大值位置(t0)。\n[0055] 一维低通滤波的目的和技术方案是:在低通滤波后的信号中可以获得更准确的最大值位置,该位置一般为图像中垂直边界最强的位置。一种技术实现方案为,首先对梯度垂直投影直方图的每个值取绝对值,得到一个非负的一维序列信号,将该信号与一个一维低通滤波器(如长度为7的低通滤波器[1,1,1,1,1,1,1])作卷积后的信号。\n[0056] E、以局部极大位置(t0)为中心,取适当长度直方信号图,以此作为待相关的局部信号L(t)。\n[0057] F、在梯度投影直方图P(t)中,找出与相关的局部信号L(t)相关系数大于0.9的\n3个位置,3个点分别为t1点、t2点、t3点。\n[0058] G、验算t1点、t2点和t3点相邻点之间距离关系,若t1点与t2点之间的距离等于t2点与t3点之间的距离,t1点与t2点、或t2点与t3点之间的距离即为全景视频图圆周周期(D0)。\n[0059] 同理,上述中心处于0°纬度的条带全景的帧间相关距离d0的计算方式在ZL200710125400.5中有描述,为便于理解,本发明仅简述如下:\n[0060] A、获取当前视频图像帧,计算沿摄像机运动方向的该帧图像梯度,得到平行梯度图。\n[0061] 计算沿摄像机运动方向的该帧图像梯度的目的是,将该帧图像中的图像特征用数学模型表示,便于帧图像之间的相关性判断,发明中的平行梯度图为:对图像使用水平梯度算子(如Sobel算子[1,0,-1;-2.0,-2;1,0,-1]等)进行卷积运算得到的图。\n[0062] B、对步骤A平行梯度图,进行垂直方向的梯度投影,得到梯度垂直投影直方图。发明中梯度垂直投影直方图为:对梯度图中每一像素点处的值沿列方向累加起来,形成的一个沿行方向的一维信号序列。\n[0063] C、在相邻帧重叠区域内,取相关的一段投影直方图。\n[0064] D、对步骤C中所取相关的一段投影直方图,对照相邻的上一帧视频图像的投影直方图中的相关位置,计算前后相邻的两帧图像的相关距离(d0)。\n[0065] 进一步地,在已知d0条件下,所述当前条带全景的帧间相关距离d的值通过下述步骤得到:\n[0066] 步骤C11,获取当前视频图像帧,计算沿摄像机运动方向的该帧图像梯度,得到平行梯度图Gy(h,y)。\n[0067] 计算沿摄像机运动方向的该帧图像梯度的目的是,将该帧图像中的图像特征用数学模型表示,便于帧图像之间的相关性判断,发明中的平行梯度图为:对图像使用水平梯度算子(如Sobel算子[1,0,-1;-2.0,-2;1,0,-1]等)进行卷积运算得到的图。\n[0068] 步骤C12,一幅图像投影到半球上,计算球面变换后图像最底行的视角大小。\n[0069] 设W为图像宽度,H为图像高,中心处于0°纬度的条带全景的帧间相关距离为d0,当前条带帧间相关距离为d,球体半径为R,当前条带图像最底行像素点所在纬度圆的纬度为 所在纬度圆的半径为rb,通过如下公式计算当前帧图像最底行视场角大小θb:\n[0070] \n[0071] \n[0072] \n[0073] \n[0074] θb是与2π/N0一个数量级的小数,用θb与1000相乘取整后记作WI,把WI作为梯度图球面变化后的宽。\n[0075] 步骤C13,根据所述图像最底行的视角大小将步骤C11平行梯度图做球面变换,使具有相同垂直视角的像素点排列在一垂直列上。\n[0076] 假设步骤C11梯度图最底行从左到右的像素点的位置为y,y的大小为1到W;y对应的视角度数为θ,大小从0到θb。h为梯度图中像素点与梯度图中心像素点的垂直距离,h大小从-H/2到H/2,计算梯度图中垂直距离为h的像素点的球面纬度圆的半径r:\n[0077] \n[0078] 将平行梯度图Gy(h,y)进行球面变换,得到平行梯度图gy(h,θ),球面变换关系式:\n[0079] \n[0080] \n[0081] 对梯度图进行球面变换的目的是:原梯度图投影在半球上,具有同一垂直视角的像素点的排列是弧线,进行球面变换是要将此弧线上的像素点,重新组织在一个垂直列上,如图2所示。\n[0082] 步骤C14,对步骤C13球面变换后的梯度图,进行垂直方向的梯度投影,具体方法是将梯度图中每一像素点处的值沿列方向累加起来,形成一个沿行方向的一维信号序列。\n本发明中以梯度垂直投影直方图来表示该一维信号序列。\n[0083] 步骤C15,计算步骤C13球面变换后梯度图帧间相关距离,该距离实际上是帧间视角相关距离。全景生成过程中,云台转动的角速度不变,若转动中采集图像的时间间隔固定,则在不同纬度圆上采集的相邻图像帧间视场角度位移相同,假设帧图像视场角位移为Φ0,一个圆周周期的图像帧数为N0,则对应球面变换后梯度图的像素位移为Sθ:\n[0084] \n[0085] 步骤C16,根据步骤C15得到的球面变换后梯度图的像素位移Sθ,在相邻两帧梯度图的一维信号序列中各取一段,计算这两段的相关系数ρ。\n[0086] 步骤C17,将当前条带全景的帧间相关距离d从1依次增大到d0,针对每一个d,执行步骤C12到步骤C16,计算出一系列的相关系数ρ(d),相关系数ρ(d)的最大值对应的d作为当前条带全景的帧间相关距离,此时因为d为整数,因此帧间相关距离的计算精度为像素级。\n[0087] 进一步地,为得到亚像素精度(精确到1位小数)的帧间相关距离,满足全景拼接精确度的要求,在步骤C17之后,还包括步骤C18:\n[0088] 步骤C18,获得步骤C17中d依次从1增大到d0的相关系数序列ρ(d),使用窗函数对相关系数序列ρ(d)进行拟合,得到拟合后的相关函数ρ0(t):\n[0089] \n[0090] 其中,t是相关函数ρ0(t)的连续取值的自变量,hf是拟合函数的窗口宽度,在本发明实施例中hf=2。进一步计算出如下的相关函数插值序列\n[0091] \n[0092] 对序列ρ1[i]进行数字低通滤波:\n[0093] \n[0094] 在公式(11)的计算中,在i+j<1,或i+j>10d0时,令ρ1[i+j]=0。在本发明实施例中,公式(11)中的m=4;j为半球展开图像的像素纵坐标,j的取值范围为[-m,m]。\n[0095] ρ2[i]是一个精确到一位小数的相关函数序列,其最大值ρ2[m]对应的d=m/10的值即为亚像素精度(精确到1位小数)的帧间相关距离。\n[0096] 步骤D,对各条带全景中嵌入的每帧视频图像,对其与左、右帧视频图像的重叠区域进行光线一致性调整。\n[0097] 步骤E,将各条带全景进行0°经度对齐后拼接为一半球展开图像。具体地,步骤E包括下述步骤:\n[0098] 步骤E1,对每个条带全景,相对于中心处于0°纬度的条带全景底部行,当前条带全景中的各行依次左移s个像素点,s通过下述公式得到:\n[0099] \n[0100] 其中,D0为中心处于0°纬度的条带全景的圆周周长;R为球体半径;Wh为与当前条带全景图像的中心行垂直距离为h的图像行的周长,rh为该行图像所在的球面纬度圆的半径,rh通过下述公式得到:\n[0101] \n[0102] 其中,d为当前条带全景图像的帧间相关距离。\n[0103] 步骤E2,将各条带全景投影到半球面,并伸展为半球展开图,图3为图像球面投影示意图,图4为半球展开图像示意图。具体实现方法为:\n[0104] 根据条带帧间相关距离d和球体半径R,计算变换后条带在半球展开图像中顶部行的位置Hh和底部行的位置Hl:\n[0105] \n[0106] \n[0107] 其中,d为帧间相关距离,R为球体半径,Hh和Hl分别为变换后条带全景在半球展开图像中的顶部行的位置和底部行的位置。\n[0108] 步骤E3,对相邻条带进行光线一致性调整:\n[0109] \n[0110] 上面公式中,f1(x,y)和f2(x,y)分别为上、下相邻两个条带全景的图像函数,(x,y)是图像的像素点坐标,图5示出了半球展开图像条带融合示意图,两个条带的图像重叠区域如图5中的阴影条带,阴影条带即为融合区域,融合区域的高度为T=H1l-H2h,H1l是上条带的底部行位置,H2h是下条带的顶部行位置,Δx是重叠区域像素点(x,y)到重叠区底部行边界的垂直距离,f(x,y)为融合后的像素值,它由两幅原始条带图像对应像素点的像素值的加权求和得到。\n[0111] 步骤F,将半球展开图像进行正投影成圆盘显示。\n[0112] 由于半球展开图像是由半球全景展开得到,因此直接将半球全景展开图像映射成圆盘显示。假设半球展开图像像素点坐标为(i,j),半球展开图像第i行的宽度为Ci,映射为圆盘全景图像中对应的像素点极坐标为(r(i,j),θ(i,j))。\n[0113] r(i,j)=i (17)\n[0114] \n[0115] 步骤G,将半球展开图像进行正侧投影成半球显示。\n[0116] 图6和图7分别示出了半球展开图像正侧投影的行、列坐标关系。假设球体半径为R,半球展开图像的像素坐标为(i,j),半球展开图像第i行的宽度为Ci,在半球显示中截取的起始经度为v,正侧投影后半球显示的全景像素点直角坐标为(X(i,j),Y(i,j))。\n[0117] \n[0118] \n[0119] 其中,在公式(20)中,若满足 条件的第i行的j的取值大于Ci,则在半球展开图像中对应的实际像素的坐标为(i,j-Ci)。通过改变起始经度v的值,可使观察者可以观察到整个半球视场,并产生半球转动的感觉。\n[0120] 图8示出了采用本发明实施例提供的利用单摄像机实时生成半球全景视频图像方法的原理,不再赘述。\n[0121] 图9示出了本发明实施例提供的利用单摄像机实时生成半球全景视频图像的系统的结构原理,而图10示出了图9的控制原理。一并参照图9、图10,该系统包括摄像机1、云台控制单元2、图像采集单元3、条带全景拼接单元4、半球展开图像拼接单元5、半球全景视频图像生成单元6,其中,条带全景拼接单元4、半球展开图像拼接单元5和半球全景视频图像生成单元6可以为内置于计算机或DSP处理器中的软件单元。\n[0122] 摄像机1放置在一个俯仰90度、水平360度的范围内旋转的云台上,云台控制单元2用于控制云台将摄像机光轴的俯仰角方向调整为预置点所在的纬线的纬度方向,带动摄像机1从预置点开始绕垂直轴在水平360度的范围内旋转,如上文所述,所述各个预置点沿半球面上选定的一条0°经线方向设置,且相邻预置点之间纬度差基本一致。\n[0123] 图像采集单元3在摄像机1旋转过程中每隔一定时间间隔采集图像,并将即时采集的每帧视频图像预处理。条带全景拼接单元4将预处理后的与同一个预置点相对应的视频图像拼接为一沿水平方向设置的条带全景,并针对各条带全景中嵌入的每帧视频图像,对其与左、右帧视频图像的重叠区域进行光线一致性调整,其中各个预置点的条带全景沿竖直方向排列。\n[0124] 然后由半球展开图像拼接单元5将条带全景拼接单元4拼接成的各条带全景进行\n0°经度对齐后进一步拼接为一半球展开图像,半球全景视频图像生成单元6最终将半球展开图像正投影成圆盘显示、正侧投影成半球显示。\n[0125] 所述半球全景视频图像生成单元6的工作原理如上文所述,此处不再赘述。\n[0126] 进一步地,图像采集单元3对每帧视频图像的变形较大的左、右边界垂直条带进行删除,保留变形较小的中间垂直条带;和/或对于隔行扫描的摄像机,只取每一帧视频图像的奇数场,对奇数场的每一行,计算每一个奇数列像素与后续相邻偶数列像素的平均值,然后将偶数列像素丢弃,以消减视频奇偶场景的锯齿偏移。\n[0127] 进一步地,条带全景拼接单元4在水平方向上采集N幅图像,根据当前条带全景的帧间相关距离d,计算出每帧视频图像的保留变形较小的中间垂直条带在当前条带全景中的位置,将其嵌入计算出的位置;\n[0128] 其中,N大于一个周期条带全景中所包含的视频图像帧数N0,N0可通过如下公式得到:\n[0129] \n[0130] 其中,D0为中心处于0°纬度的条带全景的圆周周长,d0为中心处于0°纬度的条带全景的帧间相关距离。\n[0131] 如图11所示,条带全景拼接单元4包括:平行梯度图计算模块41、最底行视角计算模块42、球面变换模块43、梯度垂直投影信息提取模块44、像素位移计算模块45、相关系数计算模块46、条带全景的帧间相关距离计算模块47、拟合模块48、亚像素精度相关距离计算模块49。\n[0132] 平行梯度图计算模块41用于获取当前视频图像帧,计算沿摄像机运动方向的该帧图像梯度,得到平行梯度图。设W为图像宽度,H为图像高,中心处于0°纬度的条带全景的帧间相关距离为d0,当前条带全景的帧间相关距离为d,球体半径为R,当前条带图像最底行像素点所在纬度圆的纬度为 所在纬度圆的半径为rb,最底行视角计算模块42用于通过如下公式计算图像最底行视角宽度θb:\n[0133] \n[0134] \n[0135] \n[0136] \n[0137] θb是与2π/N0一个数量级的小数,用θb与1000相乘取整后记作WI,把WI作为梯度图球面变化后的宽。\n[0138] 球面变换模块43根据所述图像最底行的视角大小将所述平行梯度图计算模块计算得到的梯度图做球面变换,使具有相同垂直视角的像素点排列在一垂直列上。梯度垂直投影信息提取模块44对所述球面变换模块进行球面变换后的梯度图,进行垂直方向的梯度投影,即将投影梯度图中的像素点值沿列方向累加起来,形成一个沿行方向的一维信号序列。像素位移计算模块45根据下述公式计算所述球面变换模块进行变换后梯度图的像素位移Sθ:\n[0139] \n[0140] 其中,Φ0为0°纬度条带全景图像中的相邻帧图像的视场角位移。\n[0141] 相关系数计算模块46用于根据所述像素位移计算模块得到的球面变换后梯度图的像素位移Sθ,在相邻两帧梯度图的一维信号序列中各取一段,计算这两段的相关系数ρ。条带全景的帧间相关距离计算模块47用于将当前条带全景的帧间相关距离d从1依次增大到d0,d0是0°纬度条带的帧间相关距离,针对每一个d,依次经过所述最底行视角计算模块、所述球面变换模块、所述梯度垂直投影信息提取模块、所述像素位移计算模块、所述相关系数计算模块计算出一系列的相关系数ρ(d),相关系数ρ(d)最大值时对应的d作为当前条带全景的帧间相关距离,此时d为整数,因此计算得到的帧间相关距离的精度是像素级的。\n[0142] 进一步地,条带全景拼接单元4还包括拟合模块48,用于对所述条带全景的帧间相关距离计算模块得到的一系列帧间相关距离d的相关系数序列ρ(d),使用窗函数对该相关系数序列进行拟合,得到拟合后的相关函数ρ0(t):\n[0143] \n[0144] 其中,t是相关函数ρ0(t)的连续取值的自变量,hf是拟合函数的窗口宽度,在本发明实施例中hf=2。\n[0145] 再进一步地,条带全景拼接单元4包括亚像素精度相关距离计算模块49。该模块利用拟合模块得到的相关函数ρ0(t),计算出如下的相关函数插值序列:\n[0146] \n[0147] 然后对序列ρ1[i]进行数字低通滤波:\n[0148] \n[0149] 在上式的计算中,在i+j<1,或i+j>10d0时,令ρ1[i+j]=0。且计算中m=4;\nj为半球展开图像的像素纵坐标,j的取值范围为[-m,m]。\n[0150] 上述ρ2[i]是一个精确到一位小数的帧间相关函数序列,其最大值ρ2[m]对应的d=m/10的值即为亚像素精度(精确到1位小数)的帧间相关距离。\n[0151] 如上文所述,设平行梯度图计算模块41得到的梯度图最底行从左到右的像素点的位置为y,y的大小为1到W;y对应视角度数为θ,大小从0到θb,h为梯度图的像素点与梯度图的中心像素点的垂直距离,h大小从-H/2到H/2,计算梯度图中垂直距离为h的任意像素点的球面纬度圆的半径r:\n[0152] \n[0153] 球面变换模块43将梯度图Gy(h,y)进行球面变换,得到梯度图gy(h,θ);根据下述变换关系式进行球面变换:\n[0154] \n[0155] \n[0156] 图12示出了半球展开图像拼接单元5的结构原理,包括条带0°经度对齐模块51和半球展开图像嵌入模块52。条带0°经度对齐模块51用于对每个条带全景,相对于中心处于0°纬度的条带全景的最底部行,将当前条带全景内的各行依次左移s个像素点;其中s通过下述公式得到:\n[0157] \n[0158] 其中,D0为中心处于0°纬度的条带全景的圆周周长;R为球体半径;Wh为与当前条带全景图像的中心行垂直距离为h的当前条带图像行的周长,rh为该行图像所在的球面纬度圆的半径,rh通过下述公式得到:\n[0159] \n[0160] 其中,d为当前条带全景图像的帧间相关距离。\n[0161] 半球展开图像嵌入模块52用于按照如下公式将各条带全景投影到半球面,并伸展为半球展开图:\n[0162] \n[0163] \n[0164] 其中,d为条带帧间相关距离,R为球体半径,Hh和Hl分别为变换后条带全景在半球展开图像中的顶部行位置和底部行位置。\n[0165] 进一步地,半球展开图像拼接单元5还包括相邻条带一致性调整模块53,用于按照如下公式,对相邻的条带全景的重叠区域进行光线一致性调整:\n[0166] \n[0167] 其中,f1(x,y)和f2(x,y)为上、下相邻两个条带全景的图像函数,T=H1l-H2h为重叠区域的高度,Δx是重叠区域像素点(x,y)到重叠区底部行边界的距离,f(x,y)为融合后的像素值。\n[0168] 本发明的技术关键在于,利用条带帧间相关距离(d)对连续采集的多帧视频图像拼接成条带。利用中心处于0°纬度的条带全景的帧间相关距离d0和全景视频图圆周周长D0,计算周期条带图像帧数N0和条带帧间相关距离d,对条带全景中的每一行进行左移预处理,以中心处于0°纬度的条带全景的最底部行为基准,对当前条带全景的各行左移s个像素点,将条带映射变换嵌入全景中,进行实时无缝半球全景视频图像拼接。采用上述技术方案,大大加快了无缝拼接时的计算,极大提高了成像速度,降低了设备制造成本。\n[0169] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
法律信息
- 2015-10-28
- 2013-04-17
实质审查的生效
IPC(主分类): H04N 5/232
专利申请号: 201210430511.8
申请日: 2012.11.01
- 2013-03-20
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2012-01-11
|
2011-08-03
| | |
2
| |
2008-08-20
|
2007-12-25
| | |
3
| |
2010-12-22
|
2009-12-29
| | |
4
| |
2010-10-13
|
2009-04-10
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |