CN112055223A - 一种图像编解码方法及编解码器 - Google Patents

一种图像编解码方法及编解码器 Download PDF

Info

Publication number
CN112055223A
CN112055223A CN202010851937.5A CN202010851937A CN112055223A CN 112055223 A CN112055223 A CN 112055223A CN 202010851937 A CN202010851937 A CN 202010851937A CN 112055223 A CN112055223 A CN 112055223A
Authority
CN
China
Prior art keywords
data
residual
pixel
image
coding
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.)
Pending
Application number
CN202010851937.5A
Other languages
English (en)
Inventor
朱竹青
洪文先
孙海年
陈琦
方伟
杨银昌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang Dahua Technology Co Ltd
Original Assignee
Zhejiang Dahua Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhejiang Dahua Technology Co Ltd filed Critical Zhejiang Dahua Technology Co Ltd
Priority to CN202010851937.5A priority Critical patent/CN112055223A/zh
Publication of CN112055223A publication Critical patent/CN112055223A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/587Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal sub-sampling or interpolation, e.g. decimation or subsequent interpolation of pictures in a video sequence
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本申请公开了一种图像编解码方法及编解码器,编码方法包括将待处理图像划分成若干个编码块,并获取待处理图像的像素深度;对编码块中的像素数据进行预处理,处理后的像素数据被拆分成多个单元的像素子数据,每个单元的像素子数据包括预设位数的二进制数;计算编码块中像素的预测残差,得到编码块的残差图像;选取码流最短的编码方式对残差图像进行编码。通过上述方式,本申请能够使编解码器兼容处理不同像素深度的图像。

Description

一种图像编解码方法及编解码器
技术领域
本申请涉及图像编解码技术领域,特别是涉及图像编解码方法及编解码器。
背景技术
近年来,随着多媒体技术的发展,对视频图像的处理及高效传送的技术得到广泛关注和使用。一般地,因为视频图像数据量比较大,通常需要对视频像素数据进行压缩(即编码),从而降低视频的数据量。现有技术中在对图像进行编码压缩时,还存在一定的不足,在一定程度上影响了编码压缩效果。
发明内容
本申请主要解决的技术问题是提供一种图像编解码方法及编解码器,能够使编解码器兼容处理不同像素深度的图像。
为解决上述技术问题,本申请采用的一个技术方案是:提供一种图像编码方法,该方法包括将待处理图像划分成若干个编码块,并获取待处理图像的像素深度;对编码块中的像素数据进行预处理,处理后的像素数据被拆分成多个单元的像素子数据,每个单元的像素子数据包括预设位数的二进制数;计算编码块中像素的预测残差,得到编码块的残差图像;选取码流最短的编码方式对残差图像进行编码。
为解决上述技术问题,本申请采用的另一个技术方案是:提供一种图像解码方法,该方法包括获取码流数据,码流数据是对编码块中的像素数据进行预处理后编码得到的,其中,预处理后的像素数据被拆分成多个单元的像素子数据,每个单元的像素子数据包括预设位数的二进制数;解析码流的头信息,获取各层码流的码流长度和编码方式;按照对应的编码方式依次在码流中解码出残差图像,还原出原始图像。
为解决上述技术问题,本申请采用的另一个技术方案是:提供一种编码器,编码器包括处理器,处理器用于执行指令以实现上述的图像编码方法。
为解决上述技术问题,本申请采用的另一个技术方案是:提供一种解码器,解码器包括处理器,处理器用于执行指令以实现上述的图像解码方法。
为解决上述技术问题,本申请采用的另一个技术方案是:提供一种计算机可读存储介质,计算机可读存储介质用于存储指令/程序数据,指令/程序数据能够被执行以实现上述的编解码方法。
本申请的有益效果是:区别于现有技术的情况,本申请通过对原始像素数据进行处理,将其拆分成一个个的数据单元,即可以将像素数据拆分成多个相同位宽的子数据,再分别对每个单元的像素子数据进行残差计算和图像编码,能够使编码器可支持多种像素深度的图像数据的无损压缩,计算复杂度低,控制简单,编码模块完全可重用,不需要为不同像素深度的图像设计不同的压缩和解压缩模块,不需要增加硬件面积。
附图说明
图1是本申请实施方式中一图像编码方法的流程示意图;
图2是本申请实施方式中像素数据预处理的流程示意图;
图3是本申请实施方式中另一图像编码方法的流程示意图;
图4是本申请实施方式中一像素数据的示意图;
图5是本申请实施方式中另一像素数据的示意图;
图6是本申请实施方式中一计算预测残差的示意图;
图7是本申请实施方式中另一计算预测残差的示意图;
图8是本申请实施方式中码流数据的示意图;
图9是本申请实施方式中一图像解码方法的流程示意图;
图10是本申请实施方式中Huffman解码的示意图;
图11是本申请实施方式中另一图像解码方法的流程示意图;
图12是本申请实施方式中残差重构的示意图;
图13是本申请实施方式中又一图像解码方法的流程示意图;
图14是本申请实施方式中再一图像解码方法的流程示意图;
图15是本申请实施方式中再另一图像解码方法的流程示意图;
图16是本申请实施方式中再又一图像解码方法的流程示意图;
图17是本申请实施方式中一编码器的结构示意图;
图18是本申请实施方式中另一编码器的结构示意图;
图19是本申请实施方式中一解码器的结构示意图;
图20是本申请实施方式中另一解码器的结构示意图;
图21为本申请一实施方式中计算机可读存储介质的结构示意图。
具体实施方式
为使本申请的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本申请进一步详细说明。
本申请提供一种图像编码方法,该方法中通过对不同像素深度的图像的像素数据进行预处理,能够使编码器可支持用于处理不同像素深度的图像,提高编码器的通用性。
在视频图像压缩解压(编解码)领域,特别是热成像和红外图像领域,所得图像数据的像素深度有10bit、12bit、14bit、16bit等,经过图像处理后中间数据也会有8bit、10bit、12bit、14bit、16bit等等,像素深度不同使得像素数据的位宽不同,通常需要不同的编码设备对不同像素位深度的图像进行编码和解码来减小系统所需要的带宽,编码设备的通用性差。
请参阅图1,图1是本申请实施方式中一图像编码方法的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图1所示的流程顺序为限。如图1所示,本实施方式包括:
S110:将待处理图像划分成若干个编码块,并获取待处理图像的像素深度。
其中,可以按照图像横向和纵向扫描的方式将X*Y个像素分为一个编码块,即一个编码块中包括X*Y个像素,但不限于此,还可以选择把相关性较强的像素分在一个编码块中。另可以按照字节数(像素深度)选择一个编码块中有多少个像素,如当像素深度是8bit的时候,可以选择一个编码块中包括64个像素,当像素深度是10bit、12bit、14bit、16bit的时候,可以选择一个编码块中包括32个像素。在划分编码块时,如果一行图像数据结束了,但并不足一个编码块单元的数据量,则可以对该图像进行填充补位,补位所填入的像素数据均是该行图像结束时的最后一个像素的像素数据。通过填充相同的像素数据,在计算预测残差时,补位数据所得残差均为0,能够去除编码冗余。
S120:对编码块中的像素数据进行预处理,处理后的像素数据被拆分成多个单元的像素子数据。
其中,每个单元的像素子数据包括预设位数的二进制数。可以根据编码器设备的性能设置数据单元中像素子数据的位数。一般可设置数据单元中像素子数据的位数等于最小像素深度,如可设置数据单元中像素子数据的位数为8bit。当处理其他位数的像素数据时,需要对原始像素数据进行处理,处理后的像素数据被拆分成多个单元的像素子数据,再分别对每个单元的像素子数据进行处理,达到编码器兼容处理不同像素深度图像的目的。如处理像素深度为16bit的图像时,可以将16bit的原始像素数据拆分成两个8bit的子数据,分为两个数据单元来处理。
S130:计算编码块中像素的预测残差,得到编码块的残差图像。
S140:选取码流最短的编码方式对残差图像进行编码。
该实施方式中,通过对原始像素数据进行处理,将其拆分成一个个的数据单元,即可以将像素数据拆分成多个相同位宽的子数据,再分别对每个单元的像素子数据进行残差计算和图像编码,能够使编码器可支持多种像素深度的图像数据的无损压缩,计算复杂度低,控制简单,编码模块完全可重用,不需要为不同像素深度的图像设计不同的压缩和解压缩模块,不需要增加硬件面积。
请参阅图2,图2是本申请实施方式中像素数据预处理的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图2所示的流程顺序为限。如图2所示,对编码块的像素数据进行预处理,处理后的像素数据被拆分成多个单元的像素子数据包括:
S121:获取待处理图像的像素深度和像素子数据位数。
其中,像素子数据位数是指一个单元的像素子数据包含的二进制数的位数。
S122:判断待处理图像的像素深度是否是像素子数据位数的正整数倍。
若像素深度是像素子数据位数的正整数倍,则执行步骤S123;若像素深度不是像素子数据位数的正整数倍,则执行步骤S124。
S123:直接对像素数据进行拆分,得到多个单元的像素子数据。
如若像素深度等于像素子数据位数,则不需要对该图像的像素数据进行处理,直接对原始像素数据进行预测编码。如若像素深度等于像素子数据位数的2倍,则可以将原始像素数据拆分成两个单元的像素子数据。
在一实施方式中,可以对像素数据进行字节拆分,按照字节位地址的高低顺序进行数据单元划分,得到多个单元的像素子数据。如可以将像素数据拆分成高字节和低字节,得到一个单元的高字节像素子数据和一个单元的低字节像素子数据,再分别对高字节和低字节的像素子数据进行预测编码。通过将高低字节部分的像素数据分开处理,可以提高每个编码块中像素数据的相关性,通过将相关性较强的像素数据放在一起处理,能够提高预测编码的精准度,同时减少数据冗余,提高编码效率。
S124:先将像素数据补位至像素子数据位数的正整数倍,再对补位后的像素数据进行拆分,得到多个单元的像素子数据。
其中,可以对像素数据进行低位补零,直至像素数据的位数是像素子数据位数的正整数倍。但不限于此,还可以是对像素数据进行高位补位,也可以是在中间任意位置进行补位。补位后,可以对补位后的像素数据进行字节拆分,按照字节位地址高低顺序进行数据单元划分。通过这种方式,在计算预测残差时,补位的像素数据所得残差都是0,能够减少计算复杂度,减少数据冗余,提升编码效率。
在一实施方式中,计算编码块中像素的预测残差包括:将编码块中第一个像素的像素数据减去零,得到第一个预测残差,将第二个像素的像素数据减去第一个像素的像素数据,得到第二个预测残差,依次类推,得到该编码块中所有像素的预测残差,进而得到编码块的残差图像。
其中,若像素数据被拆分成了多个单元的像素子数据,在计算预测残差时也对应的将编码块的像素数据分为多个处理单元,每个处理单元中的像素包括一个单元的像素子数据,再分别计算每个处理单元中像素的预测残差,得到多个残差子图像,多个残差子图像构成残差图像。
该实施方式中,在计算像素的预测残差时,第一个预测残差是第一个像素数据减去零得到的,即等于将第一个像素数据放在了码流中,不再放在头信息中,进而码流中也不再需要编码一个残差为零的数据。通过这种方式,一方面能够减少码流的数据量,减少数据冗余,提升压缩效果。另一方面还解决了当处理不同像素深度的图像时,需要往头信息里面存储一个不同数据长度的码流造成码流格式不统一的问题。使多种像素深度的像素数据的无损压缩和解压能采用统一的内存格式,不需要制定不同的数据存储格式,不需要根据不同像素深度增加头信息的字节占用,不需要定义不同码流的存储格式,且可以方便扩展为其它像素深度和更高像素深度的图像的编码。
在一实施方式中,在计算得到像素的预测残差后,还需要将残差数据处理成无符号数。
其中,当处理单元中不包含补位数据时,可利用公式(1)将所得残差数据映射为无符号数:
Figure BDA0002645023210000041
其中,x是指计算所得残差数据,x_unsign是指无符号数残差数据。
当处理单元中包含补位数据时,可利用公式(2)将所得残差数据映射为无符号数:
Figure BDA0002645023210000051
其中,x是指计算所得残差数据,x_unsign是指无符号数残差数据,<<表示左移(低位补位),>>表示右移(高位补位),M为对原始像素数据进行补位时所补的位数。通过该实施方式的实施,能够避免在将残差数据转化为无符号数据时产生数据冗余。
在一实施方式中,对预测残差进行无符号数处理后,得到编码块的残差图像,再对残差图像进行分层,并分别选取码流最短的编码方式对各层残差图像进行编码。其中,可以根据预测残差的像素位宽将残差图像分成N层,分别采用不同编码方式对各层残差图像进行预编码,得到码流长度。
其中,在对各层残差图像进行编码时,若该层残差图像的残差数据均是利用原始像素数据计算得到的,则对该层残差图像的所有残差数据进行编码,得到码流长度。因该层残差图像中不包括补位像素数据的残差,不需要对残差数据进行特殊处理,能够降低计算复杂度。
在一实施方式中,可以利用哈弗曼(Huffman)编码、行程编码、直接编码中的一种或多种编码方式对该层残差图像进行编码。
Huffman编码可通过查询码表得到编码数据,Huffman编码的码表为统计计算得到的最优码表K张,推荐K最大值为6,码长最大为5,最小为1。
行程编码是将输入数据编码成(连续0的个数,非零值)的形式,如0,2,7,0,0,0,5,0,0,将被编码成:(1,2),(0,7),(3,5),(1,0)。每个(连续0的个数,非零值)的形式的数据将被编码成一个或二个字节,当“连续0的个数”小于32时,使用一个字节,否则使用两个字节。
例1:(17,5)表示17个连续的0,紧邻0的数据为5。以五比特表示零的个数,三比特表示非零数,该数据被编码成一个字节数据:10001-101。
例2:(33,7)表示33个连续的0,紧邻0的数据为7。以五比特数据能表示的最大数是31,所以该数据被编码成两个字节:11111-000,00001-111。
直接编码为直接输出该层残差图像的残差数据。
若该层残差图像的残差数据部分是利用原始像素数据计算得到的、部分是利用补位像素数据计算得到的,则仅对利用原始像素数据计算得到的残差数据进行编码,得到码流长度。因补位数据的存在,如果直接对所有残差数据按照常规编码方式进行编码,可能会出现编码错误或数据冗余,如利用哈弗曼编码方式进行编码时,会影响码表的选择,经查询码表得到的码流数据中也会含较多冗余数据。
其中,可直接将该层残差图像的残差数据进行字节拼接,得到编码该层残差图像的码流长度。通过直接将残差数据进行字节拼接,能够在码流数据中剔除补位数据,因为补位数据得到的残差都是0,不会产生冗余数据,提高编码效率。
若该层残差图像的残差数据均是利用补位像素数据计算得到的,则不对该层残差图像的残差数据进行编码,码流长度为零。因为补位像素数据得到的残差都是0,所以无需编码,通过这种方式,能够减少数据冗余,提高编码效率。
对码流最短的编码数据进行封装,得到码流。
其中,若像素数据被拆分成了多个单元的像素子数据,在计算预测残差时也对应的将编码块分为多个处理单元,得到多个残差子图像,在对残差图像进行分层时,也分别对多个残差子图像进行分层。利用多种编码方式分别对各层残差子图像进行编码,得到码流长度,再将同一编码方式下同一层的多个残差子图像的码流长度相加,得到对该层残差图像进行编码时的总码流长度,选取总码流长度最短的编码方式对该层残差图像进行编码。
如果计算得到所有编码方式所得到的码流长度已经超过原始数据量,则直接封装原始编码块数据输出码流(例如,像素深度为14bit时,不编码的数据长度为32*14bit,比所有编码得到的码流长度都小,则直接按照bit拼接byte对齐,封装原始编码块数据输出码流)。
封装1~N层的头信息,头信息包括用于标识编码块是否编码的编码标志位、各层残差图像的码流长度和编码方式,但不包括第一像素数据,第一像素数据为编码块的第一行第一列像素的像素数据。
以上实施方式中,通过对原始像素数据进行处理,将其拆分成一个个的数据单元,再分别对每个单元的像素子数据进行残差计算和图像编码,能够使编码器可支持多种像素深度的图像数据的无损压缩,计算复杂度低,控制简单,模块完全可重用,不需要为不同像素深度的图像设计不同的压缩和解压缩模块,不需要增加硬件面积。同时通过将第一个像素数据从头信息中去除,能够减少码流的数据量,减少数据冗余,提升压缩效果。还解决了当处理不同像素深度的图像时,需要往头信息里面存储一个不同数据长度的码流造成码流格式不统一的问题。使多种像素深度的像素数据的无损压缩和解压能采用统一的内存格式,不需要制定不同的数据存储格式,不需要根据不同像素深度增加头信息的字节占用,不需要定义不同码流的存储格式,且可以方便扩展为其它像素深度和更高像素深度的图像的编码。
下面,将分别以处理像素深度为8bit、10bit、12bit、14bit、16bit的图像为例,对本申请所提供的图像编码方法进行详细说明,但不限于此,本申请所提供的图像编码方法还可用于处理其他像素深度的图像。
请参阅图3,图3是本申请实施方式中另一图像编码方法的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图3所示的流程顺序为限。如图3所示,本实施方式包括:
S210:将待处理图像划分为若干个编码块单元,并获取待处理图像的像素深度。
其中,当像素深度为8bit时,一个编码块单元中包括64个像素,当像素深度为10bit、12bit、14bit、16bit时,一个编码块单元中包括32个像素。
S220:判断像素深度是否为8。
该实施方式中,设定一个单元的像素子数据的位数为8bit。若待处理图像的像素深度为8,则不需要对编码块单元中的像素数据进行预处理,直接利用8bit的原始像素数据计算预测残差。若待处理图像的像素深度不是8,则执行步骤S221。
S221:判断像素深度是否为16。
若待处理图像的像素深度为16,则执行步骤S222,若待处理图像的像素深度不是16,则执行步骤S223。
S222:将像素数据进行拆分,得到两个单元的像素子数据。
当像素深度是16bit时,正好是8bit的两倍,可以将原始像素数据拆分成两个单元的像素子数据,即将16bit的像素数据拆分成两个8bit的像素子数据。其中,可以将16bit的原始像素数据拆分成高字节和低字节,得到8bit的高字节和8bit的低字节,即得到一个单元的高字节像素子数据和一个单元的低字节像素子数据。
S223:对像素数据进行低位补位直至像素子数据位数的正整数倍,再对补位后的像素数据进行拆分。
当像素深度为10bit、12bit、14bit时,不是8bit的正数倍,在进行数据单元划分时,不足够得到完整单元的像素子数据。需要先对像素数据进行补位,补位至16bit,再进行数据单元划分。
该实施方式中,可以对像素数据进行左移补位,即低位补零。补位的位数M=16-bpp,bpp表示原始像素深度,如10,12,14等。如当像素深度为10bit时,需要补6(16-10)位,当像素深度为12bit时,需要补4(16-12)位,当像素深度为14bit时,需要补2(16-14)位。补位后再将像素数据拆分成高低字节,得到高字节部分的像素子数据和低字节部分的像素子数据。
S230:计算编码块中像素的预测残差,得到编码块的残差图像。
其中,若像素数据被拆分成了多个单元的像素子数据,在计算预测残差时也对应的将编码块分为多个处理单元,每个处理单元中的像素包括一个单元的像素子数据,请参阅图4,图4是本申请实施方式中一像素数据的示意图。该实施方式中,16bit的原始像素数据被拆分成了两个8bit的像素子数据(高字节部分的像素子数据和低字节部分的像素子数据),对应的编码块会被分为两个处理单元(高字节部分的处理单元(H)和低字节部分的处理单元(L))。每个处理单元中包括编码块的所有像素,只是该处理单元中像素的像素数据只包括一个单元的像素子数据。如一个编码块中包括32个像素,那么高字节部分的处理单元中包括32个高字节部分的像素子数据,低字节部分的处理单元中包括32个低字节部分的像素子数据。在向编码器输入像素数据时,可以先对像素数据进行拆分,然后连续输入32个高字节部分的像素子数据,形成一个处理单元;再输入32个低字节部分的像素子数据,形成一个处理单元。
其中,根据编码器设备的处理能力,编码器可同时对一个或多个处理单元的数据进行处理。该实施方式中,编码器可同时对两个处理单元的数据进行处理。当像素深度为16bit时,一个编码块包括32个像素,分为两个处理单元,编码器一次可以处理一个像素的像素数据;当像素深度为8bit时,只有一个单元的像素数据,编码器一次可以处理两个像素的像素数据,即一个编码块可以包括64个像素。如图5所示,图5是本申请实施方式中另一像素数据的示意图。当处理像素深度为8bit的图像时,一次可输入两个8bit的原始像素数据。
分别计算每个处理单元中像素的预测残差。
请参阅图6,图6是本申请实施方式中一计算预测残差的示意图。当像素深度为8bit时,直接利用原始像素数据计算预测残差,将第一个像素数据减去0,得到第一个预测残差,从第二个像素开始,依次减去前一个像素,得到预测残差。第一个像素数据是编码块的第一行第一列像素的像素数据。
请参阅图7,图7是本申请实施方式中另一计算预测残差的示意图。当像素深度为16bit时,编码块被分成两个处理单元,分别计算高字节部分处理单元中像素的预测残差和低字节部分处理单元中像素的预测残差。高字节部分处理单元中,第一个高字节像素数据减去0,得到第一个高字节预测残差,从第二个像素开始,依次减去前一个像素,得到高字节预测残差。其中,第一个高字节像素数据是编码块的第一个像素的像素数据的高字节部分。同样地,低字节部分处理单元中,第一个低字节像素数据减去0,得到第一个低字节预测残差,从第二个像素开始,依次减去前一个像素,得到低字节预测残差。
当像素深度为10bit,12bit,14bit时,会将像素数据补位至16bit后再进行残差计算,具体处理过程与像素深度为16bit时相同,只是补位数据所得残差均为0。
S240:对预测残差进行无符号处理。
当像素深度为8bit时,像素数据中不包括补位数据,利用上文所述的公式(1)将预测残差映射为无符号数,得到无符号数的预测残差x_unsign。
当像素深度为16bit时,像素数据中也不包括补位数据,分别将高字节部分像素数据对应的高字节预测残差和低字节部分像素数据对应的低字节预测残差带入上文所述的公式(1),将预测残差映射为无符号数,得到无符号数的高字节预测残差H_unsign和无符号数的低字节预测残差L_unsign。
当像素深度为10bit,12bit,14bit时,高字节部分的像素数据中不包括补位数据,利用上文所述的公式(1)将预测残差映射为无符号数,得到无符号数的高字节预测残差H_unsign。低字节部分的像素数据中包括补位数据,则利用上文所述的公式(2)将预测残差映射为无符号数,得到无符号数的低字节预测残差L_unsign。
S250:对残差图像进行分层。
当像素深度为8bit时,会得到残差图像x_unsign,当像素深度为10bit,12bit,14bit,16bit时,会得到高字节部分的残差子图像H_unsign和低字节部分的残差子图像L_unsign。将残差图像x_unsign或者H_unsign或者L_unsign进行分层,根据残差数据位宽,可以将残差图像分为N层。该实施方式中,残差数据为9bit,可以将残差图像分为3层,每层有3bit的数据,下文中将用h3b,m3b,l3b分别表示高中低3层数据。
S260:分别采用不同编码方式对各层图像进行预编码,得到码流长度。
当像素深度为8bit时,各层残差图像的残差数据均是利用原始像素数据计算得到的,可以直接使用现有编码方式的编码规则对残差图像进行编码,得到码流长度。
如可使用Huffman编码方式分别对残差图像的h3b,m3b,l3b层进行编码,得到码流长度x_unsign_h3b_huffman_len(Byte)、x_unsign_m3b_huffman_len和x_unsign_l3b_huffman_len。
可使用行程编码方式分别对残差图像的h3b,m3b,l3b层进行编码,得到码流长度x_unsign_h3b_runlength_len、x_unsign_m3b_runlength_len和x_unsign_l3b_runlength_len。
可使用直接编码方式分别对残差图像的h3b,m3b,l3b层进行编码,即直接输出该层的3bit数据,码流长度均为64*3bit=24(Byte)。
当像素深度为16bit时,各层残差图像的残差数据均是利用原始像素数据计算得到的,可以直接使用现有编码方式的编码规则对残差图像进行编码,得到码流长度。
如可使用Huffman编码方式分别对高字节残差子图像和低字节残差子图像的h3b,m3b,l3b层图像进行编码,得到码流长度H_unsign_h3b_huffman_len、H_unsign_m3b_huffman_len、H_unsign_l3b_huffman_len和
L_unsign_h3b_huffman_len、L_unsign_m3b_huffman_len、L_unsign_l3b_huffman_len。
h3b层Huffman编码的总码流长度为:
H_unsign_h3b_huffman_len+L_unsign_h3b_huffman_len;
m3b层Huffman编码的总码流长度为:
H_unsign_m3b_huffman_len+L_unsign_m3b_huffman_len;
l3b层Huffman编码的总码流长度为:
H_unsign_l3b_huffman_len+L_unsign_l3b_huffman_len。
如可使用行程编码方式分别对高字节残差子图像和低字节残差子图像的h3b,m3b,l3b层图像进行编码,得到码流长度H_unsign_h3b_runlength_len、H_unsign_m3b_runlength_len、H_unsign_l3b_runlength_len和
L_unsign_h3b_runlength_len、L_unsign_m3b_runlength_len和
L_unsign_l3b_runlength_len。
h3b层行程编码的总码流长度为:
H_unsign_h3b_runlength_len+L_unsign_h3b_runlength_len;
m3b层行程编码的总码流长度为:
H_unsign_m3b_runlength_len+L_unsign_m3b_runlength_len;
l3b层行程编码的总码流长度为:
H_unsign_l3b_runlength_len+L_unsign_l3b_runlength_len。
可使用直接编码方式分别对高字节残差子图像和低字节残差子图像的h3b,m3b,l3b层进行编码,即直接输出该层的3bit数据,码流长度均为32*3bit=12(Byte),每层的总码流长度均为12+12=24(Byte)。
当像素深度为14bit时,高字节残差子图像h3b,m3b,l3b层的残差数据均是利用原始像素数据计算得到的,可以直接使用现有编码方式的编码规则对残差图像进行编码,得到码流长度。使用Huffman编码方式分别对高字节残差子图像的h3b,m3b,l3b层图像进行编码,得到码流长度H_unsign_h3b_huffman_len、H_unsign_m3b_huffman_len和H_unsign_l3b_huffman_len,使用行程编码方式分别对高字节残差子图像的h3b,m3b,l3b层图像进行编码,得到码流长度H_unsign_h3b_runlength_len、H_unsign_m3b_runlength_len和H_unsign_l3b_runlength_len,使用直接编码方式分别对高字节残差子图像的h3b,m3b,l3b层图像进行编码,得到码流长度均为32*3bit=12(Byte)。
低字节残差子图像h3b,m3b层的残差数据均是利用原始像素数据计算得到的,可以直接使用现有编码方式的编码规则对残差图像进行编码,得到码流长度。使用Huffman编码方式分别对低字节残差子图像的h3b,m3b层图像进行编码,得到码流长度L_unsign_h3b_huffman_len和L_unsign_m3b_huffman_len,使用行程编码方式分别对低字节残差子图像的h3b,m3b层图像进行编码,得到码流长度L_unsign_h3b_runlength_len和L_unsign_m3b_runlength_len,使用直接编码方式分别对低字节残差子图像的h3b,m3b层图像进行编码,得到码流长度均为32*3bit=12(Byte)。
低字节残差子图像l3b层的残差数据部分是利用原始像素数据计算得到的,部分是利用补位像素数据计算得到的,则仅对利用原始像素数据计算得到的残差数据进行编码,得到码流长度。具体地,不论采用哪种编码方式均是直接将低字节残差子图像l3b层的残差数据进行字节拼接,得到码流长度均为32*1bit=4(Byte)。
当像素深度为14bit时,h3b层Huffman编码的总码流长度为:
H_unsign_h3b_huffman_len+L_unsign_h3b_huffman_len;
m3b层Huffman编码的总码流长度为:
H_unsign_m3b_huffman_len+L_unsign_m3b_huffman_len;
l3b层Huffman编码的总码流长度为:
H_unsign_l3b_huffman_len+4(Byte)。
h3b层行程编码的总码流长度为:
H_unsign_h3b_runlength_len+L_unsign_h3b_runlength_len;
m3b层行程编码的总码流长度为:
H_unsign_m3b_runlength_len+L_unsign_m3b_runlength_len;
l3b层行程编码的总码流长度为H_unsign_l3b_runlength_len+4(Byte)。h3b层直接编码的总码流长度为32*3bit+32*3bit=24(Byte),m3b层直接编码的总码流长度为32*3bit+32*3bit=24(Byte),l3b层直接编码的总码流长度为32*3bit+32*1bit=16(Byte)。
当像素深度为12bit时,高字节残差子图像h3b,m3b,l3b层的残差数据均是利用原始像素数据计算得到的,可以直接使用现有编码方式的编码规则对残差图像进行编码,得到码流长度。使用Huffman编码方式分别对高字节残差子图像的h3b,m3b,l3b层图像进行编码,得到码流长度H_unsign_h3b_huffman_len、H_unsign_m3b_huffman_len和H_unsign_l3b_huffman_len,使用行程编码方式分别对高字节残差子图像的h3b,m3b,l3b层图像进行编码,得到码流长度H_unsign_h3b_runlength_len、H_unsign_m3b_runlength_len和H_unsign_l3b_runlength_len,使用直接编码方式分别对高字节残差子图像的h3b,m3b,l3b层图像进行编码,得到码流长度均为32*3bit=12(Byte)。
低字节残差子图像h3b层的残差数据是利用原始像素数据计算得到的,可以直接使用现有编码方式的编码规则对残差图像进行编码,得到码流长度。使用Huffman编码方式对低字节残差子图像的h3b层图像进行编码,得到码流长度L_unsign_h3b_huffman_len,使用行程编码方式对低字节残差子图像的h3b层图像进行编码,得到码流长度L_unsign_h3b_runlength_len,使用直接编码方式对低字节残差子图像的h3b层图像进行编码,得到码流长度均为32*3bit=12(Byte)。
低字节残差子图像m3b层的残差数据部分是利用原始像素数据计算得到的,部分是利用补位像素数据计算得到的,则仅对利用原始像素数据计算得到的残差数据进行编码,得到码流长度。具体地,不论采用哪种编码方式均直接将低字节残差子图像m3b层的残差数据进行字节拼接,得到码流长度均为32*2bit=8(Byte)。
低字节残差子图像l3b层的残差数据是均是利用补位像素数据计算得到的,不论采用哪种编码方式下均不对该层残差图像进行编码,码流长度为零。
当像素深度为12bit时,h3b层Huffman编码的总码流长度为:
H_unsign_h3b_huffman_len+L_unsign_h3b_huffman_len;
m3b层Huffman编码的总码流长度为:
H_unsign_m3b_huffman_len+8(Byte);
l3b层Huffman编码的总码流长度为H_unsign_l3b_huffman_len+0。
h3b层行程编码的总码流长度为:
H_unsign_h3b_runlength_len+L_unsign_h3b_runlength_len;
m3b层行程编码的总码流长度为H_unsign_m3b_runlength_len+8(Byte);l3b层行程编码的总码流长度为H_unsign_l3b_runlength_len+0。
h3b层直接编码的总码流长度为32*3bit+32*3bit=24(Byte),m3b层直接编码的总码流长度为32*3bit+32*2bit=20(Byte),l3b层直接编码的总码流长度为32*3bit+0=12(Byte)。
当像素深度为10bit时,高字节残差子图像h3b,m3b,l3b层的残差数据均是利用原始像素数据计算得到的,可以直接使用现有编码方式的编码规则对残差图像进行编码,得到码流长度。使用Huffman编码方式分别对高字节残差子图像的h3b,m3b,l3b层图像进行编码,得到码流长度H_unsign_h3b_huffman_len、H_unsign_m3b_huffman_len和H_unsign_l3b_huffman_len,使用行程编码方式分别对高字节残差子图像的h3b,m3b,l3b层图像进行编码,得到码流长度H_unsign_h3b_runlength_len、H_unsign_m3b_runlength_len和H_unsign_l3b_runlength_len,使用直接编码方式分别对高字节残差子图像的h3b,m3b,l3b层图像进行编码,得到码流长度均为32*3bit=12(Byte)。
低字节残差子图像h3b层的残差数据是利用原始像素数据计算得到的,可以直接使用现有编码方式的编码规则对残差图像进行编码,得到码流长度。使用Huffman编码方式对低字节残差子图像的h3b层图像进行编码,得到码流长度L_unsign_h3b_huffman_len,使用行程编码方式对低字节残差子图像的h3b层图像进行编码,得到码流长度L_unsign_h3b_runlength_len,使用直接编码方式对低字节残差子图像的h3b层图像进行编码,得到码流长度均为32*3bit=12(Byte)。
低字节残差子图像m3b,l3b层的残差数据是均是利用补位像素数据计算得到的,不论采用哪种编码方式下均不对该层残差图像进行编码,码流长度为零。
当像素深度为10bit时,h3b层Huffman编码的总码流长度为H_unsign_h3b_huffman_len+L_unsign_h3b_huffman_len,m3b层Huffman编码的总码流长度为H_unsign_m3b_huffman_len+0,l3b层Huffman编码的总码流长度为H_unsign_l3b_huffman_len+0。h3b层行程编码的总码流长度为H_unsign_h3b_runlength_len+L_unsign_h3b_runlength_len,m3b层行程编码的总码流长度为H_unsign_m3b_runlength_len+0,l3b层行程编码的总码流长度为H_unsign_l3b_runlength_len+0。h3b层直接编码的总码流长度为32*3bit+32*3bit=24(Byte),m3b层直接编码的总码流长度为32*3bit+0=12(Byte),l3b层直接编码的总码流长度为32*3bit+0=12(Byte)。
S270:判断是否需要对编码块单元的图像进行编码。
如果计算得到所有编码方式所得到的码流长度均已经超过原始数据量,则直接封装原始单元块数据输出码流。如果需要对编码块单元的图像进行编码,则执行步骤S271。
S271:依次遍历N层残差图像,选用码流最短的编码方式对编码块单元的图像进行编码,得到码流数据。
S280:封装各层的头信息,输出码流。
请参阅图8,图8是本申请实施方式中码流数据的示意图。其中,编码指示位(0:编码块单元编码;1:编码块单元不编码);h3b层编码方式说明(0:huffman编码,使用码表0;1:huffman编码,使用码表1;2:行程编码;3:不编码);m3b,l3b层编码方式说明(0~5对应huffman编码,使用码表0~5;6:行程编码;7:不编码)。
该实施方式中,头信息中包括用于标识编码块是否编码的编码标志位、各层残差图像的码流长度和编码方式,但头信息中不包括第一像素数据,第一像素数据为编码块的第一行第一列像素的像素数据。使得对于不同的像素位深度,头信息的字节占用数量和格式可以保持统一,便于硬件实现统一,编码解码统一。
封装所得码流数据可经网络传输至解码设备,解码设备接收到码流后对码流数据进行解码,解码是编码的反过程。请参阅图9,图9是本申请实施方式中一图像解码方法的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图9所示的流程顺序为限。如图9所示,本实施方式包括:
S310:获取码流数据。
其中,该码流数据可以是利用上述任一实施方式所述的图像编码方法编码所得,具体请参阅上述实施方式的描述,在此不再赘述。
S320:解析码流的头信息,获取各层码流的码流长度和编码方式。
其中,若码流头信息显示当前编码块没有编码,则根据不同的像素深度,直接从码流中取出相应位数(bit)的数据,作为数据输出,否则执行步骤S330。
S330:按照对应的编码方式依次在码流中解码出残差图像,还原出原始图像。
在一实施方式中,可按照各层头信息指示,进行Huffman解码、行程解码、或数据直接复制。
Huffman解码实现时推荐但不限于并行查表法,从输入的码流中,从当前的译码位置上同时取可能所有长度的码流进行查表,从中取唯一一个当前码表中匹配上的长度解码结果作为解码输出,同时更新译码位置。请参阅图10,图10是本申请实施方式中Huffman解码的示意图。对于输入码流00111011110,第一次解码,译码位置为0,则同时取0,10,110,1110,11110进行Huffman查表,0可匹配,其它几种长度无法匹配,取0的查表结果,译码位置加1;第二次解码,同时取1,11,111,1111,01111,进行Huffman查表,只有01111可匹配,取其查表结果,译码位置加5。
行程解码对码流进行译码时,分别分析输入码流字节的高5位及低3位:若低3位非零,则高5位为连续的0个数,低3位为之后出现的非零值;若低3位为0,则当前字节可解出高5位所表示值的连续零个数。如若输入两个字节为11111-000,00001-111,则第一个字节可解出31个0;第二个字节解出一个0,及之后紧跟的数据7。
数据直接复制是指根据不同的像素深度,直接从码流中取出相应位数(bit)的数据,作为该层解码输出。
请参阅图11,图11是本申请实施方式中另一图像解码方法的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图11所示的流程顺序为限。如图11所示,按照对应的编码方式依次在码流中解码出残差图像,还原出原始图像包括:
S331:按照对应的编码方式依次在码流中解码出各层残差图像的残差数据。
其中,若解码出的残差数据的位数小于该层残差图像数据的位数,则将解码出的残差数据补位至与该层残差图像数据的位数相同。
如当像素深度为14bit时,可解码出三层的高字节部分残差子图像H_unsign和低字节部分残差子图像L_unsign,每层残差子图像包括3bit的数据。但是解码出的L_unsign的l3b层图像只有1bit的残差数据,需要对每个残差数据进行补位,可以在低位补2’b0,然后作为该层的解码输出。
如当像素深度为14bit时,可解码出三层的高字节部分残差子图像H_unsign和低字节部分残差子图像L_unsign,每层残差子图像包括3bit的数据。但是码流中不包括L_unsign的l3b层图像的数据,可以对该层图像进行不真实解码,直接取3’b0作为解码输出。
S332:根据层图像的排列顺序,将各层残差图像的残差数据进行组装,得到无符号数的残差数据。
若解码出的残差数据包括多个单元的残差子数据,则分别对各个单元的残差子数据进行组装,得到各个单元的残差子图像。
S333:将无符号数的残差数据转换成有符号的残差数据。
其中,当解码出的残差数据不包括补位数据时,可利用公式(3)将无符号数的残差数据映射为有符号的残差数据:
Figure BDA0002645023210000141
其中,x是指解码出的无符号数残差数据,x_resi是指有符号的残差数据。
当解码出的残差数据包括补位数据时,可利用公式(4)将无符号数的残差数据映射为有符号的残差数据:
Figure BDA0002645023210000142
其中,x是指解码出的无符号数残差数据,x_resi是指有符号的残差数据,<<表示左移(低位补位),>>表示右移(高位补位),M为像素数据中包含的补位数据的位数。
S334:对有符号的残差数据进行重构,得出原始像素数据。
请参阅图12,图12是本申请实施方式中残差重构的示意图。该实施方式中,将第一个残差数据加上0得到第一个原始像素数据(D0),即第一个残差数据即为第一个像素数据,从第2个像素开始,依次将残差加上前一个像素的原始数据得到各个像素的原始数据。
若解码出的残差数据包括多个单元的残差子数据,则分别对各个单元的残差子数据进行重构,得到多个单元的像素子数据;再根据像素数据的组装规则,将多个单元的像素子数据进行重新组装,得到原始像素数据,像素数据的组装规则与原始像素数据的拆分规则相对应。
如在编码时,是将原始像素数据进行了高低字节拆分,则进行数据重组装时,将高字节部分的像素子数据(H)与低字节部分的像素子数据(L)进行数据拼接,得到原始数据。
其中,data_dec=(H*28+L)/2^M。
该实施方式中,可以使解码器能够支持解码多种像素深度的图像的编码数据。
下面,将分别以解码像素深度为8bit、10bit、12bit、14bit、16bit的图像为例,对本申请所提供的图像解码方法进行详细说明,但不限于此,本申请所提供的图像解码方法还可用于处理其他像素深度的图像。
请参阅图13-16,图13是本申请实施方式中又一图像解码方法的流程示意图,图14是本申请实施方式中再一图像解码方法的流程示意图,图15是本申请实施方式中再另一图像解码方法的流程示意图,图16是本申请实施方式中再又一图像解码方法的流程示意图。
当像素深度为8bit时,在编码时各层残差图像的残差数据均是利用原始像素数据计算得到的,可按照图13所示的流程图进行解码。
当像素深度为16bit时候,在编码时将编码块分成了两个处理单元H_unsign和L_unsign,两个处理单元H_unsign和L_unsign中各层残差图像的残差数据均是利用原始像素数据计算得到的,因此,当像素深度为16bit时候,H_unsign单元和L_unsign单元均可按照图13所示的流程图进行解码。
当像素深度为14bit时候,在编码时将编码块分成了两个处理单元H_unsign和L_unsign,处理单元H_unsign中各层残差图像的残差数据均是利用原始像素数据计算得到的,因此,当像素深度为14bit时候,H_unsign单元部分可按照图13所示的流程图进行解码。而处理单元L_unsign中部分残差数据是利用补位像素数据计算得到的,需要对解码出的残差数据进行补位,因此L_unsign单元部分可按照图14所示的流程图进行解码。
当像素深度为12bit时候,在编码时将编码块分成了两个处理单元H_unsign和L_unsign,处理单元H_unsign中各层残差图像的残差数据均是利用原始像素数据计算得到的,因此,当像素深度为12bit时候,H_unsign单元部分可按照图13所示的流程图进行解码。而处理单元L_unsign中部分残差数据是利用补位像素数据计算得到的,需要对解码出的残差数据进行补位,因此L_unsign单元部分可按照图15所示的流程图进行解码。
当像素深度为10bit时候,在编码时将编码块分成了两个处理单元H_unsign和L_unsign,处理单元H_unsign中各层残差图像的残差数据均是利用原始像素数据计算得到的,因此,当像素深度为10bit时候,H_unsign单元部分可按照图13所示的流程图进行解码。而处理单元L_unsign中部分残差数据是利用补位像素数据计算得到的,需要对解码出的残差数据进行补位,因此L_unsign单元部分可按照图16所示的流程图进行解码。
请参阅图17,图17是本申请实施方式中一编码器的结构示意图。该实施方式中,编码器10包括处理器11。
处理器11还可以称为CPU(Central Processing Unit,中央处理单元)。处理器11可能是一种集成电路芯片,具有信号的处理能力。处理器11还可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器11也可以是任何常规的处理器等。
编码器10可以进一步包括存储器(图中未示出),用于存储处理器11运行所需的指令和数据。
处理器11用于执行指令以实现上述本申请图像编码方法任一实施例及任意不冲突的组合所提供的方法。
请参阅图18,图18是本申请实施方式中另一编码器的结构示意图。该实施方式中,编码器包括编码控制器110、编码方式计算模块111、第一数据缓存模块112、最优编码模块113、码流处理模块114、第二数据缓存模块115和封装模块116。
在进行图像编码时,将像素数据输入到编码控制器110,编码控制器110控制整个装置的流水操作和交互。
编码控制器110从数据输入端获取指定的像素数据,像素数据输入后,编码方式计算模块111对像素数据进行码流长度计算,通过各编码方式计算出N层图像的各自的最优编码方式、编码长度,以及是否要对编码块进行编码的判断,并将这些信息传给最优编码模块113,同时编码控制器110把像素数据缓存到第一数据缓存模块112中。
最优编码模块113得到编码块单元的是否编码判断以及N层图像的最优编码方式后,从第一数据缓存模块112中取出像素数据进行编码。并码流输出至码流处理模块114,其中码流处理模块114包括码流拼接单元和码流头信息单元,分别将N层图像的码流输出到码流拼接单元,并将码流头信息传输给码流头信息单元。
对码流进行处理之后,将码流输入到第二数据缓存模块115,第二数据缓存模块115中包括多个码流缓存单元和码流头信息缓存单元。具体地,将1~N层的码流拼接完成并进行字节对齐操作后,将各自的码流分别放到数据缓存模块115中的码流缓存单元1~N中,将码流头信息输入到数据缓存模块115中的码流头信息缓存单元。
封装模块116从码流缓存单元和码流头信息缓存单元中,先取出码流头信息,再顺序依次取出码流进行封装输出,输出最终码流。
请参阅图19,图19是本申请实施方式中一解码器的结构示意图。该实施方式中,解码器20包括处理器21。
处理器21还可以称为CPU(Central Processing Unit,中央处理单元)。处理器21可能是一种集成电路芯片,具有信号的处理能力。处理器11还可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器21也可以是任何常规的处理器等。
解码器20可以进一步包括存储器(图中未示出),用于存储处理器21运行所需的指令和数据。
处理器21用于执行指令以实现上述本申请图像解码方法任一实施例及任意不冲突的组合所提供的方法。
请参阅图20,图20是本申请实施方式中另一解码器的结构示意图。该实施方式中,解码器包括解码控制器210、码流头解析模块211、码流缓存模块212、解码核心模块213、残差组装/数据重构模块214和原始数据计算模块215。
在进行图像解码时,将码流数据输入到解码控制器210,解码控制器210控制整个装置的流水操作和交互,在解码控制器210的控制下,解码装置进行码流的读取及解析,获取各层码流的长度、及编码方式等。
解码控制器210根据各层码流缓存的状态,控制码流头解析模块211从码流中剥离码流头信息,并按要求将各层码流重新进行组织,存放进码流缓存模块212,码流缓存模块212包括多个码流缓存单元,分别将各层码流放进各层码流缓存单元中。
解码控制器210同时根据各层码流缓存的状态,启动解码核心模块213,并给出各层解码所需解码方式。解码核心模块213包括多个解码核心单元,分别利用各层解码核心单元依据各层解码所需解码方式对各层码流进行解码,如进行huffman解码、行程解码、直接解码等。
各层解码输出同步输出给残差组装/数据重构模块214,在解码控制器210的控制下,残差组装/数据重构模块214完成各bit深度模式下数据的重构。
原始数据计算模块215按各bit深度模式的要求,对重构的数据进行H_unsign与L_unsign数据的拼接、移位,得到最终的译码结果。
请参阅图21,图21为本申请一实施方式中计算机可读存储介质的结构示意图。本申请实施例的计算机可读存储介质30存储有指令/程序数据31,该指令/程序数据31被执行时实现本申请编解码方法任一实施例以及任意不冲突的组合所提供的方法。其中,该指令/程序数据31可以形成程序文件以软件产品的形式存储在上述存储介质30中,以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。而前述的存储介质30包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质,或者是计算机、服务器、手机、平板等终端设备。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

Claims (20)

1.一种图像编码方法,其特征在于,包括:
将待处理图像划分成若干个编码块,并获取所述待处理图像的像素深度;
对所述编码块中的像素数据进行预处理,处理后的像素数据被拆分成多个单元的像素子数据,每个单元的像素子数据包括预设位数的二进制数;
计算所述编码块中像素的预测残差,得到所述编码块的残差图像;
选取码流最短的编码方式对所述残差图像进行编码。
2.根据权利要求1所述的图像编码方法,其特征在于,
所述对编码块中的像素数据进行预处理,处理后的像素数据被拆分成多个单元的像素子数据包括:
若所述像素深度是像素子数据位数的正整数倍,则直接对所述像素数据进行拆分,得到多个单元的像素子数据;
若所述像素深度不是像素子数据位数的正整数倍,则先将所述像素数据补位至像素子数据位数的正整数倍,再对补位后的像素数据进行拆分,得到多个单元的像素子数据。
3.根据权利要求2所述的图像编码方法,其特征在于,
所述对像素数据进行拆分,得到多个单元的像素子数据包括:
对所述像素数据进行字节拆分,按照字节位地址的高低顺序进行数据单元的划分,得到多个单元的像素子数据。
4.根据权利要求2所述的图像编码方法,其特征在于,
所述将像素数据补位至像素子数据位数的正整数倍包括:
对所述像素数据进行低位补零,直至所述像素数据的位数是所述像素子数据位数的正整数倍。
5.根据权利要求1所述的图像编码方法,其特征在于,
所述计算编码块中像素的预测残差,得到所述编码块的残差图像包括:
将所述编码块中的第一个像素数据/第一个像素子数据减去零,得到第一个预测残差/第一个预测子残差,所述编码块中的第一个像素数据是指所述编码块的第一行第一列像素的像素数据。
6.根据权利要求1所述的图像编码方法,其特征在于,
所述计算编码块中像素的预测残差,得到所述编码块的残差图像包括:
若所述像素数据被拆分成了多个单元的像素子数据,则对应的将所述编码块的像素数据分为多个处理单元,每个处理单元中的像素包括一个单元的像素子数据,分别计算每个处理单元中像素的预测残差,得到多个残差子图像。
7.根据权利要求6所述的图像编码方法,其特征在于,
所述选取码流最短的编码方式对所述残差图像进行编码包括:
对所述残差子图像进行分层,利用多种编码方式分别对各层所述残差子图像进行编码,得到码流长度;
将同一编码方式下同一层的多个残差子图像的码流长度相加,得到对该层残差图像进行编码时的总码流长度,选取总码流长度最短的编码方式对该层残差图像进行编码。
8.根据权利要求1所述的图像编码方法,其特征在于,
所述选取码流最短的编码方式对所述残差图像进行编码包括:
对残差图像进行分层,并分别选取码流最短的编码方式对各层所述残差图像进行编码;其中,
若该层残差图像的残差数据均是利用原始像素数据计算得到的,则对该层残差图像的所有残差数据进行编码,得到码流长度;
若该层残差图像的残差数据部分是利用原始像素数据计算得到的、部分是利用补位像素数据计算得到的,则仅对利用原始像素数据计算得到的残差数据进行编码,得到码流长度;
若该层残差图像的残差数据均是利用补位像素数据计算得到的,则不对该层残差图像的残差数据进行编码,码流长度为零。
9.根据权利要求8所述的图像编码方法,其特征在于,
所述若该层残差图像的残差数据部分是利用原始像素数据计算得到、部分是利用补位像素数据计算得到,则仅对利用原始像素数据计算得到的残差数据进行编码包括:
直接将该层残差图像的残差数据进行字节拼接,得到编码该层残差图像的码流长度。
10.根据权利要求8所述的图像编码方法,其特征在于,
所述若该层残差图像的残差数据均是利用原始像素数据计算得到,则对该层残差图像的所有残差数据进行编码,得到码流长度包括:
利用哈弗曼编码、行程编码、直接编码中的一种或多种编码方式分别对该层残差图像的所有残差数据进行编码,得到码流长度。
11.根据权利要求1所述的图像编码方法,其特征在于,
所述计算编码块中像素的预测残差之后还包括:
对所述预测残差进行无符号处理;
其中,若所述预测残差小于0,且编码块的像素数据中包括第一方位的补位数据,则将所述预测残差进行第二方位补位后取正再乘以2减去1得到初始无符号数预测残差,将所述初始无符号数预测残差进行第一方位补位后得到所述预测残差的无符号数预测残差;所述第二方位与所述第一方位的方向相反,所述预测残差补位的位数和所述初始无符号数预测残差补位的位数均等于所述像素数据补位的位数,所述第一方位为高位/低位。
12.根据权利要求1所述的图像编码方法,其特征在于,
将用于标识所述编码块是否编码的编码标志位、各层残差图像的码流长度和编码方式封装在所述编码块码流的头信息中,所述头信息中不包括第一像素数据,所述第一像素数据是所述编码块的第一行第一列像素的像素数据。
13.一种图像解码方法,其特征在于,包括:
获取码流数据,所述码流数据是对编码块中的像素数据进行预处理后编码得到的,其中,预处理后的像素数据被拆分成多个单元的像素子数据,每个单元的像素子数据包括预设位数的二进制数;
解析所述码流的头信息,获取各层码流的码流长度和编码方式;
按照对应的编码方式依次在所述码流中解码出残差图像,还原出原始图像。
14.根据权利要求13所述的图像解码方法,其特征在于,
所述按照对应的编码方式依次在所述码流中解码出残差图像,还原出原始图像包括:
若解码出的残差数据包括多个单元的残差子数据,则分别对各个单元的残差子数据进行重构,得到多个单元的像素子数据;
根据像素数据的组装规则,将多个单元的像素子数据进行组装,得到原始像素数据,像素数据的组装规则与原始像素数据的拆分规则相对应。
15.根据权利要求13所述的图像解码方法,其特征在于,
所述按照对应的编码方式依次在所述码流中解码出残差图像包括:
若解码出的残差数据的位数小于该层残差图像数据的位数,则将解码出的残差数据补位至与该层残差图像数据的位数相同。
16.根据权利要求13所述的图像解码方法,其特征在于,
所述按照对应的编码方式依次在所述码流中解码出残差图像,还原出原始图像包括:
对解码出的残差数据进行重构,得到原始像素数据;
其中,第一个原始像素数据与第一个残差数据相同,第一个原始像素数据是编码块中第一个像素的像素数据,第一个像素是指所述编码块的第一行第一列的像素。
17.根据权利要求13所述的图像解码方法,其特征在于,
所述按照对应的编码方式依次在所述码流中解码出残差图像包括:
将解码出的无符号数残差数据转换为有符号的残差数据;
其中,若解码出的残差数据包括补位数据,且第一方位补位后的无符号数残差数据为偶数,则将无符号数的残差数据除以2得到有符号的残差数据;
若解码出的残差数据包括补位数据,且第一方位补位后的无符号数残差数据为奇数,则将1进行第二方位补位后与无符号数残差数据相加再除以2取负数得到有符号的残差数据,所述第二方位与所述第一方位的方向相反,所述无符号数残差数据补位的位数和1补位的位数均等于所述残差数据中补位数据的位数,所述第一方位为高位/低位。
18.一种编码器,其特征在于,所述编码器包括处理器,所述处理器用于执行指令以实现如权利要求1-12中任一项所述的图像编码方法。
19.一种解码器,其特征在于,所述解码器包括处理器,所述处理器用于执行指令以实现如权利要求13-17中任一项所述的图像解码方法。
20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储指令/程序数据,所述指令/程序数据能够被执行以实现如权利要求1-17中任一项所述的方法。
CN202010851937.5A 2020-08-21 2020-08-21 一种图像编解码方法及编解码器 Pending CN112055223A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010851937.5A CN112055223A (zh) 2020-08-21 2020-08-21 一种图像编解码方法及编解码器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010851937.5A CN112055223A (zh) 2020-08-21 2020-08-21 一种图像编解码方法及编解码器

Publications (1)

Publication Number Publication Date
CN112055223A true CN112055223A (zh) 2020-12-08

Family

ID=73601020

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010851937.5A Pending CN112055223A (zh) 2020-08-21 2020-08-21 一种图像编解码方法及编解码器

Country Status (1)

Country Link
CN (1) CN112055223A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113727105A (zh) * 2021-09-08 2021-11-30 北京医百科技有限公司 一种深度图压缩方法、装置、系统及存储介质
CN115883745A (zh) * 2022-11-18 2023-03-31 奥比中光科技集团股份有限公司 图像传输方法、图像数据解析方法及相关装置

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102065293A (zh) * 2010-11-23 2011-05-18 无锡港湾网络科技有限公司 一种基于空间域预测编码的图像压缩方法
CN103618898A (zh) * 2013-12-09 2014-03-05 中国计量学院 一种支持随机访问的复杂度图像无损压缩方法
CN105472388A (zh) * 2015-12-08 2016-04-06 浙江大华技术股份有限公司 一种颜色滤波阵列图像的编解码方法、装置和系统
CN106412579A (zh) * 2015-07-30 2017-02-15 浙江大华技术股份有限公司 一种图像的编码、解码方法和装置
US20170244980A1 (en) * 2016-02-18 2017-08-24 Mathieu Monnier Method for Processing High Dynamic Range Video in Order to Improve Perceived Visual Quality of Encoded Content
CN108960333A (zh) * 2018-07-12 2018-12-07 西安电子科技大学 基于深度学习的高光谱图像无损压缩方法
CN109379598A (zh) * 2018-09-12 2019-02-22 合肥埃科光电科技有限公司 一种基于fpga实现的图像无损压缩方法
CN109547784A (zh) * 2017-09-21 2019-03-29 华为技术有限公司 一种编码、解码方法及装置
CN111093081A (zh) * 2019-12-20 2020-05-01 合肥埃科光电科技有限公司 一种图像无损压缩方法及系统

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102065293A (zh) * 2010-11-23 2011-05-18 无锡港湾网络科技有限公司 一种基于空间域预测编码的图像压缩方法
CN103618898A (zh) * 2013-12-09 2014-03-05 中国计量学院 一种支持随机访问的复杂度图像无损压缩方法
CN106412579A (zh) * 2015-07-30 2017-02-15 浙江大华技术股份有限公司 一种图像的编码、解码方法和装置
CN105472388A (zh) * 2015-12-08 2016-04-06 浙江大华技术股份有限公司 一种颜色滤波阵列图像的编解码方法、装置和系统
US20170244980A1 (en) * 2016-02-18 2017-08-24 Mathieu Monnier Method for Processing High Dynamic Range Video in Order to Improve Perceived Visual Quality of Encoded Content
CN109547784A (zh) * 2017-09-21 2019-03-29 华为技术有限公司 一种编码、解码方法及装置
CN108960333A (zh) * 2018-07-12 2018-12-07 西安电子科技大学 基于深度学习的高光谱图像无损压缩方法
CN109379598A (zh) * 2018-09-12 2019-02-22 合肥埃科光电科技有限公司 一种基于fpga实现的图像无损压缩方法
CN111093081A (zh) * 2019-12-20 2020-05-01 合肥埃科光电科技有限公司 一种图像无损压缩方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
俞春强;侯晓杰;张显全;唐振军;陈艳;邓方舟;: "基于编码压缩和加密的图像可逆信息隐藏算法", 光电子・激光, no. 08, 15 August 2018 (2018-08-15) *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113727105A (zh) * 2021-09-08 2021-11-30 北京医百科技有限公司 一种深度图压缩方法、装置、系统及存储介质
CN113727105B (zh) * 2021-09-08 2022-04-26 北京医百科技有限公司 一种深度图压缩方法、装置、系统及存储介质
CN115883745A (zh) * 2022-11-18 2023-03-31 奥比中光科技集团股份有限公司 图像传输方法、图像数据解析方法及相关装置

Similar Documents

Publication Publication Date Title
RU2682009C2 (ru) Способ и устройство для кодирования и декодирования исходных данных с использованием сжатия символов
RU2417518C2 (ru) Эффективное кодирование и декодирование блоков преобразования
US8711019B1 (en) Context-based adaptive binary arithmetic coding engine
RU2565877C2 (ru) Способ и устройство для определения соответствия между синтаксическим элементом и кодовым словом для кодирования переменной длины
US8285062B2 (en) Method for improving the performance of embedded graphics coding
WO2012159301A1 (zh) 一种视频熵编码、熵解码方法、装置及介质
TW201408073A (zh) 用於在視訊寫碼中之參考索引寫碼的旁路位元子
JP2007116436A (ja) 符号化装置及び復号化装置
EP3172897B1 (en) Encoder, decoder and method
CN1726644B (zh) 用于产生压缩数据的多种描述的设备和方法
CN113228668A (zh) 用于信号增强编码的熵编码
US8824812B2 (en) Method and apparatus for data compression using error plane coding
CN107040780B (zh) 在图像压缩中的熵编码的方法与装置
CN112055223A (zh) 一种图像编解码方法及编解码器
CN112399181A (zh) 图像编解码的方法、装置和芯片
AU2018298758A1 (en) Method and device for digital data compression
TW202013969A (zh) 在顯示介面壓縮技術中形成熵編碼組的方法和系統
US20140092995A1 (en) Electronic devices for signaling a random access point picture message
US20230326087A1 (en) Systems and methods for scalable throughput entropy coders
KR20060038189A (ko) 컨텍스트 기반 적응형 이진 산술 복부호화 방법 및 장치
EP1333679B1 (en) Data compression
TWI382766B (zh) 一種用於超高解析度之顯示框壓縮系統及方法
CN115150628B (zh) 具有超先验引导模式预测的由粗到细深度视频编码方法
CN112204971A (zh) 视频图像编码方法、设备及可移动平台
CN113453002B (zh) 量化与熵编码方法及装置

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