本发明涉及视频编码领域,具体而言,涉及一种便于vr视频编码的方法、装置、电子设备及存储介质。
背景技术:
在目前的视频编码方案中,根据视频内容做自适应分层编码的算法主要有以下三类:对图像做分割、对编码块进行复杂度分析、对图像内容做分割或者识别。上述算法的主要问题是计算量普遍过大,对图像的分割和识别通常不具有实时性,使得在实时性很强的视频直播应用中无法应用上述算法。
全景vr的体育比赛直播,对视频的分辨率和帧速率指标要求都很高。如果直接采用普通的编码方法,视频流码率过高,会使得网络直播的困难极大。
技术实现要素:
有鉴于此,本发明实施例的目的在于提供一种便于vr视频编码的方法、装置、电子设备及存储介质,以缓解上述问题。
第一方面,本发明实施例提供了一种便于vr视频编码的方法,所述方法包括:获取待编码的vr视频图像,所述vr视频图像包括第一图像以及第二图像;将所述第一图像以及所述第二图像均划分成预设行列数的像素块;针对所述第一图像中的每个所述像素块,在所述第二图像中确定出一个像素块作为适配块,计算该像素块到所述适配块之间的距离,其中,该像素块与所述适配块之间的相似度差异值最小;基于所述距离计算得到与所述距离对应的像素块的深度信息;在进行编码前,根据所述深度信息,将每个所述像素块进行分组,使得所述vr视频图像至少被分为两组。
第二方面,本发明实施例提供了一种便于vr视频编码的装置,获取模块,用于获取待编码的vr视频图像,所述vr视频图像包括第一图像以及第二图像;划分模块,用于将所述第一图像以及所述第二图像均划分成预设行列数的像素块;计算模块,用于针对所述第一图像中的每个所述像素块,在所述第二图像中确定出一个像素块作为适配块,计算该像素块到所述适配块之间的距离,其中,该像素块与所述适配块之间的相似度差异值最小;所述计算模块,还用于基于所述距离计算得到与所述距离对应的像素块的深度信息;分组模块,用于在进行编码前,根据所述深度信息,将每个所述像素块进行分组,使得所述vr视频图像至少被分为两组。
第三方面,本发明实施例提供一种电子设备,包括相互连接的存储器、处理器,所述存储器内存储计算机程序,当所述计算机程序被所述处理器执行时,使得所述电子设备执行第一方面所述的方法。
第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行第一方面所述的方法。
与现有技术相比,本发明各实施例提出的便于vr视频编码的方法、装置、电子设备及存储介质的有益效果是:在获取到待编码的vr视频图像后,先将vr视频图像包括第一图像以及第二图像划分成预设行列数的像素块;然后针对所述第一图像中的每个所述像素块,在所述第二图像中确定出一个像素块作为适配块,计算该像素块到所述适配块之间的距离,其中,该像素块与所述适配块之间的相似度差异值最小;然后基于所述距离计算得到与所述距离对应的像素块的深度信息;在进行编码前,根据所述深度信息,将每个所述像素块进行分组,使得所述vr视频图像至少被分为两组,那么在后续进行vr视频编码时,与低质量组的视频内容相比,对高质量组的视频内容分配相对更多的码率,从而可以提高压缩效率,节省带宽。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明实施例提供的电子设备的结构框图;
图2为本发明第一实施例提供的便于vr视频编码的方法的流程图之一;
图3为本发明第一实施例提供的像素块到适配块之间的距离的示意图;
图4为本发明第一实施例提供的领域像素块的示意图;
图5为本发明第一实施例提供的适配块的确定示意图;
图6为本发明第一实施例提供的常数a、b的计算示意图;
图7为本发明第二实施例提供的便于vr视频编码的装置的结构框图。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
如图1所示,是电子设备100的方框示意图。所述电子设备100可以包括:便于vr视频编码的装置、存储器110、存储控制器120、处理器130、外设接口140、输入输出单元150、音频单元160、显示单元170。其中,所述电子设备100可以是用户终端,例如个人电脑(personalcomputer,pc)、平板电脑、智能手机、个人数字助理(personaldigitalassistant,pda)等,也可以是服务器。
所述存储器110、存储控制器120、处理器130、外设接口140、输入输出单元150、音频单元160以及显示单元170各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。所述便于vr视频编码的装置包括至少一个可以软件或固件(firmware)的形式存储于所述存储器110中或固化在电子设备的操作系统(operatingsystem,os)中的软件功能模块。所述处理器130用于执行存储器110中存储的可执行模块,例如所述便于vr视频编码的装置包括的软件功能模块或计算机程序。
其中,存储器110可以是,但不限于,随机存取存储器(randomaccessmemory,ram),只读存储器(readonlymemory,rom),可编程只读存储器(programmableread-onlymemory,prom),可擦除只读存储器(erasableprogrammableread-onlymemory,eprom),电可擦除只读存储器(electricerasableprogrammableread-onlymemory,eeprom)等。其中,存储器110用于存储程序,所述处理器130在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的流程定义的方法可以应用于处理器130中,或者由处理器130实现。
处理器130可能是一种集成电路芯片,具有信号的处理能力。上述的处理器130可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述外设接口140将各种输入/输出装置耦合至处理器130以及存储器110。在一些实施例中,外设接口140,处理器130以及存储控制器120可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。
输入输出单元150用于提供给用户输入数据实现用户与电子设备100的交互。所述输入输出单元150可以是,但不限于,鼠标和键盘等。
音频单元160向用户提供音频接口,其可包括一个或多个麦克风、一个或者多个扬声器以及音频电路。
显示单元170在电子设备100与用户之间提供一个交互界面(例如用户操作界面)或用于显示图像数据给用户参考。在本实施例中,所述显示单元170可以是液晶显示器或触控显示器。若为触控显示器,其可为支持单点和多点触控操作的电容式触控屏或电阻式触控屏等。支持单点和多点触控操作是指触控显示器能感应到来自该触控显示器上一个或多个位置处同时产生的触控操作,并将该感应到的触控操作交由处理器130进行计算和处理。
第一实施例
请参照图2,图2是本发明第一实施例提供的一种便于vr视频编码的方法的流程图,所述方法应用于电子设备。下面将对图2所示的流程进行详细阐述,所述方法包括:
步骤s110:获取待编码的vr视频图像,所述vr视频图像包括第一图像以及第二图像。
由于vr视频图像有左右两种模式,因此,电子设备100获取到的vr视频图像可以包括左图像以及右图像。其中,左图像与右图像之间存在视角差异。
可选的,所述第一图像可以为左图像,相应的,所述第二图像为右图像;可选的,所述第一图像可以为右图像,相应的,所述第二图像为左图像。
步骤s120:将所述第一图像以及所述第二图像均划分成预设行列数的像素块。
其中,所述预设行列数可以为8行8列,即把所述第一图像以及所述第二图像均划分成8×8的像素块,每个像素块的尺寸大小相同。当然,作为一种可选的实施方式,也可以使用更大(例如9×9)或者更小(例如6×6)的分块原则。
当然,作为一种可选的实施方式,在将所述第一图像以及所述第二图像均划分成预设数量的像素块之前,为了提高计算效率,还可以将所述第一图像以及所述第二图像分别进行二值化处理,得到与所述第一图像对应的第一梯度图像以及与所述第二图像对应的第二梯度图像。其中,图像二值化处理就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果,其中,0表示白色,255表示黑色。将256个亮度等级的灰度图像通过选取适当的阈值而获得仍然可以反映图像整体和局部特征的二值化图像。例如,将灰度值大于或等于阈值的像素点的灰度值重置为255,将灰度值小于预设阈值的像素点的灰度值重置为0。
图像的二值化有利于图像的进一步处理,使图像变得简单,数据量减小,不仅能凸显出感兴趣的目标的轮廓,而且能降低计算复杂度。
其中,可以通过sobel或canney算法对第一图像以及所述第二图像进行二值化处理,从而得到与所述第一图像对应的第一梯度图像以及与所述第二图像对应的第二梯度图像。
步骤s130:针对所述第一图像中的每个所述像素块,在所述第二图像中确定出一个像素块作为适配块,计算该像素块到所述适配块之间的距离,其中,该像素块与所述适配块之间的相似度差异值最小。
由于第一图像与第二图像之间的关系是属于同一个vr视频图像,因此,第一图像与第二图像之间差异度主要是由于视角差异造成的。在这种情况下,针对第一图像中的每个像素块s,都可以在第二图像中找到与该像素块s对应的一个适配块d。其中,在将像素块s与第二图像中的每个像素块进行相似度差异值计算时,作为像素块s的适配块d与像素块s之间的相似度差异值最小。即当在所述第二图像中搜索到一个像素块d使得所述sad最小时,其中,sad为所述相似度差异值,确定该像素块d为与第一图像中的像素块s所对应的所述适配块,其中,s可以称之为源像素块,d可以称之为目的像素块。
当预设行列数为8×8,且在进行相似度差异值计算时,可选的,针对所述第一图像中的每个所述像素块,将该像素块作为源像素块s,每个像素块对应的像素块矩阵的维度为8×8,其中,该像素块矩阵中的元素值为该像素块中的像素点的像素值,可以基于公式
请结合图3,针对所述第一图像中的每个所述像素块,在找到与之对应的适配块后,可以通过窗口搜索,计算得到该像素块(即源像素块s)和与之对应的适配块(即目的像素块d)之间的运动位移,即距离mv。
为了计算mv,因此,无论是源像素块还是目的像素块,其坐标(x,y)分别基于像素块各自所在的1/2图像的左上角为原点来确定,其中,源像素块的左上角像素点的坐标和目的像素块左上角像素点的坐标的差值就是运动向量mv。由于第一图像和第二图像是左右图像,因此,源像素块的左上角像素点的坐标和目的像素块的左上角像素点的坐标之间的水平距离为运动向量mv。
假设源像素块的坐标是(x=8,y=6),可以表述为s(8,16),目的像素块的坐标是(x=25,y=16),可以表述为d(25,16),那么mv的数值就是25-8=17;当然也可能是负数,比如目的像素块的坐标是(x=-2,y=16),那么运动向量mv就是-10。
作为另一种可选的实施方式,针对第一图像中的源像素块s,在所述第二图像中搜索到多个像素块使得所述sad最小时,为了确定出源像素块s的适配块,因此,将与所述源像素块s相邻的多个像素块确定为领域像素块,其中,请参看图4,领域像素块可以是第一图像中以s中心的8个像素块。
在确定了领域像素块之后,电子设备100可以获取所述领域像素块中所包括的每个像素块对应的适配块的位置区域,并统计出领域像素块中每个像素块的适配块的位置分布,然后将位置分布中出现频率最高的区域作为目标区域。由于领域像素块与源像素块s之间存在一定的相似度,因此,源像素块s的适配块d也极有可能出现在目标区域。因此,可以将使得所述sad最小的所述多个像素块中属于所述目标区域的像素块确定为与所述源像素块s对应的适配块。请参看图5,图中a点作为适配块出现的频率最高,因此将a点作为与源像素块s对应的适配块。
步骤s140:基于所述距离计算得到与所述距离对应的像素块的深度信息。
可选的,可以基于公式
请结合图6,
为了建立深度信息与mv之间的关系,因此,根据拍摄物体和摄像机之间的距离(d)、左右眼图像之间的视差(mv),以及三角形的相似性,可以得到:d/dt=dv/mv,其中,dv为摄像机与左右眼图像之间的距离,dt为瞳距,由于摄像机与左右眼图像之间的距离是变量不是常量,因此,需要将d/dt=dv/mv中的dv消去。
由于相机焦距是fk,根据相机成像原理,建立dv与d的线性关系,继而可以得到:1/d+1/dv=1/fk,使得dv由d来表示,请参考下式。
dv=1/(1/fk-1/d)
通过将dv的表达式带入d/dt=dv/mv,继而可以得到:
d/dt=1/((1/fk-1/d)*mv),使得该表达式不受dv的影响。
通过将d/dt=1/((1/fk-1/d)*mv)作进一步变形,继而可以得到:
d*mv=dt/(1/fk-1/d)
d*mv=dt/((d-fk)/(fk*d))
d*mv=dt*fk*d/(d-fk)
(d-fk)*mv=dt*fk
进一步地,得到等式:d=dt*fk/mv+fk。
由于瞳距和焦距都是常量,上式可进一步转换为:
由于上式中存在两个未知参数a和b,因此,需要构建两个方程来联立求解a和b,其中,这两个参数可以通过两组实物拍摄图像得到:
步骤s150:在进行编码前,根据所述深度信息,将每个所述像素块进行分组,使得所述vr视频图像至少被分为两组。
在摄像机在拍摄物体前时,在对图像进行编码时,需要以对某些区域的图像分配高码率,某些区域的图像分配低码率,从而可以提高压缩效率,节省带宽,在主观质量没有明显差别的前提下,节约码率,因此,需要对摄像机拍摄到区域进行划分,作为一种实施方式,可以人为地在拍摄环境下设置四个标志物,从而计算得到常数a与b,并得到标志物的深度数据作为深度裁剪的窗口边界值,并根据深度裁剪的窗口边界值以对摄像机拍摄到区域进行划分,根据像素块的深度数据判断该像素块是否属于根据深度裁剪的窗口边界值确定的窗口区域内,将位于窗口区域内的像素块划分为高质量组,将位于窗口区域外的像素块划分为低质量组,在对vr视频图像进行编码时,基于第一码率对属于高质量组的像素块进行编码,基于第二码率对属于低质量组的像素块进行编码,其中,第一码率的值大于第二码率的值。
因此,通过将vr视频图像进行分层,在后续进行vr视频编码时,基于上述码率分配方式,与低质量组的视频图像相比,对高质量组的视频图像分配相对较多的码率,可以提高压缩效率,节省带宽,在主观质量没有明显差别的前提下,可以节省码率。
本发明第一实施例提供的一种便于vr视频编码的方法,在获取到待编码的vr视频图像后,先将vr视频图像包括第一图像以及第二图像划分成预设行列数的像素块;然后针对所述第一图像中的每个所述像素块,在所述第二图像中确定出一个像素块作为适配块,计算该像素块到所述适配块之间的距离,其中,该像素块与所述适配块之间的相似度差异值最小;然后基于所述距离计算得到与所述距离对应的像素块的深度信息;在进行编码前,根据所述深度信息,将每个所述像素块进行分组,使得所述vr视频图像至少被分为两组,那么在后续进行vr视频编码时,与低质量组的视频图像相比,对高质量组的视频图像分配相对更多的码率,从而可以提高压缩效率,节省带宽。
第二实施例
请参照图7,图7是本发明第二实施例提供的一种便于vr视频编码的装置400的结构框图。下面将对图7所示的结构框图进行阐述,所示装置包括:
获取模块410,用于获取待编码的vr视频图像,所述vr视频图像包括第一图像以及第二图像;
划分模块420,用于将所述第一图像以及所述第二图像均划分成预设行列数的像素块;
计算模块430,用于针对所述第一图像中的每个所述像素块,在所述第二图像中确定出一个像素块作为适配块,计算该像素块到所述适配块之间的距离,其中,该像素块与所述适配块之间的相似度差异值最小;
所述计算模块430,还用于基于所述距离计算得到与所述距离对应的像素块的深度信息;
分组模块440,用于在进行编码前,根据所述深度信息,将每个所述像素块进行分组,使得所述vr视频图像至少被分为两组。
可选的,所述装置还包括:预处理模块,用于将所述第一图像以及所述第二图像分别进行二值化处理,得到与所述第一图像对应的第一梯度图像以及与所述第二图像对应的第二梯度图像。
可选的,所述计算模块430,用于针对所述第一图像中的每个所述像素块,基于公式
可选的,所述计算模块430,还用于当在所述第二图像中搜索到多个像素块使得所述sad最小时,将与所述sij相邻的多个像素块确定为领域像素块;获取所述领域像素块所包括的每个像素块对应的适配块的位置区域,确定出适配块出现频率最高的区域作为目标区域;将使得所述sad最小的所述多个像素块中属于所述目标区域的像素块确定为与所述sij对应的适配块。
可选的,所述计算模块430,还用于基于公式
本实施例对便于vr视频编码的装置400的各功能模块实现各自功能的过程,请参见上述图1至图5所示实施例中描述的内容,此处不再赘述。
此外,本发明实施例还提供了一种电子设备,其示意图可以如图1所示,包括相互连接的存储器110、处理器120,所述存储器110内存储计算机程序,当所述计算机程序被所述处理器120执行时,使得所述电子设备100执行本发明任一项实施方式所提供的便于vr视频编码的方法。
此外,本发明实施例还提供了一种计算机可读存储介质,在该计算机可读存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行本发明任一项实施方式所提供的便于vr视频编码的方法。
此外,本发明实施例还提供了一种计算机程序,该计算机程序可以存储在云端或者本地的存储介质上,当所述计算机程序在计算机上运行时,使得所述计算机执行本发明任一项实施方式所提供的便于vr视频编码的方法。
综上所述,本发明实施例提出的便于vr视频编码的方法、装置、电子设备及存储介质,在获取到待编码的vr视频图像后,先将vr视频图像包括第一图像以及第二图像划分成预设行列数的像素块;然后针对所述第一图像中的每个所述像素块,在所述第二图像中确定出一个像素块作为适配块,计算该像素块到所述适配块之间的距离,其中,该像素块与所述适配块之间的相似度差异值最小;然后基于所述距离计算得到与所述距离对应的像素块的深度信息;在进行编码前,根据所述深度信息,将每个所述像素块进行分组,使得所述vr视频图像至少被分为两组,那么在后续进行vr视频编码时,与低质量组的视频图像相比,对高质量组的视频图像分配相对更多的码率,从而可以提高压缩效率,节省带宽。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。