CN110191341A - 一种深度数据的编码方法和解码方法 - Google Patents
一种深度数据的编码方法和解码方法 Download PDFInfo
- Publication number
- CN110191341A CN110191341A CN201910456564.9A CN201910456564A CN110191341A CN 110191341 A CN110191341 A CN 110191341A CN 201910456564 A CN201910456564 A CN 201910456564A CN 110191341 A CN110191341 A CN 110191341A
- Authority
- CN
- China
- Prior art keywords
- data
- depth
- pixel
- depth value
- current pixel
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明提供了一种深度数据的编码和解码方法,其中,编码方法包括以下步骤:选择深度数据中的一个像素;读取所述当前像素的深度数值和所述当前像素的相邻像素的深度数值;判断所述当前像素的深度数值和其相邻像素的深度数值的相似度;根据相似度将当前像素的深度数值定义为重复数据、差值数据及真实数据进行存储;按照上述步骤对当前像素的下一个像素进行深度数据存储,直至接收到停止指令或完成编码。借助于本发明的上述技术方案,能够实现深度视频数据的实时压缩。
Description
技术领域
本发明涉及图像处理技术领域,具体涉及一种深度数据的编码方法和解码方法。
背景技术
现有的压缩数据技术并没有专门针对深度数据的压缩算法,其可以借鉴的算法主要分为两类:
一类是通用的有损视频压缩算法,比如H264以及JPEG(Joint PhotographicExperts Group,联合图像专家小组)等等,该有损视频压缩算法的优势是有很多成熟的硬件芯片方案去实现压缩算法,而且压缩率较高。但是,其缺点是压缩算法的输入源要求是8位的通用图像数据,其原理是在频域对人眼不敏感的边缘信息进行滤波处理,从而减少频域上的数据量用于实现压缩,而深度数据的边缘往往是最关键的部分,如果被低通滤波之后,会出现中间数据,影响深度的数据准确性,而且深度数据基本都不是用8位数据表示的,所以此方案基本无法对通用的深度数据进行压缩处理。
另外一类则是通用的无损数据压缩算法,比如PNG(Portable Network Graphics,便携式网络图形)和Zip采用的压缩方法,该无损数据压缩算法的优势是可以完整的将数据压缩并还原,而且基本与数据源格式无关,但是缺点是对较大的图像数据压缩时,需要消耗巨大的系统性能,而且往往没有硬件模块去实现,很难在嵌入式设备上对视频数据实现实时的压缩和解压。另外由于其设计初衷并没有利用深度数据的特性,所以压缩率也并不高。
因此,在现有技术中,并未提出一种有效的针对深度数据的压缩方法。
发明内容
本发明提供一种深度数据的编码方法和解码方法,解决现有上述的问题。
为解决上述问题,本发明实施例提供一种深度数据的编码方法,包括以下步骤:
选择深度数据中的一个像素;
读取所述当前像素的深度数值和所述当前像素的相邻像素的深度数值;
判断所述当前像素的深度数值和其相邻像素的深度数值的相似度;
根据相似度将当前像素的深度数值定义不同的数据类型进行存储;
若当前像素的深度数值和相邻像素的深度数值相同,则定义当前像素的深度数值为重复数据,并计算连续深度数值相同的像素个数进行存储;若当前像素的深度数值和相邻像素的深度数值的差值在预设的深度数值范围内,则定义当前像素的深度数值为差值数据,并计算出相邻像素的深度数值的差值进行存储;若当前像素和相邻像素的差值在预设的深度数值范围外,则定义为当前像素的深度数值为真实数据,并直接存储当前像素的深度数值;
按照上述步骤对当前像素的下一个像素进行深度数据编码,直至接收到停止指令或完成所有像素编码。
作为一种实施方式,所述计算出相邻像素的深度数值的差值进行存储步骤,包括以下步骤:
当存储数据为差值数据时,采用3位数据表示相邻像素的差值,范围为-4~3,以补码的形式存储。
作为一种实施方式,所述深度数据为9~12位数据。
作为一种实施方式,还包括以下步骤:
所述像素的深度数值以2个字节进行存储,其中,高4位bit用于表示像素的深度数值的数据类型。
本发明还提供一种上述编码方法生成的深度数据的解码方法,包括以下步骤:
读取深度数据的编码数据;
根据所述编码数码判断所述深度数值的数据类型;
按像素的排列顺序和数据类型依次解码还原所有像素的深度数值。
作为一种实施方式,还包括以下步骤:
若所述数据类型为真实数据,则去除表征数据类型的数据后进行存储。
作为一种实施方式,还包括以下步骤:
若所述数据类型为差值数据,则根据当前像素和其相邻像素的差值、相邻像素的编码数据还原当前像素的深度数值进行存储。
作为一种实施方式,还包括以下步骤:
若所述数据类型为重复数据,则根据重复个数和相邻像素的编码数据还原相应数量的像素的深度数值进行存储。
作为一种实施方式,还包括以下步骤:
根据编码数据的高4位bit判断编码数据的数据类型。
本发明相比于现有技术的有益效果在于:。
通过上述编码方法和解码方法,从而在正常应用场景中,对12位的深度数据,最终能够实现2到4倍的数据压缩率,而且此算法实现较为简单,消耗性能极低,在基于armA7架构的芯片上,能够实现分辨率为640x480,帧率为30帧的12位深度实时视频数据的压缩。
综上所述,借助于本发明的上述技术方案,能够实现深度视频数据的实时压缩,并且该方案实现较为简单,消耗性能极低。
附图说明
图1为本发明的深度数据的编码方法的流程图;
图2为本发明的深度数据的编码数据的格式;
图3为本发明的深度数据的编码方法的具体流程图;
图4为本发明的深度数据的解码方法的流程图;
图5为本发明的深度数据的编码方法的具体流程图;
图6为本发明的深度数值编码前的数据;
图7为本发明的深度数值编码后的数据。
具体实施方式
以下结合附图,对本发明上述的和另外的技术特征和优点进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的部分实施例,而不是全部实施例。
如图1所示,一种深度数据的编码方法,包括以下步骤:
S100:选择深度数据中的一个像素;
S200:读取所述当前像素的深度数值和所述当前像素的相邻像素的深度数值;
S300:判断所述当前像素的深度数值和其相邻像素的深度数值的相似度;
S400:根据相似度将当前像素的深度数值定义不同的数据类型进行存储;
S501:若当前像素的深度数值和相邻像素的深度数值相同,则定义当前像素的深度数值为重复数据,并计算连续深度数值相同的像素个数进行存储;S502:若当前像素的深度数值和相邻像素的深度数值的差值在预设的深度数值范围内,则定义当前像素的深度数值为差值数据,并计算出相邻像素的深度数值的差值进行存储;S503:若当前像素和相邻像素的差值在预设的深度数值范围外,则定义为当前像素的深度数值为真实数据,并直接存储当前像素的深度数值;
S600:按照上述步骤S200~S400、S501、S502及S503对当前像素的下一个像素进行深度数据编码,直至接收到停止指令或完成所有像素编码。
由于深度图像中,相邻像素的深度数值差异不大,只有在少数边缘部分存在大幅度的变化,而通过上述编码方法可以只用少量数据来存储大多数数值差异不大的差分数据,可实现一定数据的压缩。通过上述编码方法,在正常应用场景中,对12位的深度数据,最终能够实现2到4倍的数据压缩率。
为了便于理解本发明的技术方案,下面通过具体的实施例进行详细的描述:
为了节省CPU运算资源,深度图像中的深度数据全部采用定长数据编码。
此外,该深度数据的编码方法的语法设计:将编码后的数据分两部分存储,一部分为数据类型,一部分为存储数据,数据的真实含义根据数据类型的不同则分别表示三种不同的含义,一种表示真实数据,一种表示差值数据,另外一种表示重复数据的个数。
另外,假设深度数据每个像素需要占用N位表示,而深度数据本身可以只用n位数据表示,差值数据用m位数据表示,数据类型用t位表示。则设计时只要保证N不小于n和t的和,同时n不小于2倍的m,就很容易实现快速高效的压缩算法。
此外,该深度数据的编码方法的语义设计:最终的数据由t+n位数据表示,假设t位数据里存储的值为type,n位数据里存储的值为num,当type表示真实数据时,则num表示当前像素的深度数值;当type表示重复数据时,则num表示有连续num个相同的数据,其深度数值和当前像素的前一个像素的值相同;当type表示差值数据时,则num表示至少两个深度数据的差值,此差值表示当前像素的深度数值和前一像素的深度数据的差值,同时type本身还可以扩展为后面差值数据的个数。
如图2所示,另外,在本实施例中,深度数值均通过2字节(即16bit)存储,其中,真实深度数据为9~12位数据,以真实深度数据为12位数据为例,将其高4位bit用于表示像素的深度数值的数据类型(以真实深度数据为9位数据为例,可将其高7位bit用于表示像素的深度数值的数据类型,即真实数据位数和数据类型位数之和为16即可,该若干实施例在本发明中不作阐述)。
其中,上图中0位表示低位,F表示第15位,也就是最高位。
C到F位表示数据类型。
0到B位表示存储数据,其含义与数据类型相关。
数据类型与存储数据的对应关系如下:
数据类型为0时,存储数据表示真实数据;
数据类型为1时,存储数据表示重复数据的个数;
数据类型2~4时,存储数据表示差值数据,而数据类型本身的值还表示差值数据的个数。
当存储数据为差值模式时,后面的12位被分成4部分,也就是用每3位数据表示相邻像素的差值,范围为-4~3,以补码形式存储。
0到2位表示第一个差值;
3到5位表示第二个差值;
6到8位表示第三个差值;
9到B位表示第三个差值;
当数据类型为2时,只有0到5位数据有效。
如图3所示,该深度数据的编码方法步骤如下:
步骤1:根据m的值来确定差值数据能够表示的数值范围;
步骤2:将前一像素的默认值修改为0;
步骤3:获取一个像素的待编码的数据;
步骤4:判断当前像素和前一个像素的深度数值是否相同,如果相同则计算重复的像素个数并存储,返回步骤3,如果不同,则进行下一步操作;
步骤5:判断当前像素和前一像素的深度数值的差值是否在m位差值数据的预设范围内,如果在,则计算差值并保存,返回步骤3,如果不在,则进行下一步操作;
步骤6:直接存储当前像素的原始数据,返回步骤3;
步骤7:对当前像素的下一个像素进行深度数据编码,直至完成所有像素编码。
如图4所示,与该编码方法相应的一种深度数据的解码方法,包括以下步骤:
S101:读取深度数据的编码数据;
S201:根据所述编码数码判断所述深度数值的数据类型;
S301:按像素的排列顺序和数据类型依次解码还原所有像素的深度数值。
S401:若所述数据类型为真实数据,则去除表征数据类型的数据后进行存储;S402:若所述数据类型为差值数据,则根据当前像素和其相邻像素的差值、相邻像素的编码数据还原当前像素的深度数值进行存储;S403:若所述数据类型为重复数据,则根据重复个数和相邻像素的编码数据还原相应数量的像素的深度数值进行存储;
S500:完成所有像素的解码。
其中,根据编码数据的高4位bit判断编码数据的数据类型。
为了便于理解本发明的技术方案,下面通过具体的实施例进行详细的描述。
如图5所示,该深度数据的解码方法包括:
步骤10:将前一像素的默认值修改为0;
步骤20:读取n+t位编码数据,判断数据类型,如果数据类型为原始数据,则执行步骤30;如果数据类型为重复数据,则执行步骤40;如果数据类型为差值数据,则执行步骤50;
步骤30:去除数据类型,存储当前数据,返回步骤20;
步骤40:根据前一像素的深度数值,还原相应重复数目的深度数据并存储,返回步骤20;
步骤50:根据差值和前一像素的深度数值,计算当前像素的深度数值,每计算一次,则需要存储相应数据,计算完成后返回步骤20。
步骤60:对下一编码数据进行解码,直至完成所有编码数据的解码。
如图6~7所示,以图形的初始像素为例,00两位数为1个字节深度数据,00 00表示为一个像素的深度数值。首先深度图像开始时的参考数据是0,而深度数据上来刚好是有很多0,所以直接存储相应数目的重复数据即可。从原始数据图中可以看到,开始刚好有0x166字节的0,除以2(两个字节存储一个像素的深度数值),则表示有0xB3个像素为0的深度数据。所以这部分编码后直接存储0x10B3。
接下来4个像素的深度数值相差较大,则直接存储4个像素的原始数据。直到出现连续的三个0x29E,第一个0x29E则直接按原样存储(由于像素的深度数值都是和后一像素的深度数值作比较,所以只有出现第二个重复数据的时候,才会编码一个重复数据),后面的两个则直接以两个重复数据的形式存储,则用0x102表示。后面又连续有9个像素的原始数据,然后出现4个差值较小的差值数据。第一个是0x297和0x29A做差,差值为-3(在差值范围-4~3中),用三位补码二进制表示是0b101,紧接着0x297和0x297做差,差值为0,用三位补码二进制表示是0b000,然后0x298和0x297做差,差值为1,三位二进制补码表示为0b001,最后0x29A和0x298做差,差值为2,三位二进制补码表示为0b010,所以加上数据类型4(数据类型2~4均为差值数据)用二进制表示为0b0100,则结果为0b0100010001000101,十六进制是0x4445。
然后下一个像素的深度数值0x29E和0x29A的差值为4,超出预设深度数值范围,所以存储原始数据,然后是两个差值的数,第一个差值为0b010,第二个差值为0b110,配合数据类型2,结果为0b0010000000110010,所以结果为0x2032。
后续像素的编码方式依次类推。
从而,通过本发明的上述编码方法和解码方法,从而在正常应用场景中,对12位的深度数据,最终能够实现2到4倍的数据压缩率,而且此算法实现较为简单,消耗性能极低,在基于armA7架构的芯片上,能够实现分辨率为640x480,帧率为30帧的12位深度实时视频数据的压缩。
综上所述,借助于本发明的上述技术方案,能够实现深度视频数据的实时压缩,并且该方案实现较为简单,消耗性能极低。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步的详细说明,应当理解,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围。特别指出,对于本领域技术人员来说,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种深度数据的编码方法,其特征在于,包括以下步骤:
选择深度数据中的一个像素;
读取所述当前像素的深度数值和所述当前像素的相邻像素的深度数值;
判断所述当前像素的深度数值和其相邻像素的深度数值的相似度;
根据相似度将当前像素的深度数值定义不同的数据类型进行存储;
若当前像素的深度数值和相邻像素的深度数值相同,则定义当前像素的深度数值为重复数据,并计算连续深度数值相同的像素个数进行存储;若当前像素的深度数值和相邻像素的深度数值的差值在预设的深度数值范围内,则定义当前像素的深度数值为差值数据,并计算出相邻像素的深度数值的差值进行存储;若当前像素和相邻像素的差值在预设的深度数值范围外,则定义为当前像素的深度数值为真实数据,并直接存储当前像素的深度数值;
按照上述步骤对当前像素的下一个像素进行深度数据编码,直至接收到停止指令或完成所有像素编码。
2.根据权利要求1所述的深度数据的编码方法,其特征在于,所述计算出相邻像素的深度数值的差值进行存储步骤,包括以下步骤:
当存储数据为差值数据时,采用3位数据表示相邻像素的差值,范围为-4~3,以补码的形式存储。
3.根据权利要求1所述的深度数据的编码方法,其特征在于,所述深度数据为9~12位数据。
4.根据权利要求1所述的深度数据的编码方法,其特征在于,还包括以下步骤:
所述像素的深度数值以2个字节进行存储,其中,高4位bit用于表示像素的深度数值的数据类型。
5.一种用于权利要求1~4所述编码方法生成的深度数据的解码方法,其特征在于,包括以下步骤:
读取深度数据的编码数据;
根据所述编码数码判断所述深度数值的数据类型;
按像素的排列顺序和数据类型依次解码还原所有像素的深度数值。
6.根据权利要求5所述的深度数据的编码方法,其特征在于,还包括以下步骤:
若所述数据类型为真实数据,则去除表征数据类型的数据后进行存储。
7.根据权利要求5所述的深度数据的编码方法,其特征在于,还包括以下步骤:
若所述数据类型为差值数据,则根据当前像素和其相邻像素的差值、相邻像素的编码数据还原当前像素的深度数值进行存储。
8.根据权利要求5所述的深度数据的编码方法,其特征在于,还包括以下步骤:
若所述数据类型为重复数据,则根据重复个数和相邻像素的编码数据还原相应数量的像素的深度数值进行存储。
9.根据权利要求6~8所述的深度数据的编码方法,其特征在于,还包括以下步骤:
根据编码数据的高4位bit判断编码数据的数据类型。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810551609.6A CN108683920A (zh) | 2018-05-31 | 2018-05-31 | 一种深度数据的编码方法和解码方法 |
CN2018105516096 | 2018-05-31 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110191341A true CN110191341A (zh) | 2019-08-30 |
CN110191341B CN110191341B (zh) | 2021-06-11 |
Family
ID=63809540
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810551609.6A Pending CN108683920A (zh) | 2018-05-31 | 2018-05-31 | 一种深度数据的编码方法和解码方法 |
CN201910456564.9A Active CN110191341B (zh) | 2018-05-31 | 2019-05-29 | 一种深度数据的编码方法和解码方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810551609.6A Pending CN108683920A (zh) | 2018-05-31 | 2018-05-31 | 一种深度数据的编码方法和解码方法 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN108683920A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113704208A (zh) * | 2021-10-27 | 2021-11-26 | 浙江闪铸三维科技有限公司 | 一种3d打印文件的压缩方法 |
CN115174774A (zh) * | 2022-06-29 | 2022-10-11 | 上海飞机制造有限公司 | 一种深度图像的压缩方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090129667A1 (en) * | 2007-11-16 | 2009-05-21 | Gwangju Institute Of Science And Technology | Device and method for estimatiming depth map, and method for generating intermediate image and method for encoding multi-view video using the same |
CN103139577A (zh) * | 2011-11-23 | 2013-06-05 | 华为技术有限公司 | 一种深度图像滤波方法、获取深度图像滤波阈值的方法和装置 |
CN105915917A (zh) * | 2015-07-24 | 2016-08-31 | 乐视云计算有限公司 | 深度信息编码方法、解码方法及装置 |
CN106162195A (zh) * | 2016-07-05 | 2016-11-23 | 宁波大学 | 一种基于单深度帧内模式的3d‑hevc深度视频信息隐藏方法 |
-
2018
- 2018-05-31 CN CN201810551609.6A patent/CN108683920A/zh active Pending
-
2019
- 2019-05-29 CN CN201910456564.9A patent/CN110191341B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090129667A1 (en) * | 2007-11-16 | 2009-05-21 | Gwangju Institute Of Science And Technology | Device and method for estimatiming depth map, and method for generating intermediate image and method for encoding multi-view video using the same |
CN103139577A (zh) * | 2011-11-23 | 2013-06-05 | 华为技术有限公司 | 一种深度图像滤波方法、获取深度图像滤波阈值的方法和装置 |
CN105915917A (zh) * | 2015-07-24 | 2016-08-31 | 乐视云计算有限公司 | 深度信息编码方法、解码方法及装置 |
CN106162195A (zh) * | 2016-07-05 | 2016-11-23 | 宁波大学 | 一种基于单深度帧内模式的3d‑hevc深度视频信息隐藏方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113704208A (zh) * | 2021-10-27 | 2021-11-26 | 浙江闪铸三维科技有限公司 | 一种3d打印文件的压缩方法 |
CN113704208B (zh) * | 2021-10-27 | 2022-02-08 | 浙江闪铸三维科技有限公司 | 一种3d打印文件的压缩方法 |
CN115174774A (zh) * | 2022-06-29 | 2022-10-11 | 上海飞机制造有限公司 | 一种深度图像的压缩方法、装置、设备及存储介质 |
CN115174774B (zh) * | 2022-06-29 | 2024-01-26 | 上海飞机制造有限公司 | 一种深度图像的压缩方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110191341B (zh) | 2021-06-11 |
CN108683920A (zh) | 2018-10-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113574540B (zh) | 点云编解码方法、装置和电子设备 | |
CN109314779B (zh) | 用于视频编码中的运动向量储存的方法及其装置 | |
US10153780B2 (en) | Coding method, decoding method, coder, and decoder | |
JP4792257B2 (ja) | 適応算術復号化方法及び適応算術復号化装置 | |
KR100845090B1 (ko) | 화상 부호화 장치, 화상 복호 장치 및 그것들의 제어 방법 | |
US6677869B2 (en) | Arithmetic coding apparatus and image processing apparatus | |
CN111614957B (zh) | 图像或者视频数据的熵编解码的方法及熵编解码装置 | |
CN111246206B (zh) | 一种基于自编码器的光流信息压缩方法及装置 | |
CN103918272A (zh) | 数据编码及译码 | |
RU2595916C1 (ru) | Кодер, декодер и способ | |
CN103702133A (zh) | 一种图像压缩展示方法及其装置 | |
CN110191341A (zh) | 一种深度数据的编码方法和解码方法 | |
CN108632630B (zh) | 一种结合位运算和概率预测的二值图像编码方法 | |
TW201832554A (zh) | 用於上下文自適應二進制算術編解碼中的範圍推導的方法和裝置 | |
CN101502122A (zh) | 编码装置及编码方法 | |
KR101727449B1 (ko) | 영상 양자화 파라미터 복호 방법 | |
CN105208394A (zh) | 一种实时数字图像压缩预测方法与系统 | |
CN111432211B (zh) | 一种用于视频编码的残差信息压缩方法 | |
CN103139566B (zh) | 用于可变长度码的高效解码的方法 | |
US8798139B1 (en) | Dual-pipeline CABAC encoder architecture | |
CN104301726A (zh) | 一种图像无损压缩与解压缩的方法 | |
CN115250351A (zh) | 用于图像数据的压缩方法、解压方法及相关产品 | |
JP4936574B2 (ja) | 符号化装置及びその制御方法 | |
EP4224852A1 (en) | Video encoding and decoding methods, encoder, decoder, and storage medium | |
CN116828196A (zh) | 一种基于fpga的jpeg-ls编码器的实现方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |