深度信息编码方法、解码方法及装置的制造方法
【专利摘要】本发明实施例提供一种深度信息编码方法、解码方法以及装置,编码时,计算深度值索引表中相邻深度值的一级差值;将数值不同的一级差值按照第二顺序排列,并计算排列顺序中相邻一级差值的二级差值;将数值不同的一级差值按照第二顺序设置索引编号;遍历相邻深度值的一级差值,确定每一相邻深度值的一级差值对应的索引编号;将最大深度值和最小深度值中的至少一个以及最大一级差值按照第一位宽、各个二级差值及各一级差值的索引编号按照第二位宽分别进行编码;解码时,根据解码获得的最大深度值和最小深度值中的至少一个,最大一级差值、各个二级差值及将各一级差值的索引编号,即获得深度值索引表中的深度值。本发明减少了编码占用的资源。
【专利说明】
深度信息编码方法、解码方法及装置
技术领域
[0001]本发明实施例涉及视频技术领域,尤其涉及一种深度信息编码方法、解码方法及
目.0
【背景技术】
[0002]三维视频相较于传统的二维视频,除了包含颜色信息还包括深度信息,深度信息是指视频图像中物景各点到摄像机之间的距离信息,通常利用深度图来描述深度信息,深度图通常是一幅灰度图,每个像素的取值范围为O?255,深度图中的像素值,也称为深度值,可以用来描述视频图像中物景各点到摄像机之间的距离。
[0003]在进行三维视频编码时,也需要对深度信息进行编码,现有技术的一种编码方式是采用深度值索引表算法,首先建立视频深度图的深度值索引表,在深度值索引表中深度值是按照从小到大的顺序排列,每一个深度值对应一个索引编号,编码端在进行深度信息编码时,是将索引编号进行编码写入码流中,同时将深度值索引表写入码流中;解码端从码流中可以解码出深度值的索引编号,结合深度值索引表,即可以解码得到深度信息。
[0004]但是,现有的这种编码方式,需要编码深度值索引表中的全部深度值的索引编号,为了适应数值不同的索引编号,深度值的索引编号需要占用较多的比特数目,且需要写入深度值索引表,因此导致编码占用较多的资源。
【发明内容】
[0005]本发明实施例提供一种深度信息编码方法、解码方法以及装置,用以解决现有技术中编码占用资源较多的技术问题。
[0006]本发明实施例提供一种深度信息编码方法,包括:
[0007]获取深度值索引表;其中,所述深度值索引表中的深度值按照第一顺序排列;
[0008]计算所述深度值索引表中相邻深度值的差值,作为一级差值;
[0009]选择数值不同的一级差值按照第二顺序排列,并计算所述排列中相邻一级差值的差值,作为二级差值;
[0010]将所述数值不同的一级差值按照所述第二顺序依次设置索引编号,并遍历各个相邻深度值的一级差值,根据所述数值不同的一级差值设置的索引编号,确定每一个相邻深度值的一级差值对应的索引编号,其中,数值相同的一级差值的索引编号相同;
[0011]将最大深度值和最小深度值中的至少一个、以及最大一级差值按照第一位宽,各个二级差值以及各个相邻深度值的一级差值的索引编号按照第二位宽,分别进行编码写入码流中,其中,所述第二位宽小于所述第一位宽。
[0012]本发明实施例提供一种深度信息解码方法,编码得到的码流中包括最大深度值和最小深度值中的至少一个、最大一级差值、各个二级差值以及各个相邻深度值的一级差值时,所述方法包括:
[0013]将所述码流进行解码,按照第一位宽解码获得最大深度值和最小深度值中至少一个、以及最大一级差值;按照第二位宽解码获得各个二级差值以及各个相邻深度值的一级差值的索引编号;
[0014]根据所述最大一级差值、以及所述各个二级差值,获得数值不同的一级差值;
[0015]根据按照第二顺序排列的所述数值不同的一级差值,以及各个相邻深度值的一级差值的索引编号,获得各个相邻深度值的一级差值;
[0016]根据所述最大深度值和所述最小深度值中的至少一个、以及所述各个相邻深度值之间的一级差值,获得深度索引表中各个深度值。
[0017]本发明实施例提供一种深度信息编码装置,包括:
[0018]获取模块,用于获取深度值索引表;其中,所述深度值索引表中的深度值按照第一顺序排列;
[0019]—级计算模块,用于计算所述深度值索引表中相邻深度值的差值,作为一级差值;
[0020]二级计算模块,用于选择数值不同的一级差值按照第二顺序排列,并计算所述排列顺序中相邻一级差值的差值,作为二级差值;
[0021]第一索引模块,用于将所述数值不同的一级差值按照所述第二顺序排列依次设置索引编号,并遍历各个相邻深度值的一级差值,根据所述数值不同的一级差值设置的索引编号,确定每一个相邻深度值的一级差值对应的索引编号,其中,数值相同的一级差值的索引编号相同;
[0022]第一编码模块,用于将最大深度值和最小深度值中的至少一个、以及最大一级差值按照第一位宽,各个二级差值以及各个相邻深度值的一级差值的索引编号按照第二位宽,分别进行编码写入码流中,其中,所述第二位宽小于所述第一位宽。
[0023]本发明实施例提供一种深度信息解码装置,编码得到的码流中包括最大深度值和最小深度值中的至少一个、最大一级差值、各个二级差值以及各个相邻深度值的一级差值,所述装置包括:
[0024]第一解码模块,用于将所述码流进行解码,按照第一位宽解码获得最大深度值和最小深度值中至少一个、以及最大一级差值;按照第二位宽解码获得各个二级差值以及各个相邻深度值的一级差值的索引编号;
[0025]第一获取模块,用于根据所述最大一级差值、以及所述各个二级差值,获得数值不同的一级差值;
[0026]第二获取模块,用于根据按照第二顺序排列的所述数值不同的一级差值,以及各个相邻深度值的一级差值的索引编号,获得各个相邻深度值的一级差值;
[0027]第三获取模块,用于根据所述最大深度值和所述最小深度值中的至少一个、以及所述各个相邻深度值之间的一级差值,获得深度索引表中各个深度值。
[0028]本发明实施例提供的编码方法、解码方法以及装置,将深度值索引表进行了压缩,使得无需传输深度值索引表,只需编码最大深度值和最小深度值中的至少一个、最大一级差值、各个二级差值以及各个相邻深度值的一级差值的索引编号即可,且由于深度图中深度值的数值梯度比较小,因此一级差值比较相近,一级差值的索引编号会比较小,二级差值的个数也会比较少,因此使得可以采用较小的第二位宽编码二级差值以及一级差值的索引编号,使得大大减少了编码占用的比特数据,因此减少了编码占用的资源。
【附图说明】
[0029]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0030]图1为本发明实施例提供的一种深度信息编码方法一个实施例的流程图;
[0031]图2为本发明实施例提供的一种深度信息解码方法一个实施例的流程图;
[0032]图3为本发明实施例提供的一种深度信息编码方法又一个实施例的流程图;
[0033]图4为本发明实施例提供的一种深度信息编码方法又一个实施例的流程图;
[0034]图5为本发明实施例提供的一种深度信息解码方法又一个实施例的流程图;
[0035]图6为本发明实施例提供的一种深度信息解码方法又一个实施例的流程图;
[0036]图7为本发明实施例提供的一种深度信息编码方法又一个实施例的流程图;
[0037]图8为本发明实施例提供的一种深度信息编码装置一个实施例的结构示意图;
[0038]图9为本发明实施例提供的一种深度信息编码装置又一个实施例的结构示意图;
[0039]图10为本发明实施例提供的一种深度信息编码装置又一个实施例的结构示意图;
[0040]图11为本发明实施例提供的一种深度信息编码装置又一个实施例的结构示意图;
[0041]图12为本发明实施例提供的一种深度信息解码装置一个实施例的结构示意图;
[0042]图13为本发明实施例提供的一种深度信息解码装置又一个实施例的结构示意图;
[0043]图14为本发明实施例提供的一种深度信息解码装置又一个实施例的结构示意图;
[0044]图15为本发明实施例提供的一种深度信息解码装置又一个实施例的结构示意图。
【具体实施方式】
[0045]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0046]图1为本发明实施例提供的一种深度信息编码方法一个实施例的流程图,该方法可以包括以下几个步骤:
[0047]101:获取深度值索引表。
[0048]其中,所述深度值索引表中的深度值按照第一顺序排列。
[0049]本发明实施例中,深度值索引表是针对三维视频的视频图像建立的,用于存储视频图像中的深度值。通过视频编码以及解码,实现了深度值的传输。
[0050]深度值索引表中存储了数值不同,且按第一顺序排列的深度值。深度值索引表的建立与现有技术相同,通过遍历视频图像中的深度值,获得数值不同,按照第一顺序排列的深度值。
[0051]102:计算所述深度值索引表中相邻深度值的差值,作为一级差值。
[0052]103:选择数值不同的一级差值按照第二顺序排列,并计算所述排列顺序中相邻一级差值的差值,作为二级差值。
[0053]其中,相邻深度值的一级差值可能包括数值相同的差值,本发明实施例中,对于数值相同的一级差值,只取其中I个用于排序,将数值不同的一级差值按照第二顺序进行排列。
[0054]104:将所述数值不同的一级差值按照所述第二顺序依次设置索引编号。遍历步骤102中得到的各个相邻深度值的一级差值,为每一个一级差值确定对应的索引编号。
[0055]其中,各个相邻深度值的一级差值中,数值相同的一级差值的索引编号相同。
[0056]本实施例中,第一顺序、第二顺序可以相同,也可以不同,可是数值从小到大的升序顺序,或者数值从大到小的降序顺序。“第一”、“第二”、仅是为了从描述上区分深度值以及一级差值的排列顺序。
[0057]在进行解码时,即会解码得到按照第二顺序排列的一级差值,以及按照第一顺序排列的深度值。
[0058]其中,不同索引编号用于索引数值不同的一级差值。
[0059]设置索引编号的具体过程可以是将按照所述第二顺序排列的数值不同的每一个一级差值设置索引编号;
[0060]按照索引编号对应的一级差值的数值,遍历计算得到的各个相邻深度值的一级差值,确定每一个相邻深度值的一级差值对应的索引编号。
[0061 ] 例如,数值不同一级差值包括5和6,按照从小到大的顺序排列,则可以设置5对应索引编号0、6对应索引编号为I。若相邻深度值的一级差值包括5、6、5、5、6、6、5 ;而索引编号O对应的数值为5,索引编号I对应的数值为6,则每一个一级差值对应的索引编号即为:
0、1、0、0、1、1、0ο
[0062]105:将最大深度值和最小深度值中的至少一个、以及最大一级差值按照第一位宽、各个相邻一级差值的二级差值以及各个相邻深度值的一级差值的索引编号按照第二位宽,分别进行编码,写入码流中。
[0063]其中,所述第二位宽小于所述第一位宽。
[0064]其中,为了降低编码的数值数目,可以是选择最大深度值和最小深度值中的任一个进行编码写入码流。为了减少编码占用的比特数目,优选的,可以选择最小深度值进行编码。
[0065]现有技术中,编码深度值索引表中各个深度值的索引编号,深度值个数较多时,索引编号也会很大,因此至少需要采用8位位宽进行编码,导致占用的资源较多。
[0066]而本发明实施例中,第一位宽可以是指8位位宽,最大深度值、最小深度值、最大一级差值可以按照该第一位宽进行编码。
[0067]由于在深度值索引表中,如果按照深度值从小到大的顺序排列,相邻深度值之间的差值非常小,且深度值几乎成线性排列,因此相邻深度值之间的一级差值中,数值不同的一级差值的个数会比较少,因此一级差值的最大索引编号也会比较小。
[0068]且相邻深度值之间的一级差值可以看作一个近似值,进而数值不同的一级差值按照第二顺序排列之后,相邻的一级差值的二级差值的数值会比较小。
[0069]由于各个二级差值的数值较小,一级差值的索引编码也会比较小,因此,可以采用较小的第二位宽编码各个二级差值一级各个相邻深度值的一级差值的索引编号。使得可以占用较小的比特数目,减少了编码占用的资源。
[0070]且本发明实施例中,并未将深度值索引表写入码流中,而是将深度值索引表进行了压缩,使得无需编码深度值索引表,解码端也可以得到深度值索引表中的深度值,进一步减少了编码占用的资源。
[0071]其中,根据第一顺序以及第二顺序的不同,最大深度值可以是按照第一顺序排列的深度值中的第一个深度值或最后一个深度值,最小深度值也即是指按照第一顺序排列的深度值中的最后一个深度值或第一个深度值。第一顺序为从小到大时,最大深度值即是指最后一个深度值,最小深度值即是指第一个深度值;第一顺序为从大到小时,最大深度值即是指第一个深度值,最小深度值即是指最后一个深度值。
[0072]最大一级差值可以是按照第二顺序排列的一级差值中的第一个一级差值或最后一个一级差值,第二顺序为从小到大时,即是指最后一个一级差值,第二顺序为从大到小时,即是指第一个一级差值。
[0073]在实际编码时,无需识别深度值、一级差值以及二级差值的具体数值,只需从按照第一顺序排列的深度值中,选择第一个深度值和最后一个深度值中的至少一个;从按照第二顺序排列的一级差值中,选择第一个或最后一个一级差值进行编码即可。
[0074]为了进一步减少编码占用的资源,第一顺序以及第二顺序可以优选的为从小到大的升序顺序,在写入码流中,具体编码的可以是最小深度值,也即按照第一顺序排列的深度值中的第一个深度值。
[0075]其中,为了方便编码,且尽可能减少编码占用的比特数目,一级差值的索引编号可以米用0、1、2、3......进彳丁表不。
[0076]当然,本发明并不对此进行限定,还可以按照编码端以及解码端约定的索引规则确定索引编号。
[0077]需要说明的是,最大深度值、最小深度值、最大一级差值、各个二级差值以及各个相邻深度值的一级差值的索引编号的编码时机可以相同,也可以在每一个数值确定之后即进行编码,本发明并不对此进行限制。
[0078]还需要说明的是,最大深度值、最小深度值、最大一级差值、各个二级差值以及各个相邻深度值的一级差值的索引编号的编码次序也可以不进行限定,按照解码端与编码端的预先约定的编码次序即可。
[0079]其中,为了方便解码时,可以获得第一位宽以及第二位宽,在将最大深度值和最小深度值中的至少一个、以及最大一级差值按照第一位宽,各个二级差值以及各个相邻深度值的一级差值的索引编号按照第二位宽,分别进行编码写入码流中的同时,还可以:
[0080]将所述第一位宽的位宽值以及所述第二位宽的位宽值进行编码,写入所述码流中。
[0081]当然第一位宽以及第二位宽不一定在其他数值编码完成之后进行编码。
[0082]其中第一位宽的位宽值以及第二位宽的位宽值可以按照所述第一位宽进行编码。编码次序可以为:第一位宽、最大深度值和最小深度值中的至少一个、最大一级差值、第二位宽、各个二级差值、各个相邻深度值的一级差值的索引编号。从而可以优先解码出第一位宽,进而按照该第一位宽解码最大深度值和最小深度值中的至少一个、最大一级差值、第二位宽;按照解码得到的第二位宽,解码得到各个二级差值、各个相邻深度值的一级差值的索引编号。
[0083]与图1所示实施例的深度信息编码方法相对应,参见图2,为本发明实施例提供的一种深度信息解码方法一个实施例的流程图,该方法可以包括以下几个步骤:
[0084]201:将码流进行解码,按照第一位宽解码获得最大深度值和最小深度值中至少一个、以及最大一级差值;按照第二位宽解码获得各个二级差值以及各个相邻深度值的一级差值的索引编号。
[0085]202:根据所述最大一级差值、以及所述各个二级差值,获得数值不同的一级差值。
[0086]将最大一级差值与各个二级差值迭代相减,即可以得到各个数值不同的一级差值。
[0087]计算得到的数值不同的一级差值即按照第二顺序排列。
[0088]203:根据按照第二顺序排列的所述数值不同的一级差值,以及各个一级差值的索引编号,获得相邻深度值之间的一级差值。
[0089]数值不同的一级差值确定之后,将其按照第二顺序排列,即可以获得数值不同的一级差值对应的索引编号,也即确定了每一个索引编号对应的一级差值的数值。
[0090]而根据各个一级差值的索引编号,以及索引编号对应的一级数值的数值,即可以得到各个相邻深度值的一级差值。
[0091]具体的,可以是按照所述第二顺序确定按照第二顺序排列的所述数值不同的一级差值的索引编号;根据不同索引编号对应的一级差值的数值,以及解码获得的各个相邻深度值的一级差值的索引编号,即可以获得各个相邻深度值的一级差值的索引编号对应的一级差值。
[0092]例如,按照第二顺序排列的数值不同的一级差值依次为3、4。则可以确定3对应索引编号即为0、4对应的索引编号即为I。
[0093]若得到的各个一级差值的索引编号为0011001,则可以确定出一级差值为:3、3、
4、4、3、3、4。
[0094]204:根据所述最大深度值和最小深度值中至少一个、以及所述各个相邻深度值之间的一级差值,获得深度索引表中各个深度值。
[0095]若解码得到的为最大深度值,则可以将最大深度值与各个相邻深度值之间的一级差值迭代相减,即可以得到各个深度值。
[0096]若解码得到的为最小深度值,则可以将最小深度值与各个相邻深度值之间的一级差值迭代相加,即可以得到各个深度值。
[0097]其中,所述码流即是按照图1对应的实施例将深度信息编码得到的。
[0098]为了方便理解,下面举一个例子对本发明实施例的编码方式进行详细说明。
[0099]假设深度值索引表中按照第一顺序,以从小到大的升序顺序为例,排列的深度值为 0,4,7,11,15,18,22,26,29,33,36。
[0100]需要说明的,为了方便描述,此处只是截取了深度值索引表中的部分数值,在实际应用中,深度值个数并不仅限于此。
[0101]计算相邻深度值之间的一级差值分别为:4,3,4,4,3,4,4,3,4,3。可知,数值不同的一级差值只有3和4。
[0102]将数值不同的一级差值按照第二顺序,以从小到大的升序顺序排列为例,得到的排列顺序为:3、4。
[0103]计算排列顺序中相邻一级差值的二级差值,即为I。
[0104]将所述数值不同的一级差值按照所述第二排列顺序依次设置索引编号,并遍历所述相邻深度值的一级差值,根据数值不同的一级差值设置的索引编号,确定每一个一级差值对应的索引编号。数值相同的一级差值的索引编号相同。
[0105]其中,不同索引编号用于区分数值不同的一级差值,为减少占用的比特位,可以以阿拉伯数字进行编号,假设设置一级差值3对应的索引编号为0,一级差值4对应的索引编号为I。此时,遍历相邻深度值的一级差值,各个一级差值的索引编号依次为:1、0、1、1、0、
1、1、0、1、0。
[0106]将最小深度值O、最大一级差值4按照第一位宽进行编码,各个二级差值I以及各个相邻深度值的一级差值的索引编号1、0、1、1、0、1、1、0、1、0按照第二位宽进行编码,分别写入码流中。
[0107]其中,由于在不同情况下,按照第一顺序排列的深度值中,最小深度值以及最大一级差值的数值可能会不一样,为了适应全部情况,第一位宽具体可以选择8位位宽。
[0108]第二位宽的确定方式可以有多种,在下面实施例中会详细进行介绍,由于最大一级差值已经进行编码,可以获得最大一级差值的具体数值,第二位宽可以最大选择最大一级差值占用的位宽,此处假设第二位宽为4位。
[0109]假设编码次序为:最小深度值、最大一级差值、各个二级差值、各个相邻深度值的一级差值的索引编号。因此得到的码流为:00000000 00000100 0001 0001 0000 00010001 0000 0001 0001 0000 0001 OOOOo
[0110]在对该码流进行解码时,可以包括:
[0111]将码流进行解码,按照第一位宽可以解码获得最小深度值、最大一级差值;按照第二位宽可以解码获得各个二级差值以及各个相邻深度值的一级差值的索引编号,因此解码得到的数值依次为0,4,1,1,0,1,1,0,1,1,0,1,0。
[0112]根据最大一级差值4、以及所述二级差值1,可以计算得到其他一级差值3,即将最大一级差值减去二级差值,即可以得到其他一级差值3。
[0113]根据按照第二顺序排序的一级差值3、4,可以确定3对应的索引编号为0,4对应的索引编号为I。从而根据各个相邻深度值的一级差值的索引编号1、0、1、1、0、1、1、0、1、0,获得相邻深度值之间的一级差值为:4、3、4、4、3、4、4、3、4、3。
[0114]根据最小深度值0、以及各个相邻深度值之间的一级差值,依次迭代相加,即可以计算获得深度索引表中各个深度值:0、4、7、11、15、18、22、26、29、33、36。
[0115]通过本发明实施例,实现了深度信息的编码以及解码,编码数值减少,可以占用较小的位宽资源,且无需编码深度值索引表,进一步的减少了资源的占用。
[0116]作为又一个实施例,如图3所示提供的深度信息编码方法中,与图1所示实施例不同之处在于,步骤105中将最大深度值和最小深度值中的至少一个、以及最大一级差值按照第一位宽,各个二级差值以及各个一级差值的索引编号按照第二位宽,分别进行编码写入码流中,可以包括以下几个步骤:
[0117]301:将最大深度值和最小深度值中的至少一个,按照第一位宽进行编码,写入码流中。
[0118]302:将最大一级差值按照所述第一位宽进行编码,写入码流中。
[0119]303:计算所述最大一级差值的位宽,作为第二位宽。
[0120]304:将各个相邻一级差值的二级差值以及各个相邻深度值的一级差值的索引编号分别按照所述第二位宽进行编码,写入所述码流中。
[0121]其中,第一位宽具体可以为8位,以满足不同数值大小的深度值和最大一级差值的要求。
[0122]在进行编码时,为了减少编码占用的比特,可以选择最小深度值进行编码,也即先将最小深度值、以及最大一级差值按照第一位宽进行编码。
[0123]将最大一级差值进行编码之后,即可以获得该最大一级差值的数值,进而可以计算最大一级差值占用的有效位宽,作为第二位宽。
[0124]由于且一级差值之间的数值非常近似,二级差值的数值会比较小,数值不同的一级差值个数比较小,因此一级差值的索引编号数值也会比较小。
[0125]因此根据最大一级差值自身占用的有效位宽,得到的第二位宽可以满足后续数值的编码需求。且由于最大一级差值的数值也比较小,因此得到的第二位宽也将小于第一位宽。
[0126]各个相邻一级差值的二级差值以及各个相邻深度值的一级差值的索引编号即可以按照该第二位宽进行编码,从而可以进一步减少编码占用的位宽,节省了编码占用的资源。
[0127]其中,计算所述最大一级差值的位宽,作为第二位宽可以下述公式计算得到:
[0128]W2= log 2max+l ;
[0129]其中,max表示最大一级差值。第二位宽^也即为最大一级差值的位宽。
[0130]比如最大一级差值为4时,则计算得到的第一位宽W2= log 24+1 = 3。
[0131]另外,在进行编码时,还可以将最小一级差值进行编码,从而在解码时,可以利用最小一级差值以及各个二级差值,迭代相加,得到其他的一级差值。
[0132]该最小一级差值可以按照第三位宽进行编码,其中第三位宽小于第一位宽,从而可以减少编码占用的位宽。
[0133]第三位宽可以与第二位宽相同,优选地,第二位宽可以小于该第三位宽。
[0134]作为又一个实施例,如图4所示提供的深度信息编码方法中,提供了另一种第二位宽的确定方式。与图1所示实施例不同之处在于,步骤105中将最大深度值和最小深度值中的至少一个、以及最大一级差值按照第一位宽,各个二级差值以及各个一级差值的索引编号按照第二位宽,分别进行编码写入码流中可以包括以下几个步骤:
[0135]401:将最大深度值和最小深度值中的至少一个、以及最大一级差值按照第一位宽进行编码,写入码流中。
[0136]402:计算所述最大一级差值的位宽,作为第三位宽。
[0137]403:将最小一级差值按照第二位宽进彳丁编码,与入码流中。
[0138]404:计算最大一级差值和最小一级差值相减得到的差值的位宽,获得第二位宽。
[0139]405:将各个二级差值以及各个一级差值的索引编号按照第二位宽进行编码,写入所述码流中。
[0140]本实施例中,计算最大一级差值的位宽,也即占用的有效位宽,作为第三位宽,并利用第二位宽对最小一级差值进行编码,与入码流中。
[0141]然后利用最大一级差值和最小一级差值相减得到的差值的位宽,也即占用的有效位宽,作为第二位宽,从而使得第二位宽小于第三位宽,进一步的使得二级差值以及一级差值的索引编号编码占用的比特数目减少,进一步的减少了资源的占用。
[0142]第三位宽可以按照下述公式计算得到:
[0143]W3= log 2max+l ;
[0144]其中,max表示最大一级差值。第三位宽^也即为最大一级差值的位宽。
[0145]第二位宽可以按照下述公式计算得到:
[0146]W3= log 2 (max-min) +1 ;
[0147]其中,min表示最小一级差值。
[0148]例如,最大一级差值为4,最小一级差值为3,则第二位宽W3= log 2 (4-3) +1 = I。
[0149]从而二级差值以及各个索引编号即可以采用一位位宽进行编码。仍以上述例子为例,最大一级差值为4,最小一级差值为3,二级差值为I,索引编号为1、0、1、1、0、1、1、0、1、0,一位位宽即可以满足二级差值和一级差值的索引编号的编码,进一步的降低了编码占用的资源。
[0150]其中,为了避免解码时,一直解码导致死循环,在进行编码时,在码流中可以加入相应的标志位,或者提示信息,以方便解码时确定解码数值的个数或者解码完成。
[0151]作为一种可能的实现方式,可以在深度信息编码时,统计深度值索引表中的深度值个数,以及按照第二顺序排列的数值不同的一级差值的个数。可以将深度值个数以及数值不同的一级差值的个数进行编码,写入码流中。
[0152]从而在解码时可以按照解码得到深度值个数以及数值不同的一级差值个数,解码出对应数量的深度值以及数值不同的一级差值。
[0153]写入码流中各个数值可以按照预设的编码次序进行编码,该预设的编码次序编码端以及解码端均已知。
[0154]该预设的编码次序可以是:深度值个数、最大深度值和最小深度值的至少一个、最大一级差值、数值不同的一级差值个数、最小一级差值、各个相邻一级差值之间的二级差值以及各个相邻深度值的一级差值的索引编号。从而在解码时,可以依次得到按照该预设的编码次序排列的各个数值。
[0155]其中,该深度值个数具体是按照第一位宽进行编码,数值不同的一级差值个数按照第二位宽进行编码。
[0156]与图3所示实施例的深度信息编码方法相对应,在码流中最大深度值和最小深度值中的至少一个、以及最大一级差值按照第一位宽编码;各个相邻一级差值的二级差值以及各个相邻深度值的一级差值的索引编号按照第二位宽编码时,参见图5提供的深度信息解码方法又一个实施例中,与图2提供的实施例不同之处在于,步骤201将码流进行解码,按照第一位宽解码获得最大深度值和最小深度值中至少一个、以及最大一级差值;按照第二位宽解码获得各个二级差值以及各个相邻深度值的一级差值的索引编号可以进一步包括以下几个步骤:
[0157]501:按照第一位宽,解码获得码流中的最大深度值和最小深度值的至少一个以及最大一级差值。
[0158]502:计算所述最大一级差值的位宽,作为第二位宽。
[0159]503:按照所述第二位宽,解码获得所述码流中的各个二级差值以及各个相邻深度值的一级差值的索引编号。
[0160]与图4所示实施例的深度信息编码方法相对应,当码流中最大深度值和最小深度值的至少一个、以及最大一级差值按照第一位宽编码时;最小一级差值按照第三位宽编码各个二级差值以及各个相邻深度值的一级差值的索引编号按照第二位宽编码时,参见图6提供的深度信息解码方法又一个实施例中与图2提供的实施例不同之处在于,步骤201将码流进行解码,按照第一位宽解码获得最大深度值和最小深度值中至少一个、以及最大一级差值;按照第二位宽解码获得各个二级差值以及各个相邻深度值的一级差值的索引编号可以进一步包括以下几个步骤:
[0161]601:按照第一位宽,解码获得码流中的最大深度值和最小深度值中的至少一个、以及最大一级差值。
[0162]602:计算所述最大一级差值的位宽,作为第三位宽。
[0163]603:按照所述第三位宽解码获得所述码流中的最小一级差值。
[0164]604:计算最大一级差值和最小一级差值相减得到的差值的位宽,作为第二位宽。
[0165]605:按照所述第三位宽解码获得所述码流中的各个二级差值以及各个相邻深度值的一级差值的索引编号。
[0166]作为又一个实施例,当编码时将第一位宽、第二位宽以及第三位宽进行编码,写入码流中时,则可以根据解码得到的第一位宽、第二位宽以及第三位宽分别进行编码。此时码流中写入到各个数值可以按照预设编码次序依次进行编码写入,从而解码时,可以根据预设编码次序获知各个数值的类型,类型即是指深度值、一级差值、二级差值、索引编号或者位宽等。
[0167]其中,在进行深度信息编码时,写入码流中的还包括按照第一位宽编码的深度值个数以及数值不同的一级差值个数时,则对码流进行解码时,还可以解码获得深度值个数以及数值不同的一级差值个数。
[0168]则步骤202中根据所述最大一级差值、以及各个二级差值,获得数值不同的一级差值可以包括:
[0169]根据最大一级差值、以及各个二级差值,获得所述数值不同的一级差值个数的一级差值。
[0170]步骤204中,根据所述最大深度值和最小深度值的至少一个、以及各个相邻深度值的一级差值,获得深度索引表中各个深度值可以进一步包括:
[0171]根据最大深度值和/或最小深度值,以及所述各个相邻深度值的一级差值,获得所述深度值个数的深度值。
[0172]为了方便理解,仍以上述例子为例,来详细描述本发明实施例的技术方案,深度值索引表中按照从小到大的升序顺序排列的深度值依次为0,4,7,11,15,18,22,26,29,33,36 ο
[0173]统计深度值个数为11。
[0174]相邻深度值之间的一级差值分别为:4,3,4,4,3,4,4,3,4,3。
[0175]可知,数值不同的一级差值只有3和4。
[0176]统计数值不同的一级差值个数为2。
[0177]将数值不同的一级差值按照第二顺序,以从小到大的升序顺序排列为例,得到的排列顺序为:3、4。
[0178]计算排列顺序中相邻一级差值的二级差值,即为I。
[0179]遍历所述相邻深度值的一级差值,确定每一个一级差值的索引编号,其中,不同索引编号用于区分数值不同的一级差值,为减少占用的比特位,可以以阿拉伯数字进行编号,假设一级差值3对应的索引编号为0,一级差值4对应的索引编号为I。此时,遍历相邻深度值的一级差值,各个一级差值的索引编号依次为:1、0、1、1、0、1、1、0、1、0。
[0180]将深度值个数49、第一顺序中的第一个深度值也即最小深度值O以及第二顺序中的最后一个一级差值也即最大一级差值4、按照第一位宽进行编码,得到0011000100000000 00000100,其中第一位宽为8位。
[0181]根据最大一级差值4的位宽,更新得到第三位宽为:3。
[0182]将数值不同的一级差值个数2、最小一级差值3,按照第一位宽进行编码得到:010,011。
[0183]根据最大一级差值4和最小一级差值3的差值I位宽,更新得到第二位宽为:1。
[0184]将二级差值I以及各个以及差值的索引编号1、0、1、1、0、1、1、0、1、0按照第二位宽进行编码,得到:11011011010。
[0185]则最终得到码流即为:0011000100000000 00000100 010011 110 11011010。
[0186]该码流在进行解码时,可以包括:
[0187]按照第一位宽从码流中解码出深度值个数49、最小深度值O以及最大一级差值4 ;
[0188]根据最大一级差值4的位宽,计算得到第一位宽为3:
[0189]按照第一位宽解码出数值不同的一级差值个数2以及最小一级差值3 ;
[0190]根据最大一级差值4和最小一级差值3的差值I的位宽,计算得到第二位宽为:1。
[0191]按照所述第二位宽解码出二级差值I以及索引编号1、0、1、1、0、1、1、0、1、0。
[0192]根据最小一级差值3、一级差值个数2以及二级差值1,得到按照第二顺序排列的数值不同的一级差值为3和4 ;此处,由于一级差值只有两个,且最大一级差值以及最小一级差值已经解码得出,因此在该例中,该步骤可以省略;
[0193]根据一级差值3和4,可以确定得到一级差值3对应的索引编号为0、一级差值4对应的索引编号为I ;
[0194]根据索引编号1、0、1、1、0、1、1、0、1、0,可以得到各个相邻深度值之间的一级差值,即:4,3,4,4,3,4,4,3,4,3 ;
[0195]利用最小深度值0,以及各个相邻深度值之间的一级差值,既可以迭代相加,计算得到深度值索引表中的深度值,依次为:0,4,7,11,15,18,22,26,29,33,36。
[0196]另外,当数值不同的二级差值的个数也可能较多时,编码的数值也会较多,因此为了进一步的减少编码占用的资源,如图7所示,提供了本发明实施例深度信息编码方法的又一个实施例,该方法可以包括以下几个步骤:
[0197]701:获取深度值索引表。
[0198]其中,所述深度值索引表中的深度值按照第一顺序排列。
[0199]702:计算所述深度值索引表中相邻深度值的差值,作为一级差值。
[0200]703:选择数值不同的一级差值按照第二顺序排列,并计算所述排列顺序中相邻一级差值的差值,作为二级差值。
[0201]704:将所述数值不同的一级差值按照所述第二顺序排列依次设置索引编号,并根据所述数值不同的一级差值的索引编号,遍历各个相邻深度值的一级差值,确定每一相邻深度值的一级差值对应的索引编号。
[0202]705:判断所述二级差值的个数是否小于一级差值个数的二分之一,如果是,执行步骤706 ;如果否,执行步骤707。
[0203]706:将最大深度值和最小深度值中的至少一个、以及最大一级差值按照第一位宽,各个二级差值以及各个相邻深度值的一级差值的索引编号按照第二位宽,分别进行编码写入码流中。
[0204]其中,所述第二位宽小于所述第一位宽。
[0205]具体的编码方式与上述实施例中相似,再次不再赘述。
[0206]707:选择数值不同的二级差值按照第三顺序排列,并计算所述排列顺序中相邻二级差值的差值,作为三级差值;所述第三顺序为数值从小到大或者从大到小。
[0207]需要说明的是,第一顺序、第二顺序、第三顺序可以相同,也可以不同,可以是数值从小到大的升序顺序,或者数值从大到小的降序顺序。“第一”、“第二”、“第三”仅是为了从描述上区分深度值以及一级差值的排列顺序。
[0208]708:将所述数值不同的二级差值按照所述第三顺序排列依次设置索引编号,并根据所述数值不同的二级差值的索引编号,遍历相邻一级差值的二级差值,确定每一个相邻一级差值的二级差值对应的索引编号。
[0209]709:将最大深度值和最小深度值至少一个以及最大一级差值按照第一位宽、各个相邻深度值的一级差值的索引编号以及最大二级差值按照第二位宽、各个二级差值的索引编号以及各个三级差值按照第四位宽,分别进行编码写入码流中。
[0210]其中,还可以编码最小一级差值以及最小二级差值。
[0211]最小一级差值按照第三位宽进行编码,该第三位宽可以是最大一级差值的位宽,即其占用的有效位宽。
[0212]第二位宽为最大一级差值和最小一级差值相减得到的差值的位宽。
[0213]最小二级差值可以按照第五位宽进行编码,该第五位宽可以是最大二级差值的位宽。
[0214]第四位宽为最大二级差值和最小二级差值相减得到的差值的位宽。
[0215]为了避免解码时的死循环,在码流中还可以按照第一位宽编码深度值个数、一级差值个数以及二级差值的个数,从而解码出对应个数的值。
[0216]其中,如果三级差值的个数大于等于二级差值个数的二分之一,则还可以将数值不同的三级差值按照第第四顺序排列,并计算所述排列顺序中相邻三级差值的差值,作为四级差值;所述第四顺序为数值从小到大或者从大到小。然后将数值不同的三级差值按照所述第四顺序排列依次设置索引编号,并遍历相邻二级差值的三级差值,确定每一相邻二级差值的三级差值对应的索引编号。
[0217]则在进行编码时,具体是将最大深度值和最小深度值中的至少一个、最大一级差值、最大二级差值、最大三级差值,各个一级差值的索引编号、各个二级差值的索引编号、各个三级差值的索引编码以及各个相邻三级差值的四级差值进行编码,写入码流中。
[0218]以此类推,若四级差值的个数大于等于三级差值个数的二分之一时,可以按照本发明实施例所述的编码方式继续进行编码,将四级差值类似与二级差值,三级差值类似与一级差值,既可以按照一级差值和二级差值的编码过程进行编码等。
[0219]当然,在步骤702计算所述深度值索引表中相邻深度值的差值,作为一级差值之后,还可以包括:
[0220]判断所述一级差值的个数是否小于深度值索引表中深度值个数的二分之一;
[0221]如果是,则执行步骤703的操作;
[0222]如果否,则将最大深度值和最小深度值中的至少一个、以及各个相邻深度值之间的一级差值按照第一位宽进行编码,写入码流中。
[0223]基于图7对应实施例的深度信息编码方法,在进行具体解码时:如果码流中是包括编码的最大深度值和最小深度值中的至少一个、最大一级差值、各个相邻一级差值的二级差值以及各个相邻深度值的一级差值的索引编号时,可以参照上述实施例提供的解码方法进行解码。
[0224]如果码流中包括编码的最大深度值和最小深度值中的至少一个、最大一级差值、最大二级差值、各个一级差值的索引编号、各个二级差值的索引编号以及各个三级差值时,则对应解码过程可以如下所述:
[0225]将码流进行解码,按照第一位宽解码获得获得最大深度值和最小深度值的至少一个、以及最大一级差值;按照第二位宽解码获得最大二级差值、各个一级差值的索引编号、按照第四位宽解码获得各个二级差值的索引编号以及所述各个三级差值。
[0226]根据最大二级差值,以及所述各个三级差值,获得按照第三顺序排列的数值不同的二级差值;
[0227]根据各个二级差值的索引编号,以及解码获得数值不同的二级差值,获得各个相邻一级差值之间的二级差值;
[0228]根据最大一级差值、以及解码计算得到的各个相邻一级差值之间的二级差值,获得数值不同的一级差值;
[0229]根据按照第二顺序排列的所述数值不同的一级差值,以及各个一级差值的索引编号,获得相邻深度值之间的一级差值;
[0230]根据所述最大深度值和最小深度值中的至少一个、以及各个所述相邻深度值之间的一级差值,获得深度索引表中各个深度值。
[0231]本发明实施例中,编码数值减少,且无需编码深度值索引表,减少了资源的占用,节省了更多的比特资源。且在进行编码时对位宽进行更新,降低编码占用的位宽,使得在更大程度上减少了资源的占用。
[0232]图8为本发明实施例提供的一种深度信息编码装置一个实施例的结构示意图,该装置可以包括:
[0233]获取模块801,用于获取深度值索引表;其中,所述深度值索引表中的深度值按照第一顺序排列;
[0234]—级计算模块802,用于计算所述深度值索引表中相邻深度值的差值,作为一级差值;
[0235]二级计算模块803,用于选择数值不同的一级差值按照第二顺序排列,并计算所述排列顺序中相邻一级差值的差值,作为二级差值;
[0236]第一顺序、第二顺序可以相同,也可以不同,可以是数值从小到大的升序顺序,或者数值从大到小的降序顺序。“第一”、“第二”、仅是为了从描述上区分深度值以及一级差值的排列顺序。
[0237]第一索引模块804,用于将所述数值不同的一级差值按照所述第二顺序排列依次设置索引编号,并遍历各个相邻深度值的一级差值,根据所述数值不同的一级差值设置的索引编号,确定每一个相邻深度值的一级差值对应的索引编号;
[0238]第一编码模块805,用于将最大深度值和最小深度值中的至少一个、以及最大一级差值按照第一位宽,各个二级差值以及各个相邻深度值的一级差值的索引编号按照第二位宽,分别进行编码写入码流中,其中,所述第二位宽小于所述第一位宽。
[0239]本发明实施例中,并未将深度值索引表写入码流中,而是将深度值索引表中相邻的深度值相减,为了方便描述上的区分,将相邻深度值相减得到的差值,命名为一级差值。然后将数值不同的一级差值按照第二顺序排列,将相邻的一级差值相减,得到的差值命名为二级差值。在进行编码时。按照第一位宽编码最大深度值和/或者最小深度值,最大一级差值,按照第二位宽编码各个二级差值以及各个相邻深度值的一级差值的索引编号。第二位宽小于第一位宽,使得减少了编码占用的比特数目,减少了编码资源的占用,且将深度值索引表进行了压缩,使得无需编码深度值索引表,解码端也可以得到深度值索引表中的深度值,进一步节省了编码占用的资源。
[0240]为了进一步减少编码占用的资源,第一顺序以及第二顺序可以优选的为从小到大的升序顺序,在写入码流中,具体编码的可以是最小深度值,也即按照第一顺序排列的深度值中的第一个深度值。
[0241]其中,为了方便编码,且尽可能减少编码占用的比特数目,一级差值的索引编号可以米用0、1、2、3......进彳丁表不。
[0242]其中,为了方便解码时,第一编码模块805还可以将将所述第一位宽的位宽值以及所述第二位宽的位宽值进行编码,写入所述码流中。
[0243]其中第一位宽的位宽值以及第二位宽的位宽值可以按照所述第一位宽进行编码。编码次序可以为:第一位宽、最大深度值和最小深度值中的至少一个、最大一级差值、第二位宽、各个二级差值、各个相邻深度值的一级差值的索引编号。从而可以优先解码出第一位宽,进而按照该第一位宽解码最大深度值和最小深度值中的至少一个、最大一级差值、第二位宽;按照解码得到的第二位宽,解码得到各个二级差值、各个相邻深度值的一级差值的索引编号。
[0244]当然本发明的编码次序并不限定于此。
[0245]作为又一个实施例,如图9所述,所述第一编码模块805可以包括:
[0246]第一编码单元901,用于将最大深度值和最小深度值中的至少一个按照第一位宽进行编码,写入码流中;
[0247]第二编码单元902,用于将最大一级差值按照所述第一位宽进行编码,写入码流中;
[0248]第一位宽更新单元903,用于计算所述最大一级差值的位宽,作为第二位宽;
[0249]第三编码单元904,用于将各个二级差值以及各个一级差值的索引编号分别按照所述第二位宽进行编码,写入所述码流中。
[0250]在进行编码时,为了减少编码占用的比特,可以选择最小深度值进行编码,也即先将最小深度值、以及最大一级差值按照第一位宽进行编码。
[0251]将最大一级差值进行编码之后,即可以获得该最大一级差值的数值,进而可以计算最大一级差值占用的有效位宽,作为第二位宽。
[0252]由于且一级差值之间的数值非常近似,二级差值的数值也会比较小,且数值不同的二级差值的个数也比较小,索引编号数值也会比较小。
[0253]因此根据最大一级差值自身占用的有效位宽,得到的第二位宽可以满足后续数值的编码需求。且由于最大一级差值的数值也比较小,因此得到的第二位宽也将小于第一位宽。
[0254]其中,计算所述最大一级差值的位宽,作为第二位宽可以下述公式计算得到:
[0255]W2= log 2max+l ;
[0256]其中,max表示最大一级差值。第二位宽^也即为最大一级差值的位宽。
[0257]另外,第一编码模块在进行编码时,还可以将最小一级差值进行编码,从而在解码时,可以利用最小一级差值以及各个二级差值,迭代相加,得到其他的一级差值。
[0258]该最小一级差值可以按照第三位宽进行编码,其中第三位宽小于第一位宽,从而可以减少编码占用的位宽。
[0259]第三位宽可以与第二位宽相同,优选地,第二位宽可以小于该第三位宽。
[0260]作为又一个实施例,如图10所示,所述第一编码模块805可以包括:
[0261]第一编码单元1001,用于将最大深度值和最小深度值中的至少一个按照第一位宽进行编码,写入码流中;
[0262]第二编码单元1002,用于将最大一级差值按照所述第一位宽进行编码,写入码流中;
[0263]第二位宽更新单元1003,用于计算所述最大一级差值的位宽,作为第三位宽;
[0264]第四编码单元1004,用于将最小一级差值按照第三位宽进行编码,写入码流中;
[0265]第三位宽更新单元1005,用于计算最大一级差值和最小一级差值相减得到的差值的位宽,获得第二位宽;
[0266]第五编码单元1006,用于将各个二级差值以及各个一级差值的索引编号按照第二位宽进行编码,写入所述码流中。
[0267]第三位宽可以按照下述公式计算得到:
[0268]W3= log 2max+l ;
[0269]其中,max表示最大一级差值。第三位宽^也即为最大一级差值的位宽。
[0270]第二位宽可以按照下述公式计算得到:
[0271]W3= log 2 (max-min) +1 ;
[0272]其中,min表示最小一级差值。
[0273]其中,为了避免解码时,一直解码导致死循环,在进行编码时,在码流中可以加入相应的标志位,或者提示信息,以方便解码时确定解码数值的个数或者解码完成。
[0274]作为一种可能的实现方式,所述第一编码模块905还用于将深度值个数以及数值不同的一级差值的个数进行编码,写入码流中。
[0275]从而在解码时可以按照解码得到深度值个数以及数值不同的一级差值个数,解码出对应数量的深度值以及数值不同的一级差值。
[0276]第一编码模块写入码流中各个数值可以按照预设的编码次序进行编码,该预设的编码次序编码端以及解码端均已知。
[0277]该预设的编码次序可以是:深度值个数、最大深度值和最小深度值的至少一个、最大一级差值、数值不同的一级差值个数、最小一级差值、各个相邻一级差值之间的二级差值以及各个相邻深度值的一级差值的索引编号。
[0278]另外,当数值不同的二级差值的个数也可能较多时,编码的数值也会较多,因此为了进一步的减少编码占用的资源,作为又一个实施例,如图11所示,该装置还可以包括:
[0279]判断模块1101,用于判断数值不同的二级差值的个数是否小于数值不同的一级差值个数的二分之一;如果是触发所述第一编码模805 ;
[0280]三级计算模块1102,用于在所述判断模块1101结果是否时,将数值不同的二级差值按照第三顺序排列,并计算所述排列顺序中相邻二级差值的差值,作为三级差值;所述第三顺序为数值从小到大或者从大到小;
[0281]第二索引模块1103,用于将数值不同的二级差值按照所述第三顺序排列依次设置索引编号,并遍历各个相邻一级差值的二级差值,确定每一相邻一级差值的二级差值对应的索引编号;
[0282]第二编码模块1104,用于将将最大深度值和最小深度值中的至少一个、以及最大一级差值按照第一位宽,将各个相邻深度值的一级差值的索引编号以及最大二级差值按照第二位宽,各个二级差值的索引编号以及所述三级差值按照第四位宽,分别进行编码,写入码流中,其中,所述第四位宽小于所述第二位宽。
[0283]其中,还可以编码最小一级差值以及最小二级差值。
[0284]最小一级差值按照第二位宽进行编码,该第二位宽可以是最大一级差值的位宽,即其占用的有效位宽。
[0285]第二位宽为最大一级差值和最小一级差值相减得到的差值的位宽。
[0286]最小二级差值可以按照第五位宽进行编码,该第五位宽可以是最大二级差值的位宽。
[0287]第四位宽为最大二级差值和最小二级差值相减得到的差值的位宽。
[0288]为了避免解码时的死循环,在码流中还可以编码深度值个数、数值不同的一级差值个数以及数值不同的二级差值的个数,从而解码出对应个数的深度值、数值不同的一级差值以及数值不同的二级差值。
[0289]其中,如果三级差值的个数大于等于二级差值个数的二分之一,则所述解码装置还可以将数值不同的三级差值按照第第四顺序排列,并计算所述排列顺序中相邻三级差值的差值,作为四级差值;所述第四顺序为数值从小到大或者从大到小。然后将数值不同的三级差值按照所述第四顺序排列依次设置索引编号,并遍历相邻二级差值的三级差值,确定每一相邻二级差值的三级差值对应的索引编号。
[0290]则在进行编码时,具体是将最大深度值和最小深度值中的至少一个、最大一级差值、最大二级差值、最大三级差值,各个一级差值的索引编号、各个二级差值的索引编号、各个三级差值的索引编码以及相邻三级差值的四级差值进行编码,写入码流中。
[0291]以此类推,若四级差值的个数大于等于三级差值个数的二分之一时,可以按照本发明实施例所述的编码方式继续进行编码,将四级差值类似与二级差值,三级差值类似与一级差值,既可以按照一级差值和二级差值的编码过程进行编码等。
[0292]图12为本发明实施例提供的一种深度信息解码装置一个实施例的结构示意图,深度信息码流中包括最大深度值和最小深度值中的至少一个、最大一级差值、各个二级差值以及各个相邻深度值的一级差值。深度信息码流的编码方式可以参见上述实施例中所述。
[0293]本实施例中,所述装置可以包括:
[0294]第一解码模块1201,用于将所述码流进行解码,按照第一位宽解码获得最大深度值和最小深度值中至少一个、以及最大一级差值;按照第二位宽解码获得各个二级差值以及各个相邻深度值的一级差值的索引编号;
[0295]第一获取模块1202,用于根据所述最大一级差值、以及所述各个二级差值,获得数值不同的一级差值;
[0296]第二获取模块1203,用于根据按照第二顺序排列的所述数值不同的一级差值,以及各个相邻深度值的一级差值的索引编号,获得各个相邻深度值的一级差值;
[0297]第三获取模块1204,用于根据所述最大深度值和所述最小深度值中的至少一个、以及所述各个相邻深度值之间的一级差值,获得深度索引表中各个深度值。
[0298]作为又一个实施例,如图14所示,与图12所示装置不同之处,所述第一解码模块1201可以包括:
[0299]第一解码单元1301,用于按照第一位宽,解码获得所述码流中的最大深度值和最小深度值中至少一个、以及最大一级差值;
[0300]第一位宽更新单元1302,用于计算所述最大一级差值的位宽,作为第二位宽;
[0301]第二解码单元1303,用于按照所述第二位宽,解码获得所述码流中各个二级差值以及各个相邻深度值的一级差值的索引编号。
[0302]作为又一个实施例,如图14所示,与图12所示装置不同之处在于,所述码流中还包括按照第三位宽编码的最小一级差值;所述第一解码模块1201还用于按照第三位宽解码获得所述最小一级差值。
[0303]具体的,所述第一解码模块1201可以包括:
[0304]第一解码单元1401,用于按照第一位宽,解码获得所述码流中的最大深度值和最小深度值中至少一个、以及最大一级差值;
[0305]第二位宽更新单元1402,计算所述最大一级差值的位宽,作为第三位宽;
[0306]第三解码单元1403,用于按照所述第三位宽,解码获得所述码流中的最小一级差值;
[0307]第三位宽更新单元1404,用于计算最大一级差值和最小一级差值相减得到的差值的位宽,作为第二位宽;
[0308]第四解码单元1405,用于按照所述第二位宽,解码获得所述码流中的相邻一级差值的二级差值以及各个一级差值的索引编号。
[0309]另外,所述码流中还包括编码之后的深度值个数以及数值不同的一级差值个数时;作为又一个实施例:
[0310]第一解码模块1201还用于解码获得深度值个数以及数值不同的一级差值个数。
[0311]从而第一获取模块1202可以具体是根据最大一级差值以及各个二级差值,获得按照第二顺序排列,与所述数值不同的一级差值个数相应个数的一级差值。
[0312]第三获取模块1204可以具体是根据所述最大深度值和最小深度值中的至少一个,以及所述各个相邻深度值的一级差值,依次获得与所述深度值个数相应个数的的深度值。
[0313]另外,作为又一个实施例,如果深度信息码流中包括最大深度值和最小深度值至少一个、最大一级差值、各个相邻深度值的一级差值的索引编号、最大二级差值、各个二级差值的索引编号以及各个三级差值时。
[0314]如图15所示,则该解码装置还可以包括:
[0315]第二解码模块1501,用于将码流进行解码,按照第一位宽解码获得最大深度值和最小深度值至少一个以及最大一级差值;按照第二位宽解码获得各个相邻深度值的一级差值的索引编号以及最大二级差值;按照第四位宽解码获得各个二级差值的索引编号以及各个二级差值。
[0316]第四获取模块1502,用于根据最大二级差值,以及各个三级差值,获得数值不同的二级差值;
[0317]第五获取模块1503,用于根据各个二级差值的索引编号,以及解码获得的按照第三顺序排列的的二级差值,获得各个相邻一级差值的二级差值;
[0318]第六获取模块1504,用于根据最大一级差值、以及各个相邻一级差值的二级差值,获得数值不同的一级差值;
[0319]第七获取模块1505,用于根据按照第二顺序排列的所述数值不同的一级差值,以及各个相邻深度值的一级差值的索引编号,获得各个相邻深度值的一级差值;
[0320]第八获取模块1506,用于根据所述最大深度值和最小深度值中的至少一个、以及所述各个相邻深度值的一级差值,获得深度索引表中各个深度值。
[0321]本发明实施例中,编码数值减少,且无需编码深度值索引表,减少了资源的占用,节省了更多的比特资源,且在进行编码时对位宽进行更新,降低了编码占用的位宽,使得在更大程度上减少了资源的占用。
[0322]以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0323]通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0324]最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
【主权项】
1.一种深度信息编码方法,其特征在于,包括: 获取深度值索引表;其中,所述深度值索引表中的深度值按照第一顺序排列; 计算所述深度值索引表中相邻深度值的差值,作为一级差值; 选择数值不同的一级差值按照第二顺序排列,并计算排列顺序中相邻一级差值的差值,作为二级差值; 将所述数值不同的一级差值按照所述第二顺序依次设置索引编号,并遍历各个相邻深度值的一级差值,根据所述数值不同的一级差值设置的索引编号,确定每一个相邻深度值的一级差值对应的索引编号,其中,数值相同的一级差值的索引编号相同; 将最大深度值和最小深度值中的至少一个、以及最大一级差值按照第一位宽,各个二级差值以及各个相邻深度值的一级差值的索引编号按照第二位宽,分别进行编码写入码流中,其中,所述第二位宽小于所述第一位宽。2.根据权利要求1所述的方法,其特征在于,所述将最大深度值和最小深度值中的至少一个、以及最大一级差值按照第一位宽,各个二级差值以及各个一级差值的索引编号按照第二位宽,分别进行编码写入码流中包括: 将最大深度值和最小深度值中的至少一个、以及最大一级差值按照第一位宽进行编码,写入码流中; 计算所述最大一级差值的位宽,作为第二位宽; 将各个二级差值以及各个一级差值的索引编号分别按照所述第二位宽进行编码,写入所述码流中。3.根据权利要求1所述的方法,其特征在于,将最大深度值和最小深度值中的至少一个、以及最大一级差值按照第一位宽进行编码,写入码流中之后,所述方法还包括: 计算所述最大一级差值的位宽,作为第三位宽; 将最小一级差值按照第二位宽进行编码,与入码流中; 所述将各个二级差值以及各个一级差值的索引编号按照第二位宽进行编码,写入所述码流中包括: 计算最大一级差值和最小一级差值相减得到的差值的位宽,获得第二位宽; 将各个二级差值以及各个一级差值的索引编号按照第二位宽进行编码,写入所述码流中。4.根据权利要求1所述的方法,其特征在于,所述将最大深度值和最小深度值中的至少一个、以及最大一级差值按照第一位宽,各个二级差值以及各个相邻深度值的一级差值的索引编号按照第二位宽,分别进行编码写入码流中的同时,所述方法还包括: 将所述第一位宽的位宽值以及所述第二位宽的位宽值,分别进行编码,写入所述码流中。5.根据权利要求1所述的方法,其特征在于,所述将最大深度值和最小深度值中的至少一个、以及最大一级差值按照第一位宽,各个二级差值以及各个相邻深度值的一级差值的索引编号按照第二位宽,分别进行编码写入码流中的同时,所述方法还包括: 将统计得到的深度值索引表中的深度值个数以及数值不同的一级差值个数,按照所述第一位宽进行编码,写入所述码流中。6.根据权利要求1?5所述的方法,其特征在于,所述将所述数值不同的一级差值按照所述第二顺序排列依次设置索引编号,并遍历计算得到的相邻深度值的一级差值,根据所述数值不同的一级差值设置的索引编号,确定每一相邻深度值的一级差值对应的索引编号之后,所述方法还包括: 判断数值不同的二级差值的个数是否小于数值不同的一级差值个数的二分之一;如果是,执行所述将最大深度值和最小深度值中的至少一个、以及最大一级差值按照第一位宽,各个二级差值以及各个一级差值的索引编号按照第二位宽,分别进行编码写入码流中的步骤; 如果否,选择数值不同的二级差值按照第三顺序排列,并计算所述排列顺序中相邻二级差值的差值,作为三级差值; 将所述数值不同的二级差值按照所述第三顺序依次设置索引编号,并遍历各个相邻一级差值的二级差值,确定每一个相邻一级差值的二级差值对应的索引编号; 将最大深度值和最小深度值中的至少一个、以及最大一级差值按照第一位宽,将各个相邻深度值的一级差值的索引编号以及最大二级差值按照第二位宽,各个二级差值的索引编号以及所述三级差值按照第四位宽,分别进行编码,写入码流中,其中,所述第四位宽小于所述第二位宽。7.—种基于权利要求1?6任一项所述深度信息编码方法的深度信息解码方法,其特征在于,编码得到的码流中包括最大深度值和最小深度值中的至少一个、最大一级差值、各个二级差值以及各个相邻深度值的一级差值,所述方法包括: 将所述码流进行解码,按照第一位宽解码获得最大深度值和最小深度值中至少一个、以及最大一级差值;按照第二位宽解码获得各个二级差值以及各个相邻深度值的一级差值的索引编号; 根据所述最大一级差值、以及所述各个二级差值,获得数值不同的一级差值; 根据按照第二顺序排列的所述数值不同的一级差值,以及各个相邻深度值的一级差值的索引编号,获得各个相邻深度值的一级差值; 根据所述最大深度值和所述最小深度值中的至少一个、以及所述各个相邻深度值之间的一级差值,获得深度索引表中各个深度值。8.根据权利要求7所述的方法,其特征在于,所述将所述码流进行解码,按照第一位宽解码获得最大深度值和最小深度值中至少一个、以及最大一级差值;按照第二位宽解码获得各个二级差值以及各个相邻深度值的一级差值的索引编号包括: 按照第一位宽,解码获得所述码流中的最大深度值和最小深度值中至少一个、以及最大一级差值; 计算所述最大一级差值的位宽,作为第二位宽; 按照所述第二位宽,解码获得所述码流中各个二级差值以及各个相邻深度值的一级差值的索引编号。9.根据权利要求7所述的方法,其特征在于,所述码流中还包括按照第三位宽编码的最小一级差值; 所述将所述码流进行解码,按照第一位宽解码获得最大深度值和最小深度值中至少一个、以及最大一级差值之后,所述方法还包括: 计算所述最大一级差值的位宽,作为第三位宽; 按照所述第三位宽,解码获得所述码流中的最小一级差值; 所述按照第二位宽解码获得各个二级差值以及各个相邻深度值的一级差值的索引编号包括: 计算最大一级差值和最小一级差值相减得到的差值的位宽,作为第二位宽; 按照所述第二位宽,解码获得所述码流中的相邻一级差值的二级差值以及各个一级差值的索引编号。10.根据权利要求7所述的方法,其特征在于,所述码流中还包括按照第一位宽编码的深度值个数以及数值不同的一级差值个数; 所述将所述码流进行解码,按照第一位宽解码获得最大深度值和最小深度值中至少一个、以及最大一级差值的同时,所述方法还包括: 按照第一位宽解码获得所述深度值个数以及所述数值不同的一级差值个数; 所述根据所述最大一级差值、以及所述各个二级差值,获得数值不同的一级差值包括: 根据所述最大一级差值、以及所述各个二级差值,获得与所述数值不同的一级差值个数相应个数的一级差值; 所述根据所述最大深度值和所述最小深度值中的至少一个、以及所述各个相邻深度值之间的一级差值,获得深度索引表中各个深度值包括: 根据所述最大深度值和所述最小深度值中的至少一个、以及所述各个相邻深度值之间的一级差值,获得与所述深度值个数相应个数的深度值。11.一种深度信息编码装置,其特征在于,包括: 获取模块,用于获取深度值索引表;其中,所述深度值索引表中的深度值按照第一顺序排列; 一级计算模块,用于计算所述深度值索引表中相邻深度值的差值,作为一级差值; 二级计算模块,用于选择数值不同的一级差值按照第二顺序排列,并计算所述排列顺序中相邻一级差值的差值,作为二级差值; 第一索引模块,用于将所述数值不同的一级差值按照所述第二顺序排列依次设置索引编号,并遍历各个相邻深度值的一级差值,根据所述数值不同的一级差值设置的索引编号,确定每一个相邻深度值的一级差值对应的索引编号,其中,数值相同的一级差值的索引编号相同; 第一编码模块,用于将最大深度值和最小深度值中的至少一个、以及最大一级差值按照第一位宽,各个二级差值以及各个相邻深度值的一级差值的索引编号按照第二位宽,分别进行编码写入码流中,其中,所述第二位宽小于所述第一位宽。12.根据权利要求11所述的装置,其特征在于,所述第一编码模块包括: 第一编码单元,用于将最大深度值和最小深度值中的至少一个按照第一位宽进行编码,写入码流中; 第二编码单元,用于将最大一级差值按照所述第一位宽进行编码,写入码流中; 第一位宽更新单元,用于计算所述最大一级差值的位宽,作为第二位宽; 第三编码单元,用于将各个二级差值以及各个一级差值的索引编号分别按照所述第二位宽进行编码,写入所述码流中。13.根据权利要求10所述的装置,其特征在于,所述第一编码模块包括: 第一编码单元,用于将最大深度值和最小深度值中的至少一个按照第一位宽进行编码,写入码流中; 第二编码单元,用于将最大一级差值按照所述第一位宽进行编码,写入码流中; 第二位宽更新单元,用于计算所述最大一级差值的位宽,作为第三位宽; 第四编码单元,用于将最小一级差值按照第三位宽进行编码,写入码流中; 第三位宽更新单元,用于计算最大一级差值和最小一级差值相减得到的差值的位宽,获得第二位宽; 第五编码单元,用于将各个二级差值以及各个一级差值的索引编号按照第二位宽进行编码,写入所述码流中。14.根据权利要求11所述的装置,其特征在于,所述第一编码模块还用于: 将所述第一位宽的位宽值以及所述第二位宽的位宽值,分别进行编码,写入所述码流中。15.根据权利要求11所述的装置,其特征在于,还包括: 判断模块,用于判断数值不同的二级差值的个数是否小于数值不同的一级差值个数的二分之一;如果是触发所述第一编码模块; 三级计算模块,用于在所述判断模块结果为否时,选择数值不同的二级差值按照第三顺序排列,并计算所述排列顺序中相邻二级差值的差值,作为三级差值; 第二索引模块,用于将所述数值不同的二级差值按照所述第三顺序依次设置索引编号,并遍历各个相邻一级差值的二级差值,确定每一个相邻一级差值的二级差值对应的索引编号; 第二编码模块,用于将最大深度值和最小深度值中的至少一个、以及最大一级差值按照第一位宽,将各个相邻深度值的一级差值的索引编号以及最大二级差值按照第二位宽,各个二级差值的索引编号以及所述三级差值按照第四位宽,分别进行编码,写入码流中,其中,所述第四位宽小于所述第二位宽。16.一种基于权利要求11?15任一项所述深度信息编码装置的深度信息解码装置,其特征在于,编码得到的码流中包括最大深度值和最小深度值中的至少一个、最大一级差值、各个二级差值以及各个相邻深度值的一级差值,所述装置包括: 第一解码模块,用于将所述码流进行解码,按照第一位宽解码获得最大深度值和最小深度值中至少一个、以及最大一级差值;按照第二位宽解码获得各个二级差值以及各个相邻深度值的一级差值的索引编号; 第一获取模块,用于根据所述最大一级差值、以及所述各个二级差值,获得数值不同的一级差值; 第二获取模块,用于根据按照第二顺序排列的所述数值不同的一级差值,以及各个相邻深度值的一级差值的索引编号,获得各个相邻深度值的一级差值; 第三获取模块,用于根据所述最大深度值和所述最小深度值中的至少一个、以及所述各个相邻深度值之间的一级差值,获得深度索引表中各个深度值。17.根据权利要求15所述的装置,其特征在于,所述第一解码模块包括: 第一解码单元,用于按照第一位宽,解码获得所述码流中的最大深度值和最小深度值中至少一个、以及最大一级差值; 第一位宽更新单元,用于计算所述最大一级差值的位宽,作为第二位宽; 第二解码单元,用于按照所述第二位宽,解码获得所述码流中各个二级差值以及各个相邻深度值的一级差值的索引编号。18.根据权利要求15所述的方法,其特征在于,所述码流中还包括按照第三位宽编码的最小一级差值;所述第一解码模块还用于按照第三位宽解码获得所述最小一级差值; 所述第一解码模块包括: 第一解码单元,用于按照第一位宽,解码获得所述码流中的最大深度值和最小深度值中至少一个、以及最大一级差值; 第二位宽更新单元,计算所述最大一级差值的位宽,作为第三位宽; 第三解码单元,用于按照所述第三位宽,解码获得所述码流中的最小一级差值; 第三位宽更新单元,用于计算最大一级差值和最小一级差值相减得到的差值的位宽,作为第二位宽; 第四解码单元,用于按照所述第二位宽,解码获得所述码流中的相邻一级差值的二级差值以及各个一级差值的索引编号。
【文档编号】H04N19/597GK105915917SQ201510441354
【公开日】2016年8月31日
【申请日】2015年7月24日
【发明人】蔡砚刚, 魏伟, 白茂生, 刘阳, 祁海
【申请人】乐视云计算有限公司