本发明涉及视频编码技术,特别是涉及一种全景视频菱形采样方法及装置。
背景技术:
全景视频是指空间中一个观察点四周所有的场景,由这个观察点所能接收到的所有光线构成。全景视频可以抽象成一个以观察点为中心的球面。
在用计算机处理全景视频的时候,不可避免地要对全景视频进行离散化空间采样。在对全景视频进行离散化空间采样的时候,需要保证一定的空间采样密度,以达到所需的清晰度。同时,又要考虑到计算机的存储器不适合存储球面结构的数据,需要以某种方式把采样点排列到平面上。
现有的球面采样方法,通常将球面采样过程分为三步:第一步,映射,把球面映射为平面上的一个区域;第二步,平面采样,以映射后的平面区域为基础设计采样点的分布方式;第三步,排列,把采样点排列为一个矩形。
在第一步映射的过程中,经常不是等面积映射,而且球面的不同区域在映射前后面积的比例也是不同的。第二步平面采样的过程中,经常是把采样点设计成在映射后的平面区域中均匀分布。第一步和第二步结合起来,就会造成采样点在球面上的分布不均匀。理论上,球面赤道附近的采样点数应该比两极附近采样点数多。第三步在排列时,往往不能做到内容的完整相邻,给视频编码压缩带来不利。
目前,有三种常用的球面采样方法:经纬图采样,六面体采样以及棱锥采样。
经纬图采样如图1所示,球面上任意一个点可以用所处的经度θ和纬度描述,θ∈[0,2π),于是可以将球面映射到坐标系下一个宽高比为2:1的矩形。对这个矩形进行均匀采样。经纬图采样方法虽然具有完整相邻性,但在球面的两极附近采样密度过高,会产生很大的冗余。
六面体采样如图2所示,首先将球面映射为其外切正六面体的六个面,从而得到六个平面正方形,再对六个平面正方形进行均匀采样,最终用某种方式把六个正方形拼成一个矩形。六面体采样的采样点在球面上的分布也是不均匀的,依然存在较大的冗余,并且矩形的内容也不具有完整相邻性。
棱锥采样如图3所示,首先将球面映射为一个外切正四棱锥,再将该正四棱锥的每个侧面(等腰三角形)沿底边垂线的方向进行压缩,直到顶角变成直角。这样底面和四个经过二次映射的侧面正好可以拼成一个正方形。最后对这个正方形进行均匀采样。棱锥采样的采样点在球面上的分布也是不均匀的,矩形的内容也不具有完整相邻性。其不均匀程度介于经纬图采样和六面体采样之间,冗余程度也介于经纬图采样和六面体采样之间。
综上所述,已有的全景视频采样方法的主要缺点是存在较大的采样结构冗余和最终形成的矩形不具有内容完整相邻性。采样点在球面上不均匀分布,不仅会带来采样冗余,还给视频质量评价带来不便,因为最终的采样点对应的球面面积是不同的,因此每个采样点的失真对视频质量的影响也是不同的,在计算全景视频经过某种处理,例如压缩解压缩后的质量损失时,必须考虑到每个采样点的重要性是不同的。矩形视频在内容上的不相邻性也不利于视频编码的压缩编码。
技术实现要素:
为克服上述现有技术存在的不足,本发明之目的在于提供一种全景视频菱形采样方法及装置,其可以使采样点在球面上的分布满足赤道附近采样点数多,两极附近采样点数很少,从而避免了采样结构冗余,使得在达到相同的空间清晰度的条件下,采样点数减少,而且,拼成的矩形具有完整的内容相邻性,能提高编码压缩效率。
为达上述及其它目的,本发明提出一种全景视频菱形采样方法,包括如下步骤:
步骤一,根据空间清晰度要求,用等间隔的纬线将球面分成N=2K个环形曲面,N为偶数,K为整数。将得到的环形曲面依次记为Oi,i=0,1,...,N-1,从球心的角度观察,Oi按照从上到下的顺序排列;
步骤二,用等间隔的经线将环形曲面Oi(i=K+M或i=K-1-M,M=0,1,2,...,K-1)均匀地分成2N-2-4M个区域,其中一条经线为0°经线。将得到的区域依次记为Ai,j,j=0,1,...,2N-3-4M,从球心的角度观察,Ai,j按照东经度数增加或西经度数减少的顺序排列,其中Ai,0和Ai,2N-3-4M相邻且分割线为0°经线;
步骤三,计算步骤二得到的球面上的每一个区域Ai,j内的光线的平均值,作为该区域对应的采样点的采样值Si,j。
步骤四,将采样值排列到一个N×N的矩阵中,Bx,y表示矩阵第x行第y列的元素,Ti表示Oi的区域个数,则
Bx,y=Si,j。当y+x<K-1时,j=x,i=K-1-y;
Bx,y=Si,j。当y-x>K时,j=x-Ti+1,i=y-K-1;
Bx,y=Si,j。当x-y>K时,j=Ti+k-x,i=k+x;
Bx,y=Si,j。当x+y>3K-1时,j=Ti+x-2K,i=3k-1-y;
Bx,y=Si,j。当x,y不属于上面四种情况时,j=y-Ti/2,i=x;
进一步地,于步骤一中,N为偶数,为计算机处理的方便,N可以取16的倍数;
进一步地,于步骤二中,当i的值从0到K-1增加时,Oi被分割得到的区域数为2,6,10,...,2N-2,成一等差数列,公差为4;当i的值从K到2K-1增加时,Oi被分割得到的区域数为2N-2,2N-6,...,6,2,成一等差数列,公差为-4,采样点的总数为N2。
进一步地,于步骤三中,采样点的编号为(i,0),(i,1)...,(i,Ti-1),Ti=2N-4*|i-(N-1)/2|。
进一步地,于步骤三中,编号为(i,0)的采样点对应的区域和编号为(i,Mi-1)的采样点对应的区域是相邻的,它们的分割线是0度经线,从球心的角度观察,编号为(i,k)的采样点对应的区域在编号为(i,k+1)的采样点对应的区域的左侧。
进一步地,该方法还包括:在存储时,首先记录N;然后将所得的所有采样点的数据按照以下顺序排成一列:(0,0),(0,1),...,(0,M0-1),(1,0),(1,1),...,(1,M1-1),...,(N-1,0),(N-1,1),...,(N-1,MN-1-1)。
进一步地,该方法还包括:在平面显示器上显示时,将所得的采样点数据排列在一个N行、M列的矩形区域内,并将每一行编号为(i,0)的数据对齐,其他数据依次排列,矩形区域内没有填满的部分用任意数据填充。
进一步地,该方法还包括:需要将每一帧的采样点数拆拼成一个N行、N列的矩形,具体拆拼方法是:先将所得的采样点数据排列成一个N行、2N列的矩形,然后以0°经线两边各K列,共N列数据作为前半球,其余N-2列数据作为后半球,将前后半球数据分别排列成一个N行、N列,N行N-2列的矩形中,再将后半球的菱形数据区域等分成4份,按边与边之间的相邻关系分别拼接到前半球矩形中的无数据区域,使前半球矩形内全部有视频数据,并且数据之间具有完整的相邻关系,具体排列算法可按照步骤4来实现。
为达到上述目的,本发明还提供一种全景视频菱形采样装置,包括:
球面分割单元,根据空间清晰度要求,用等间隔的纬线将球面分成N=2K个环形曲面,N为偶数,K为整数。将得到的环形曲面依次记为Oi,i=0,1,...,N-1,从球心的角度观察,Oi按照从上到下的顺序排列;
环形曲面分割单元,用等间隔的经线将环形曲面Oi(i=K+M或i=K-1-M,M=0,1,2,...,K-1)均匀地分成2N-2-4M个区域,其中一条经线为0°经线。将得到的区域依次记为Ai,j,j=0,1,...,2N-3-4M,从球心的角度观察,Ai,j按照东经度数增加或西经度数减少的顺序排列,其中Ai,0和Ai,2N-3-4M相邻且分割线为0°经线;
采样值计算单元,计算步骤二得到的球面上的每一个区域Ai,j内的光线的平均值,作为该区域对应的采样点的采样值Si,j。
排列单元,将采样值排列到一个N×N的矩阵中,Bx,y表示矩阵第x行第y列的元素,Ti表示Oi的区域个数,则
Bx,y=Si,j,当y+x<K-1时,j=x,i=K-1-y;
Bx,y=Si,j,当y-x>K时,j=x-Ti+1,i=y-K-1;
Bx,y=Si,j,当x-y>K时,j=Ti+k-x,i=k+x;
Bx,y=Si,j,当x+y>3K-1时,j=Ti+x-2K,i=3k-1-y;
Bx,y=Si,j,当x,y不属于上面四种情况时,j=y-Ti/2,i=x;
进一步地,该装置在存储时,首先记录N;然后将所得的所有采样点的数据按照以下顺序排成一列:(0,0),(0,1),...,(0,T0-1),(1,0),(1,1),...,(1,T1-1),...,(N-1,0),(N-1,1),...,(N-1,TN-1-1);在平面显示器上显示时,将所得的采样点数据排列在一个N行、2N列的矩形区域内,并将每一行编号为(i,0)的数据对齐,其他数据依次排列,矩形区域内没有填满的部分用任意数据填充。
与现有技术相比,本发明一种全景视频菱形采样方法及装置采样点在球面上的分布满足赤道附近采样点数多,两极附近采样点数很少,从而避免了采样结构冗余,使得在达到相同的空间清晰度的条件下,采样点数减少,而且,拼成的矩形具有完整的内容相邻性,能提高编码压缩效率。
附图说明
图1为现有技术球面采样方法中经纬图采样的示意图;
图2为现有技术球面采样方法中六面体采样的示意图;
图3为现有技术球面采样方法中棱锥采样的实验图;
图4为本发明一种全景视频菱形采样方法的步骤流程图;
图5为本发明一种全景视频菱形采样装置的系统架构图;
图6所示为一个用分辨率为4096×2048的经纬图表示的全景视频的其中一幅图像;
图7所示为采用本发明后所得的显示图像。
图8所示为采用本发明后所得的显示图拆平成编码图像的中间图像。
图9所示为采用本发明后所得的编码图像。
具体实施方式
以下通过特定的具体实例并结合附图说明本发明的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其它优点与功效。本发明亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本发明的精神下进行各种修饰与变更。
图4为本发明一种全景视频菱形采样方法的步骤流程图。如图4所示,本发明一种全景视频菱形采样方法,包括如下步骤:
步骤401,根据空间清晰度要求,用等间隔的纬线将球面分成N=2K个环形曲面,N为偶数,K为整数。将得到的环形曲面依次记为Oi,i=0,1,...,N-1,从球心的角度观察,Oi按照从上到下的顺序排列;
步骤402,用等间隔的经线将环形曲面Oi(i=K+M或i=K-1-M,M=0,1,2,...,K-1)均匀地分成2N-2-4M个区域,其中一条经线为0°经线。将得到的区域依次记为Ai,j,j=0,1,...,2N-3-4M,从球心的角度观察,Ai,j按照东经度数增加或西经度数减少的顺序排列,其中Ai,0和Ai,2N-3-4M相邻且分割线为0°经线;
步骤403,计算步骤二得到的球面上的每一个区域Ai,j内的光线的平均值,作为该区域对应的采样点的采样值Si,j。
步骤404,将采样值排列到一个N×N的矩阵中,Bx,y表示矩阵第x行第y列的元素,Ti表示Oi的区域个数,则
Bx,y=Si,j。当y+x<K-1时,j=x,i=K-1-y;
Bx,y=Si,j。当y-x>K时,j=x-Ti+1,i=y-K-1;
Bx,y=Si,j。当x-y>K时,j=Ti+k-x,i=k+x;
Bx,y=Si,j。当x+y>3K-1时,j=Ti+x-2K,i=3k-1-y;
Bx,y=Si,j。当x,y不属于上面四种情况时,j=y-Ti/2,i=x;
在存储时,首先记录N和M。然后将所得的所有采样点的数据按照以下顺序排成一列:(0,0),(0,1),...,(0,T0-1),(1,0),(1,1),...,(1,T1-1),...,(N-1,0),(N-1,1),...,(N-1,TN-1-1)。
在平面显示器上显示时,可以将所得的采样点数据排列在一个N行、M列的矩形区域内,并将每一行编号为(i,0)的数据对齐,其他数据依次排列。矩形区域内没有填满的部分可以用任意数据填充。
在进行压缩编码的时候,需要将每一帧的采样点数拆拼成一个N行、N列的矩形,具体拆拼方法是:先按上述方法排列成一个N行、2N列的矩形,然后以0°经线两边各K列,共N列数据作为前半球,其余N-2列数据作为后半球,将前后半球数据按上述方法分别排列成一个N行、N列,N行N-2列的矩形中,再将后半球的菱形数据区域等分成4份,按边与边之间的相邻关系分别拼接到前半球矩形中的无数据区域,使前半球矩形内全部有视频数据,并且数据之间具有完整的相邻关系,具体排列算法可按照步骤404来实现。
图5为本发明一种全景视频菱形采样装置的系统架构图。如图5所示,本发明一种全景视频菱形采样装置,包括:球面分割单元501、环形曲面分割单元502、采样值计算单元503以及排列单元504。
其中,球面分割单元501,根据空间清晰度要求,用等间隔的纬线将球面分成N=2K个环形曲面,N为偶数,K为整数。将得到的环形曲面依次记为Oi,i=0,1,...,N-1,从球心的角度观察,Oi按照从上到下的顺序排列。
环形曲面分割单元502,用等间隔的经线将环形曲面Oi(i=K+M或i=K-1-M,M=0,1,2,...,K-1)均匀地分成2N-2-4M个区域,其中一条经线为0°经线。将得到的区域依次记为Ai,j,j=0,1,...,2N-3-4M,从球心的角度观察,Ai,j按照东经度数增加或西经度数减少的顺序排列,其中Ai,0和Ai,2N-3-4M相邻且分割线为0°经线。
采样值计算单元503,计算环形曲面分割单元502得到的球面上的每一个区域Ai,j内的光线的平均值,作为该区域对应的采样点的采样值Si,j。
排列单元504,用于将采样值排列到一个N×N的矩阵中,Bx,y表示矩阵第x行第y列的元素,Ti表示Oi的区域个数,则
Bx,y=Si,j。当y+x<K-1时,j=x,i=K-1-y;
Bx,y=Si,j。当y-x>K时,j=x-Ti,i=y-K-1;
Bx,y=Si,j。当x-y>K时,j=Ti+k+1-x,i=k+x;
Bx,y=Si,j。当x+y>3K-1时,j=Ti+x+1-2K,i=3k-1-y;
Bx,y=Si,j。当x,y不属于上面四种情况时,j=y-(Ti+2)/2,i=x;
本发明在存储时,首先记录N。然后将所得的所有采样点的数据按照以下顺序排成一列:(0,0),(0,1),...,(0,T0-1),(1,0),(1,1),...,(1,T1-1),...,(N-1,0),(N-1,1),...,(N-1,TN-1-1)。
在平面显示器上显示时,可以将所得的采样点数据排列在一个N行、2N列的矩形区域内,并将每一行编号为(i,0)的数据对齐,其他数据依次排列。矩形区域内没有填满的部分可以用任意数据填充。
在进行压缩编码的时候,需要将每一帧的采样点数拆拼成一个N行、N列的矩形,具体拆拼方法是:先按平面显示器上显示时的方法排列成一个N行、2N列的矩形,然后以0°经线两边各K列,共N列数据作为前半球,其余N-2列数据作为后半球,将前后半球数据按在平面显示器上显示时的方法分别排列成一个N行、N列,N行N-2列的矩形中,再将后半球的菱形数据区域等分成4份,按边与边之间的相邻关系分别拼接到前半球矩形中的无数据区域,使前半球矩形内全部有视频数据,并且数据之间具有完整的相邻关系,具体排列算法可按照由排列单元504实现。
以下将通过具体实施例来进一步说明本发明:
实施例一
如图6所示为一个用分辨率为4096×2048的经纬图表示的全景视频的其中一幅图像,在本发明具体实施例中,该全景视频为彩色视频,具有三个分量。假设所采用的颜色分量是RGB,采样后仍然用RGB表示每个采样点的颜色。假设空间清晰度的要求对三个分量是相同的,都是N=1024,M=2048,量化精度要求对每个分量也是相同的,都是量化为256级。则对每个分量,重复如下步骤一到步骤四:
第一步,用等间隔的纬线将球面分成1024=2*512个环形曲面。将得到的环形曲面依次记为Oi,i=0,1,...,1023,从球心的角度观察,Oi按照从上到下的顺序排列;
第二步,用等间隔的经线将环形曲面Oi(i=512+M或i=512-1-M,M=0,1,2,...,K-1)均匀地分成2048-2-4M个区域,其中一条经线为0°经线。将得到的区域依次记为Ai,j,j=0,1,...,2048-3-4M,从球心的角度观察,Ai,j按照东经度数增加或西经度数减少的顺序排列,其中Ai,0和Ai,2N-3-4M相邻且分割线为0°经线;
第三步,计算步骤二得到的球面上的每一个区域Ai,j内的光线的平均值,并进行256级量化,得到一个0到255之间的整数值,作为该区域对应的采样点的采样值,记为Si,j。
第四步,将采样值排列到一个1024×1024的矩阵中,Bx,y表示矩阵第x行第y列的元素,Ti表示Oi的区域个数,则
Bx,y=Si,j。当y+x<K-1时,j=x,i=K-1-y;
Bx,y=Si,j。当y-x>K时,j=x-Ti+1,i=y-K-1;
Bx,y=Si,j。当x-y>K时,j=Ti+k-x,i=k+x;
Bx,y=Si,j。当x+y>3K-1时,j=Ti+x-2K,i=3k-1-y;
Bx,y=Si,j。当x,y不属于上面四种情况时,j=y-Ti/2,i=x;
在存储时,首先记录每个分量采样的行数1024。然后将所得的所有采样点的数据按照以下顺序排成一列:(0,0),(0,1),...,(0,T0-1),(1,0),(1,1),...,(1,T1-1),...,(1023,0),(1023,1),...,(1023,T1023-1)。同一个采样点的三个分量按照B,G,R的顺序排列。
在平面显示器上显示时,可以将所得的采样点排列在一个1024行、2048列的矩形区域内,并将每一行编号为(i,0)的数据放在每一行的第1024个位置,编号为(i,k),k=1..Ti/2,的采样点的数据放在第i行第1024+k个位置,编号为(i,Ti-k),k=1..Ti/2-1,的采样点的数据放在第i行第1024-k个位置。矩形区域内没有填满的部分用255填充,所得图像如图7所示
在压缩编码时,需要将每一帧的采样点数拆拼成一个1024行、1024列的矩形,具体拆拼方法是:先按平面显示器上显示时的方法排列成一个1024行、2048列的矩形,然后根据前后半球将菱形数据区域分成两个菱形存在两个1024行、1024列的矩形中,如图8所示,再将后半球的菱形数据区域等分成4份,按边与边之间的相邻关系分别拼接到前半球矩形中的无数据区域,使前半球矩形内全部有视频数据,所得图像如图9所示。
实施例二
如图6所示为一个用分辨率为4096×2048的经纬图表示的全景视频的其中一幅图像,在本发明具体实施例中,该全景视频为彩色视频,具有三个分量。假设所采用的颜色分量是YcbCr,采样比例是4:4:4,采样后仍然用YCbCr表示每个采样点的颜色。假设空间清晰度的要求对Y分量是N=1024,2N=2048,对Cb和Cr分量是N=512,2N=1024,量化精度要求对每个分量是相同的,都是量化为256级。
则对Y分量,进行如下步骤:
第一步,用等间隔的纬线将球面分成1024=2*512个环形曲面。将得到的环形曲面依次记为Oi,i=0,1,...,1023,从球心的角度观察,Oi按照从上到下的顺序排列;
第二步,用等间隔的经线将环形曲面Oi(i=512+M或i=512-1-M,M=0,1,2,...,K-1)均匀地分成2048-2-4M个区域,其中一条经线为0°经线。将得到的区域依次记为Ai,j,j=0,1,...,2048-3-4M,从球心的角度观察,Ai,j按照东经度数增加或西经度数减少的顺序排列,其中Ai,0和Ai,2N-3-4M相邻且分割线为0°经线;
第三步,计算步骤二得到的球面上的每一个区域Ai,j内的光线的平均值,并进行256级量化,得到一个0到255之间的整数值,作为该区域对应的采样点的采样值,记为Si,j。
第四步,将采样值排列到一个1024×1024的矩阵中,Bx,y表示矩阵第x行第y列的元素,Ti表示Oi的区域个数,则
Bx,y=Si,j。当y+x<K-1时,j=x,i=K-1-y;
Bx,y=Si,j。当y-x>K时,j=x-Ti+1,i=y-K-1;
Bx,y=Si,j。当x-y>K时,j=Ti+k-x,i=k+x;
Bx,y=Si,j。当x+y>3K-1时,j=Ti+x-2K,i=3k-1-y;
Bx,y=Si,j。当x,y不属于上面四种情况时,j=y-Ti/2,i=x;
则对Cb和Cr分量,分别进行如下步骤:
第一步,用等间隔的纬线将球面分成512=2*256个环形曲面。将得到的环形曲面依次记为Oi,i=0,1,...,512,从球心的角度观察,Oi按照从上到下的顺序排列;
第二步,用等间隔的经线将环形曲面Oi(i=256+M或i=256-1-M,M=0,1,2,...,K-1)均匀地分成1024-2-4M个区域,其中一条经线为0°经线。将得到的区域依次记为Ai,j,j=0,1,...,1024-3-4M,从球心的角度观察,Ai,j按照东经度数增加或西经度数减少的顺序排列,其中Ai,0和Ai,2N-3-4M相邻且分割线为0°经线;
第三步,计算步骤二得到的球面上的每一个区域Ai,j内的光线的平均值,并进行256级量化,得到一个0到255之间的整数值,作为该区域对应的采样点的采样值,记为Si,j。
第四步,将采样值排列到一个512×512的矩阵中,Bx,y表示矩阵第x行第y列的元素,Ti表示Oi的区域个数,则
Bx,y=Si,j。当y+x<K-1时,j=x,i=K-1-y;
Bx,y=Si,j。当y-x>K时,j=x-Ti+1,i=y-K-1;
Bx,y=Si,j。当x-y>K时,j=Ti+k-x,i=k+x;
Bx,y=Si,j。当x+y>3K-1时,j=Ti+x-2K,i=3k-1-y;
Bx,y=Si,j。当x,y不属于上面四种情况时,j=y-Ti/2,i=x;
在存储时,首先记录Y分量采样的行数1024和每行最大的采样点数2048,Cb分量采样的行数512和每行最大的采样点数1024。Cr分量采样的行数512和每行最大的采样点数1024。然后将所得的Y分量采样点的数据按照以下顺序排成一列:(0,0),(0,1),...,(0,M0-1),(1,0),(1,1),...,(1,T1-1),...,(1023,0),(1023,1),...,(1023,T1023-1)。在Y分量采样点的数据后面将所得的Cb分量采样点的数据按照以下顺序排成一列:(0,0),(0,1),...,(0,T0-1),(1,0),(1,1),...,(1,T1-1),...,(511,0),(511,1),...,(511,T511-1)。在Cb分量采样点的数据后面将所得的Cr分量采样点的数据按照以下顺序排成一列:(0,0),(0,1),...,(0,T0-1),(1,0),(1,1),...,(1,M1-1),...,(511,0),(511,1),...,(511,T511-1)。
在压缩编码时,需要将每一帧的Y分量采样点数拆拼成一个1024行、1024列的矩形、Cb和Cr分量分别拆拼成一个512行、512列的矩形。具体拆拼方法是:先按平面显示器上显示时的方法将Y分量排列成一个1024行、2048列的矩形,然后根据前后半球将菱形数据区域分成两个菱形存在两个1024行、1024列的矩形中,再将后半球的菱形数据区域等分成4份,按边与边之间的相邻关系分别拼接到前半球矩形中的无数据区域,使前半球矩形内全部有视频数据;然后将Cb和Cr分量分别按Y分量的方法分别拆拼成一个512行、512列的矩形。
综上所述,本发明一种全景视频菱形采样方法及装置采样点在球面上的分布满足赤道附近采样点数多,两极附近采样点数很少,从而避免了采样结构冗余,使得在达到相同的空间清晰度的条件下,采样点数减少,而且,拼成的矩形具有完整的内容相邻性,能提高编码压缩效率。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修饰与改变。因此,本发明的权利保护范围,应如权利要求书所列。