本发明涉及视频技术领域,特别涉及一种全景视频的压缩方法及装置。
背景技术:
全景视频,是指360度全景视频,它是在360度全景技术之上发展延伸而来。它将连续多张的静态全景图片转化为动态的视频图像,全景视频可以在拍摄角度左右上下360度任意观看动态视频。全景视频它不在是单一的静态全景图片形式,是由很多张全景图片串联起来组成了流畅清楚的动态视频图像。
目前全景视频的播放方法是:服务器将全景视频发送给客户端;客户端将全景视频源进行解码成全景图片,根据观看者的当前角度对全景图片进行抽取,播放由抽取后的全景图片组成的视频。其中,全景视频的抽取是基于把图片贴到球体上进行。传统的球面全景图是以球体的球面纹理坐标展开的一张矩形图像,但是其实际的有用像素范围可以用一个椭圆表示,椭圆最宽处的宽度为矩形的长度,上下两边逐渐变短,最短处的宽度为一个像素点宽度,因此矩形球面全景图存在冗余的像素信息。
可见,在实际应用中,用户看到的全景视频仅为服务器发送的全景视频的一部分。但是服务器会将全部全景视频发送给客户端,导致不必要数据的传输,进而造成网络带宽的浪费。
技术实现要素:
本发明实施例的目的在于提供一种全景视频的压缩方法及装置,以减少网络带宽的浪费。
为达到上述目的,本发明实施例公开了一种全景视频的压缩方法,方法包括:
针对目标全景视频,生成所述目标全景视频的每一帧图片;
分别针对每一帧图片,压缩所述帧图片;
对压缩后的所述帧图片进行划分;
对划分得到的图片进行拼合;
根据拼合得到的所有图片,生成新的全景视频。
较佳的,所述分别针对每一帧图片,压缩所述帧图片,包括:
分别针对每一帧图片,利用插值技术,将所述帧图片压缩成菱形图片,其中,所述菱形图片的两条对角线长度分别为所述帧图片的宽度和高度。
较佳的,所述对压缩后的所述帧图片进行划分,包括:
将所述菱形图片等分为两个三角形图片,其中,所述两个三角形图片的高均为所述帧图片高度的一半或所述两个三角形图片的高为所述帧图片宽度的一半;
将两个三角形图片中的一个三角形图片等分为两个直角三角形图片;
所述对划分得到的图片进行拼合,包括:
将两个三角形图片中未进行等分的三角形图片、所述两个直角三角形图片拼合为一个矩形图片。
较佳的,所述对压缩后的所述帧图片进行划分,包括:
将所述菱形图片等分为两个三角形图片,其中,所述两个三角形图片的高均为所述帧图片高度的一半或所述两个三角形图片的高为所述帧图片宽度的一半;
所述对划分得到的图片进行拼合,包括:
将所述两个三角形图片分别变换为与所述两个三角形图片的高相同、且面积相等的两个直角三角形图片;
将所述两个直角三角形图片拼合为一个矩形图片。
较佳的,在根据拼合得到的所有图片,生成新的全景视频之前,所述方法还包括:
对拼合得到的图片的拼合边缘进行预设处理。
为达到上述目的,本发明实施例公开了一种全景视频的压缩装置,装置包括:
第一生成模块,用于针对目标全景视频,生成所述目标全景视频的每一帧图片;
压缩模块,用于分别针对每一帧图片,压缩所述帧图片;
划分模块,用于对压缩后的所述帧图片进行划分;
拼合模块,用于对划分得到的图片进行拼合;
第二生成模块,用于根据拼合得到的所有图片,生成新的全景视频。
较佳的,所述压缩模块,具体用于:
用于分别针对每一帧图片,利用插值技术,将所述帧图片压缩成菱形图片,其中,所述菱形图片的两条对角线长度分别为所述帧图片的宽度和高度。
较佳的,所述划分模块,具体用于:
将所述菱形图片等分为两个三角形图片,其中,所述两个三角形图片的高均为所述帧图片高度的一半或所述两个三角形图片的高为所述帧图片宽度的一半;
将两个三角形图片中的一个三角形图片等分为两个直角三角形图片;
所述拼合模块,具体用于:
将两个三角形图片中未进行等分的三角形图片、所述两个直角三角形图片拼合为一个矩形图片。
较佳的,所述划分模块,具体用于:
将所述菱形图片等分为两个三角形图片,其中,所述两个三角形图片的高均为所述帧图片高度的一半或所述两个三角形图片的高为所述帧图片宽度的一半;
所述拼合模块,具体用于:
将所述两个三角形图片分别变换为与所述两个三角形图片的高相同、且面积相等的两个直角三角形图片;
将所述两个直角三角形图片拼合为一个矩形图片。
较佳的,在第二生成模块之前,所述装置还包括:
处理模块,用于对拼合得到的图片的拼合边缘进行预设处理。
由上述的技术方案可见,本发明实施例提供的一种全景视频的压缩方法及装置,针对目标全景视频,生成所述目标全景视频的每一帧图片;分别针对每一帧图片,压缩所述帧图片;对压缩后的所述帧图片进行划分;对划分得到的图片进行拼合;根据拼合得到的所有图片,生成新的全景视频。
可见,对全景视频进行压缩,服务器将压缩后的新的全景视频发送给客户端,没有将不必要数据进行传输,进而减少了网络带宽的浪费。
当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种全景视频的压缩方法的流程示意图;
图2为本发明实施例提供的另一种全景视频的压缩方法的流程示意图;
图3为本发明实施例提供的一种全景视频的压缩装置的结构示意图;
图4为本发明实施例提供的另一种全景视频的压缩装置的结构示意图;
图5为本发明实施例提供的一种拼合后的矩形图片的生成示意图;
图6为本发明实施例提供的另一种拼合后的矩形图片的生成示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面首先对本发明实施例提供的一种全景视频的压缩方法进行详细说明。
参见图1,图1为本发明实施例提供的一种全景视频的压缩方法的流程示意图,可以包括如下步骤:
S101,针对目标全景视频,生成所述目标全景视频的每一帧图片;
具体的,生成的目标全景视频的每一帧图片可以为球面全景图,是按球面纹理坐标展开的一张矩形图片。其中,针对目标全景视频,可以采用视频解码等现有技术,生成该目标全景视频的每一帧图片,本发明实施例在此不对其进行赘述。
S102,分别针对每一帧图片,压缩所述帧图片;
具体的,可以分别针对每一帧图片,利用插值技术,将所述帧图片压缩成菱形图片,其中,所述菱形图片的两条对角线长度分别为所述帧图片的宽度和高度。
示例性的,分别针对每一帧图片,可以利用最近邻插值技术、线性插值技术、三次样条插值技术等插值技术对原有帧图片进行变换拉伸,从而将该帧图片压缩成菱形图片,其中,菱形图片的两条对角线长度分别为所述帧图片的宽度和高度。其中,最近邻插值技术、线性插值技术、三次样条插值技术等插值技术均为现有技术,本发明实施例在此对其不进行赘述。
具体的,还可以针对每一帧图片,确定该帧图片的每一行的像素数量的压缩比,例如该帧图片的最中间行的压缩比为1:1(表示不压缩最中间行的像素数量),该帧图片的边缘行即第一行和最后一行的压缩比为行的像素点个数:1(表示将图片边缘行的像素个数压缩为1),除第一行和最后一行外,将自最中间行到第一行或最后一行的行像素点的数量压缩为(xy-2nx)/y,其中x为该帧图片的行像素点的数量,y该帧图片的列像素点的数量(例如,该帧图片的分辨率尺寸为200*100,则x为200,y为100),n为自最中间行到第一行或最后一行的序号;根据确定的各个行的压缩比,对压缩比对应的行的像素点的数量进行压缩,将该帧图片压缩成菱形图片,其中,菱形图片的两条对角线长度分别为所述帧图片的宽度和高度。
S103,对压缩后的所述帧图片进行划分;
具体的,在实际应用中,可以将所述菱形图片等分为上、下(或左、右)两个三角形图片,其中,所述两个三角形图片的高均为所述帧图片高度的一半或所述两个三角形图片的高为所述帧图片宽度的一半;将两个三角形图片中的一个三角形图片等分为两个直角三角形图片。
具体的,在实际应用中,可以将所述菱形图片等分为上、下(或左、右)两个三角形图片,其中,所述两个三角形图片的高均为所述帧图片高度的一半或所述两个三角形图片的高为所述帧图片宽度的一半。
示例性的,分别针对每一帧图片,可以以菱形图片的其中一条对角线(例如该条对角线的长度为该帧图片的宽度)为划分边界,将菱形图片等分为两个三角形图片,其中,两个三角形图片的高均为该帧图片高度的一半;进一步地,可以将两个三角形图片中的任一个三角形图片等分为两个直角三角形图片,也可以不对其进行等分。在实际应用中,还可以以菱形图片的另一条对角线(例如该条对角线的长度为该帧图片的高度)为划分边界,将菱形图片等分为两个三角形图片,其中,两个三角形图片的高为所述帧图片宽度的一半;进一步地,可以将两个三角形图片中的任一个三角形图片等分为两个直角三角形图片,也可以不对其进行等分。
S104,对划分得到的图片进行拼合;
具体的,在实际应用中,可以将两个三角形图片中未进行等分的三角形图片、所述两个直角三角形图片拼合为一个矩形图片。
示例性的,对于在将两个三角形图片中的一个三角形图片等分为两个直角三角形图片的情况下,可以将两个直角三角形图片分别平移到上述两个三角形图片中未进行等分的三角形图片的左侧和右侧(或者上侧和下侧,具体以实现拼合为一个矩形图片为准),从而将上述两个三角形图片中未进行等分的三角形图片和两个直角三角形图片拼合为一个矩形图片,使得该矩形图片的宽度为原有的图片宽度,该矩形图片的高度变为原有的图片高度的一半,或者使得该矩形图片的高度为原有的图片高度,该矩形图片的宽度变为原有的图片宽度的一半,从而拼合后的矩形图片分辨率尺寸减少为原有矩形图片尺寸的一半。
具体的,在实际应用中,可以将所述两个三角形图片分别变换为与所述两个三角形图片的高相同、且面积相等的两个直角三角形图片;将所述两个直角三角形图片拼合为一个矩形图片。
示例性的,对于在没有将两个三角形图片中的一个三角形图片等分为两个直角三角形图片的情况下,可以利用图像变换技术,将上述两个三角形图片分别进行变换,得到与这两个三角形图片的高相同、且面积相等的两个直角三角形图片;将得到的两个直角三角形图片拼合为一个矩形图片,使得该矩形图片的宽度为原有的图片宽度,该矩形图片的高度变为原有的图片高度的一半,或者使得该矩形图片的高度为原有的图片高度,该矩形图片的宽度变为原有的图片宽度的一半,从而拼合后的矩形图片分辨率尺寸减少为原有矩形图片尺寸的一半。其中,图像变换技术为现有技术,本发明实施例在此对其不进行赘述。
示例性的,如图5所示,图5为本发明实施例提供的一种拼合后的矩形图片的生成示意图。在实际应用中,可以将原有矩形图片等分为上下两个矩形图片M和N,对矩形图片M进行拉伸,将矩形图片M压缩为三角形A;对矩形图片N进行拉伸,将矩形图片N压缩为与三角形A同底等高、并与三角形A对称的三角形,将该三角形等分为直角三角形B和直角三角形C;将三角形B平移拷贝到三角形A的右侧,得到三角形B1,将三角形C平移拷贝到三角形A的左侧,得到三角形C1;将三角形A、三角形B1和三角形C1拼合为一张矩形图片,拼合后的该矩形图片分辨率尺寸减少为原有矩形图片尺寸的一半。
示例性的,如图6所示,图6为本发明实施例提供的另一种拼合后的矩形图片的生成示意图。在实际应用中,还可以将原有矩形图片等分为上下两个矩形图片M和N,对矩形图片M(与上述矩形图片M相同)进行拉伸,将矩形图片M压缩为三角形A(与上述三角形A相同);对矩形图片N(与上述矩形图片N相同)进行拉伸,将矩形图片N压缩为与三角形A同底等高、并与三角形A对称的三角形E;将三角形A在水平方向上进行变换,得到直角三角形A1,将三角形E在水平方向上进行变换,得到直角三角形E1;将直角三角形A1和直角三角形E1拼合为一张矩形图片,拼合后的该矩形图片分辨率尺寸减少为原有矩形图片尺寸的一半。
S105,根据拼合得到的所有图片,生成新的全景视频。
具体的,根据拼合得到的所有矩形图片,可以采用现有技术例如对所有矩形图片进行编码等技术,生成新的压缩后的全景视频,本发明实施例在此对其不进行赘述。
具体的,在实际应用中,拼合得到的矩形图片可以称之为钻石全景图。在播放新的压缩后的全景视频过程中,可以按照钻石全景图的生成逆过程对钻石全景图进行反变换处理,得到球面全景图,可以利用开放图形库(Open Graphics Library,简称OpenGL)着色器的像素反采样技术或者开放图形库的三角面片纹理绘制技术,对球面全景图进行渲染,由球面全景图渲染出全景画面。其中,开放图形库着色器的像素反采样技术和开放图形库的三角面片纹理绘制技术均为现有技术,本发明实施例在此对其不进行赘述。
具体的,在实际应用中,还可以利用OpenGl shader(开放图形库着色器)的像素反采样方法,由全景视频播放器的显示视口对应的球面全景图的纹理坐标,计算出对应的钻石全景图的纹理坐标,从而不必按照钻石全景图的生成逆过程对钻石全景图进行反变换处理,不必得到球面全景图,直接可以由钻石全景图渲染出全景画面。
可见,对全景视频进行压缩,服务器将压缩后的新的全景视频发送给客户端,没有将不必要数据进行传输,进而减少了网络带宽的浪费。
参见图2,图2为本发明实施例提供的另一种全景视频的压缩方法的流程示意图,本发明图2所示实施例在图1所示实施例的基础上,增加S106:对拼合得到的图片的拼合边缘进行预设处理。
具体的,在对拼合得到的全景图渲染时,为了避免反采样操作的子线性插值时,相邻三角形边界处的像素越界导致出现拼缝,可以对拼合得到的图片的拼合边缘进行处理。可以在每个三角形水平扫描线段的边界点处,重复绘制1个或2个或3个像素,该像素与所属三角形的相邻像素具有相同颜色,从而形成重复像素的边缘来隔离。具体的,在实际应用中,所形成的边缘可以是双边界边缘,也可以是单边界边缘。其中,双边界为具有两种颜色的边界,单边界为具有单一颜色的边界。
可见,对全景视频进行压缩,服务器将压缩后的新的全景视频发送给客户端,没有将不必要数据进行传输,进而减少了网络带宽的浪费,避免了边界处的像素越界导致拼缝现象的出现。
参见图3,图3为本发明实施例提供的一种全景视频的压缩装置的结构示意图,与图1所示的流程相对应,该压缩装置可以包括:第一生成模块201、压缩模块202、划分模块203、拼合模块204和第二生成模块205。
第一生成模块201,用于针对目标全景视频,生成所述目标全景视频的每一帧图片;
压缩模块202,用于分别针对每一帧图片,压缩所述帧图片;
具体的,压缩模块202,具体可以用于:
分别针对每一帧图片,利用插值技术,将所述帧图片压缩成菱形图片,其中,所述菱形图片的两条对角线长度分别为所述帧图片的宽度和高度。
划分模块203,用于对压缩后的所述帧图片进行划分;
拼合模块204,用于对划分得到的图片进行拼合;
具体的,划分模块203,具体可以用于:将所述菱形图片等分为两个三角形图片,其中,所述两个三角形图片的高均为所述帧图片高度的一半或所述两个三角形图片的高为所述帧图片宽度的一半;将两个三角形图片中的一个三角形图片等分为两个直角三角形图片。拼合模块204,具体可以用于:将两个三角形图片中未进行等分的三角形图片、所述两个直角三角形图片拼合为一个矩形图片。
具体的,划分模块203,具体可以用于:将所述菱形图片等分为两个三角形图片,其中,所述两个三角形图片的高均为所述帧图片高度的一半或所述两个三角形图片的高为所述帧图片宽度的一半。拼合模块204,具体可以用于:将所述两个三角形图片分别变换为与所述两个三角形图片的高相同、且面积相等的两个直角三角形图片;将所述两个直角三角形图片拼合为一个矩形图片。
第二生成模块205,用于根据拼合得到的所有图片,生成新的全景视频。
可见,对全景视频进行压缩,服务器将压缩后的新的全景视频发送给客户端,没有将不必要数据进行传输,进而减少了网络带宽的浪费。
参见图4,图4为本发明实施例提供的另一种全景视频的压缩装置的结构示意图,本发明图4所示实施例在图3所示实施例的基础上,增加处理模块206,用于对拼合得到的图片的拼合边缘进行预设处理。
可见,对全景视频进行压缩,服务器将压缩后的新的全景视频发送给客户端,没有将不必要数据进行传输,进而减少了网络带宽的浪费,避免了边界处的像素越界导致拼缝现象的出现。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。