Jpeg编码和解码方法及系统的制作方法

文档序号:7868045阅读:230来源:国知局
专利名称:Jpeg编码和解码方法及系统的制作方法
技术领域
本发明涉及一种支持随机位置解码的JPEG编码和解码方法及系统。
背景技术
目前使用广泛的JPEGbaseline编码和解码都是通过把图像划分成最小编码单元(MCU, Minimum Coding Unit),然后按照光栅扫描(Raster Scan)的顺序,对每一个编码单元进行一系列的DCT变换,量化,熵编码。
如图I所示,JPEG标准编码器压缩编码算法的主要编码流程如下(1)8*8 分块。(2)正向离散余弦变换(FDCT)。(3)量化(quantization)。(4) z 字扫描(zigzag scan)。(5)熵编码(Entropy Coding),其中使用差分脉冲编码调制(DPCM)对直流系数(DC)进行编码,并使用行程长度编码(RLC)对交流系数(AC)进行编码。由于在编码的过程中,利用了数据的相关性,包括对DC(直流)系数的差分脉冲编码(DPCM, Differential Pulse-code Modulation)。对 JPEG 编码的大尺寸文件来说,这种编码方式下,即使只需显示图像中的一小部分(R0I,Regionof Interest),也必须从标准JPEG文件的码流的起点开始解码,即无法只对图像的任意位置进行解码,另外,为了使平移显示的速度加快,需要整个图像尺寸的显示缓存。如图2所示,JPEG标准解码器的主要解码算法流程如下(I)熵解码(Entropy Decoding),其中,使用可变长解码(RLD)对交流系数(AC)进行解码,对差分脉冲编码调制(DPCM)的直流系数(DC)进行解码。(2)反量化(inverse quantization)。(3)反 z 字扫描(inverse zigzag scan)。(4)反向离散余弦变换(IDCT)。(5)8*8分块数据重组为图像。为了实现对图像的任意位置进行解码,业界现有的解决方案大致有两种,一种是标准JPEG编码支持插入Restart字节,但仍需扫描标准JPEG文件的整个压缩数据,以确定每个MCU在压缩文件中所对应字节的位置中;另一种是编码器在编码过程中在MCU之间加入分隔符,但仍需要扫描标准JPEG文件的整个压缩数据确定分隔符所对应的MCU在压缩文件中的位置,而且还需要对每一个DC系数进行差分脉冲解码,这同样增加了很多计算量,而且所有DC系数的存储也需要开辟额外的存储空间。

发明内容
本发明的目的在于提供一种JPEG编码和解码方法及系统,能够快速定位到所需解码的图像区域的相应的MCU的位置,无需扫描特殊JPEG文件的整个特殊压缩数据,并对每一个MCU进行独立的解码,支持随机位置解码即实现只对图像的部分位置进行解码。为解决上述问题,本发明提供一种支持随机位置解码的JPEG编码方法,包括将图像按照8*8像素块的大小进行分块,再按照输入图像的格式将所述图像分割成若干个最小编码单元,每个最小编码单元包括固定个数的8*8像素块;对图像中的所有最小编码单元,按照所述光栅扫描的顺序作如下处理对每个最小编码单元中的每一个8*8像素块进行正向离散余弦变换以获取离散余弦变换系数;对所述离散余弦变换系数按照量化表进行量化以获取量化的离散余弦变换系数;对所述量化的离散余弦变换系数进行Z字扫描以获取从低频到高频排序的离散余 弦变换系数;对所述从低频到高频排序的离散余弦变换系数进行熵编码以获取对应的二进制码流,其中,使用行程长度编码对所述从低频到高频排序的离散余弦变换系数中的交流系数进行编码,对所述从低频到高频排序的离散余弦变换系数中的直流系数不作差分脉冲编码;将所有最小编码单元的对应的二进制码流采用填充方式作字节对齐以获取每个最小编码单元的字节对齐的二进制码流;根据所有的最小编码单元的字节对齐的二进制码流生成一特殊JPEG文件的特殊压缩数据;按照所述光栅扫描的顺序建立记录所述每个最小编码单元的字节对齐的二进制码流在所述特殊JPEG文件的特殊压缩数据中位置的查找表。进一步的,在上述方法中,所述图像为YUV格式。进一步的,在上述方法中,采用填充方式作字节对齐步骤中,采用填充零的方式作字节对齐。进一步的,在上述方法中,所述查找表中用统一的空间大小记录每个最小编码单元在所述特殊JPEG文件的特殊压缩数据中位置。进一步的,在上述方法中,所述统一的空间大小为4Byte。进一步的,在上述方法中,所述特殊JPEG文件除特殊压缩数据外,还包括与标准JPEG文件格式相同的文件头和文件末尾。进一步的,在上述方法中,根据所有的最小编码单元的字节对齐的二进制码流生成特殊JPEG文件的特殊压缩数据的步骤之后或按照所述光栅扫描的顺序建立记录所述每个最小编码单元的字节对齐的二进制码流在所述特殊JPEG文件的特殊压缩数据中位置的查找表的步骤之后还包括在所述特殊JPEG文件的特殊文件头中加入JPEG DRI来定义最小编码单元的restart间隔以生成标准文件头,其中,JPEG DRI为Ox FF DD 00040001 ;在所述特殊JPEG文件的特殊压缩数据中的每个最小编码单元的结束处加入一个restart标识以生成标准压缩数据,其中,所述restart标识分别为Ox FF DO至Ox FF D7共8个,8个restart标识依次循环加入至一个最小编码单元的结束处;根据所述标准文件头、标准压缩数据及文件末尾生成标准JPEG文件。本发明还提供一种JPEG解码方法,对上述JPEG编码方法生成的特殊JPEG文件进行解码,包括根据所需解码的图像区域的左上角坐标及图像区域的宽度和高度在所述查找表中找出相应的最小编码单元在所述特殊JPEG文件的特殊压缩数据中的位置;
根据所述位置从所述特殊压缩数据中获取相应的最小编码单元的字节对齐的二进制码流,并对所述字节对齐的二进制码流进行熵解码以获取从低频到高频顺序的量化的离散余弦变换系数,其中,使用可变长解码对字节对齐的二进制码流中的交流系数进行解码,对字节对齐的二进制码流中的直流系数不作差分脉冲解码;对所述从低频到高频顺序的量化的离散余弦变换系数进行反量化以获取反量化的离散余弦变换系数;对所述反量化的离散余弦变换系数作反Z字扫描以获取光栅扫描顺序的反量化的离散余弦变换系数;对所述光栅扫描顺序的反量化的离散余弦变换系数作反向离散余弦变换以获取重建的8*8像素块;根据所述重建的8*8像素块按照光栅扫描的顺序重组为图像。 根据本发明的另一面,提供一种JPEG编码系统,包括分割模块,用于将图像按照8*8像素块的大小进行分块,再按照输入图像的格式将所述图像分割成若干个最小编码单元,每个最小编码单元包括固定个数的所述8*8像素块;处理模块,用于对图像中的所有最小编码单元按照所述光栅扫描的顺序对每一个最小编码单元作如下处理对每个最小编码单元中的每一个8*8像素块进行正向离散余弦变换以获取离散余弦变换系数;对所述离散余弦变换系数进行量化以获取量化的离散余弦变换系数;对所述量化的离散余弦变换系数进行Z字扫描以获取从低频到高频排序的离散余弦变换系数;对所述从低频到高频排序的离散余弦变换系数进行熵编码以获取对应的二进制码流,其中,使用行程长度编码对所述从低频到高频排序的离散余弦变换系数中的交流系数进行编码,对所述从低频到高频排序的离散余弦变换系数中的直流系数不作差分脉冲编码;对齐模块,用于将所有最小编码单元的对应的二进制码流采用填充方式作字节对齐以获取每个最小编码单元的字节对齐的二进制码流;生成模块,用于根据所有的最小编码单元的字节对齐的二进制码流生成一特殊JPEG文件的特殊压缩数据;查找表模块,用于按照所述光栅扫描的顺序建立记录所述每个最小编码单元的字节对齐的二进制码流在所述特殊JPEG文件的特殊压缩数据中位置的查找表。进一步的,在上述系统中,所述图像为YUV格式。进一步的,在上述系统中,所述对齐模块采用填充零的方式作字节对齐。进一步的,在上述系统中,所述查找表模块采用统一的空间大小记录每个最小编码单元在所述特殊JPEG文件的特殊压缩数据中位置。进一步的,在上述系统中,所述统一的空间大小为4Byte。进一步的,在上述系统中,生成模块还用于生成特殊JPEG文件的与标准JPEG文件相同的文件头和文件末尾。进一步的,在上述系统中,还包括一转码模块,用于在所述特殊JPEG文件的特殊文件头中加入JPEG DRI来定义最小编码单元的restart间隔以生成标准文件头,其中,JPEG DRI 为 Ox FF DD 00040001 ;
以及在所述特殊JPEG文件的特殊压缩数据中的每个最小编码单元的结束处加入一个restart标识以生成标准压缩数据,其中,所述restart标识分别为Ox FFDO至Ox FFD7共8个,8个restart标识依次循环加入至一个最小编码单元的结束处;并根据所述标准文件头、标准压缩数据及文件末尾生成所述标准JPEG文件。本发明还提供一种图像解码系统,用于对上述的支持随机位置解码的JPEG编码系统生成的特殊JPEG文件进行解码,包括位置模块,根据所需解码的图像区域的左上角坐标及图像区域的宽度和高度在所述查找表中找出相应的最小编码单元在所述特殊JPEG文件的特殊压缩数据中的位置;熵解码模块,用于根据所述位置从所述特殊压缩数据中获取相应的最小编码单元的字节对齐的二进制码流,并对所述字节对齐的二进制码流进行熵解码以获取从低频到高 频顺序的量化的离散余弦变换系数,其中,使用可变长解码对字节对齐的二进制码流中的交流系数进行解码,对字节对齐的二进制码流中的直流系数不作差分脉冲解码;反量化模块,用于对所述从低频到高频顺序的量化的离散余弦变换系数进行反量化以获取反量化的离散余弦变换系数;反z字扫描模块,用于对所述反量化的离散余弦变换系数作反z字扫描以获取光栅扫描顺序的反量化的离散余弦变换系数;反向离散余弦变换模块,用于对所述光栅扫描顺序的反量化的离散余弦变换系数作反向离散余弦变换以获取重建的8*8像素块;重组模块,用于根据所述重建的8*8像素块按照光栅扫描的次序重组为图像。与现有技术相比,本发明通过将图像按照8*8像素块的大小进行分块,再按照输入图像的格式将所述图像分割成若干个最小编码单元,每个最小编码单元包括固定个数的所述8*8像素块;对图像中的所有最小编码单元进行光栅扫描,并按照所述光栅扫描的顺序对每一个最小编码单元作如下处理对每个最小编码单元进行正向离散余弦变换以获取离散余弦变换系数;对所述离散余弦变换系数进行量化以获取量化的离散余弦变换系数;对所述量化的离散余弦变换系数进行Z字扫描以获取从低频到高频排序的离散余弦变换系数;对所述从低频到高频排序的离散余弦变换系数进行熵编码以获取对应的二进制码流,其中,使用行程长度编码对所述从低频到高频排序的离散余弦变换系数中的交流系数进行编码,对所述从低频到高频排序的离散余弦变换系数中的直流系数不作差分脉冲编码;将所有最小编码单元的对应的二进制码流采用填充方式作字节对齐以获取每个最小编码单元的字节对齐的二进制码流;根据所有的最小编码单元的字节对齐的二进制码流生成一特殊JPEG文件的特殊压缩数据;按照所述光栅扫描的顺序建立记录所述每个最小编码单元的字节对齐的二进制码流在所述特殊JPEG文件的特殊压缩数据中位置的查找表,以供后续需要解码部分图像区域时,可以快速定位到所需解码的图像区域的相应的MCU的位置,无需扫描特殊JPEG文件的整个特殊压缩数据,并对每一个MCU进行独立的解码,支持随机位置解码即实现只对图像的部分位置进行解码。另外,通过根据所需解码的图像区域的左上角坐标及图像区域的宽度和高度在所述查找表中找出相应的最小编码单元在所述特殊JPEG文件的特殊压缩数据中的位置;根据所述位置从所述特殊压缩数据中获取相应的最小编码单元的字节对齐的二进制码流,并对所述字节对齐的二进制码流进行熵解码以获取从低频到高频顺序的量化的离散余弦变换系数,其中,使用可变长解码对字节对齐的二进制码流中的交流系数进行解码,对字节对齐的二进制码流中的直流系数不作差分脉冲解码;对所述从低频到高频顺序的量化的离散余弦变换系数进行反量化以获取反量化的离散余弦变换系数;对所述反量化的离散余弦变换系数作反Z字扫描以获取光栅扫描顺序的反量化的离散余弦变换系数;对所述光栅扫描顺序的反量化的离散余弦变换系数作反向离散余弦变换以获取重建的8*8像素块;根据所述重建的8*8像素块按照光栅扫描的次序重组为图像,可 以快速定位到所需解码的图像区域的相应的MCU的位置,无需扫描特殊JPEG文件的整个特殊压缩数据,并对每一个MCU进行独立的解码,支持随机位置解码即实现只对图像的部分位置进行解码。此外,本发明通过在所述特殊JPEG文件的特殊文件头中加入JPEG DRI来定义最小编码单元的restart间隔以生成标准文件头,其中,JPEG DRI为Ox FF DD00040001 ;在所述特殊JPEG文件的特殊压缩数据中的每个最小编码单元的结束处加入一个restart标识以生成标准压缩数据,其中,所述restart标识分别为Ox FF DO至Ox FF D7共8个,8个restart标识依次循环加入至一个最小编码单元的结束处;及根据所述标准文件头、标准压缩数据及文件末尾生成标准JPEG文件特殊JPEG文件,可以在需要时很方便地将特殊JPEG文件转码为标准JPEG文件的格式。


图I是现有的JPEG标准编码器的编码流程图;图2是现有的JPEG标准解码器的解码流程图;图3是本发明实施例一的支持随机位置解码的JPEG编码方法的流程图;图4是本发明实施例一的支持随机位置解码的JPEG编码方法的详细流程图;图5是本发明实施例一的特殊JPEG文件转码为标准JPEG文件的流程图;图6是本发明一实施例的光栅扫描的顺序示意图;图7是本发明实施例二的随机位置解码方法的流程图;图8是本发明实施例二的随机位置解码方法的详细流程图;图9是本发明实施例三的支持随机位置解码的JPEG编码系统的功能模块示意图;图10是本发明实施例四的随机位置解码系统的功能模块示意图。
具体实施例方式为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式
对本发明作进一步详细的说明。实施例一如图3至6所示,本发明提供一种支持随机位置解码的JPEG编码方法,包括步骤SI至步骤S5。步骤SI,将图像按照8*8像素块的大小进行分块,再按照输入图像的格式将所述图像分割成若干个最小编码单元,每个最小编码单元包括固定个数的所述8*8像素块。优选的,所述图像为YUV格式。例如可以是yuv422, yuv444,或yuv420等。步骤S2,对图像中的所有最小编码单元进行光栅扫描,并按照所述光栅扫描的顺序对每一个最小编码单元作处理,光栅扫描的顺序如图6所示,按照所述光栅扫描的顺序对每一个最小编码单元作处理具体包括步骤S21,对每个最小编码单元中的每一个8*8像素块进行正向离散余弦变换以获取离散余弦变换系数;步骤S22,对所述离散余弦变换系数进行量化以获取量化的离散余弦变换系数;步骤S23,对所述量化的离散余弦变换系数进行Z字扫描以获取从低频到高频排序的离散余弦变换系数; 步骤S24,对所述从低频到高频排序的离散余弦变换系数进行熵编码以获取对应的二进制码流,其中,使用行程长度编码对所述从低频到高频排序的离散余弦变换系数中的交流系数进行编码,对所述从低频到高频排序的离散余弦变换系数中的直流系数不作差分脉冲编码。步骤S3,将所有最小编码单元的对应的二进制码流采用填充方式作字节对齐(Byte Alignment)以获取每个最小编码单元的字节对齐的二进制码流。优选的,步骤S3中采用填充零的方式作字节对齐(Byte Alignment)。具体的,步骤S2至步骤S3中,按照光栅扫描的顺序,每一个最小编码单元都采用与标准JPEG编码器相同的方式,都经过FDCT变换,量化,z字扫描。但是与常用的JPEG编码方式不同,首先,在熵编码的过程中,没有使用差分脉冲编码调制(DPCM)对直流系数(DC)进行编码的步骤,其次,对每一个编码的MCU,都采用统一填充的方式如填充O的方式做一次字节对齐(Byte Alignment)。步骤S4,根据所有的最小编码单元的字节对齐的二进制码流生成一特殊JPEG文件的特殊压缩数据(Compressed Data)。优选的,所述特殊JPEG文件除特殊压缩数据外,还包括特殊文件头和文件末尾。其中,特殊文件头格式可以完全参考标准JPEG的标准文件头(JPEGHeader)。对硬件编码器而言,特殊文件头可以配置固定格式,特殊文件头的长度也可确定,例如,Omnivision的硬件编码器就常采用固定长度为623Byte的文件头。关于文件末尾格式上,可在最后一个MCU编码结束后,即可按照与标准JPEG文件编码相同的方式,在特殊JPEG文件的结尾写入两个字节的结束符Ox FF D9,无需做额外的处理。步骤S5,按照所述光栅扫描的顺序建立记录所述每个最小编码单元的字节对齐的二进制码流在所述特殊JPEG文件的特殊压缩数据中位置的查找表(Position Table),所述查找表如图6所示,图中每一格表示一个最小编码单元的字节对齐的二进制码流在所述特殊JPEG文件的特殊压缩数据中位置。优选的,所述查找表中用统一的空间大小记录每个最小编码单元在所述特殊JPEG文件的特殊压缩数据中位置。较佳的,所述的统一的空间大小为4Byte。具体的,在所述查找表中,可按照与JPEG编码相同的光栅扫描顺序,以bit为单位(对大尺寸图像,也可以使用Byte为单位),使用4Byte空间,将第一个MCU的位置记为Obit,随后记下每一个MCU在码流中的位置,每个位置空间使用4Byte。这样一个查找表的大小即为4x MCU个数Byte。例如,yuv422格式的VGA图片有(640/16)x(480/8) =2400个MCU。那么查找表的大小为2400x4=9600Byte。优选的,如图5所示,步骤S4或步骤S5之后还包括将特殊JPEG文件转码为标准JPEG文件的步骤,具体包括步骤S6,在所述特殊JPEG文件的特殊文件头中加入JPEG DRI来定义最小编码单元的restart间隔以生成标准文件头,其中,JPEG DRI为Ox FF DD 00040001 ;步骤S7,在所述特殊JPEG文件的特殊压缩数据中的每个最小编码单元的结束处加入一个restart标识以生成标准压缩数据,其中,所述restart标识分别为Ox FF DO至Ox FF D7共8个,8个restart标识依次循环加入至一个最小编码单元的结束处,具体的,按照JPEG标准,可以通过查询所述查找表或在编码过程中,在每个MCU结束后,插入restart标识。restart标识共有8个(m=(T7),每次写入一个,从O开始,O到7循环加入,直到编码结束;步骤S8,根据所述标准文件头、标准压缩数据及文件末尾生成标准JPEG文件,这样特殊JPEG文件可以在需要时很方便地转码为标准JPEG文件的格式。
本实施例可以实现后续需要解码部分图像区域时,可以快速定位到所需解码的图像区域的相应的MCU (最小编码单元)的位置,无需扫描特殊JPEG文件的整个特殊压缩数据,并对每一个MCU进行独立的解码,支持随机位置解码即实现只对图像的部分位置进行解码。实施例二如图7和图8所示,本发明还提供一种JPEG解码方法,对实施例一中生成的特殊JPEG文件进行解码,包括步骤S10,根据所需解码的图像区域的左上角坐标及图像区域的宽度和高度在所述查找表中找出相应的最小编码单元在所述特殊JPEG文件的特殊压缩数据中的位置;步骤S11,根据所述位置从所述特殊压缩数据中获取相应的最小编码单元的字节对齐的二进制码流,并对所述字节对齐的二进制码流进行熵解码以获取从低频到高频顺序的量化的离散余弦变换系数,其中,使用可变长解码对字节对齐的二进制码流中的交流系数进行解码,对字节对齐的二进制码流中的直流系数不作差分脉冲解码;步骤S12,对所述从低频到高频顺序的量化的离散余弦变换系数进行反量化以获取反量化的离散余弦变换系数;步骤S13,对所述反量化的离散余弦变换系数作反Z字扫描以获取光栅扫描顺序的反量化的离散余弦变换系数;步骤S14,对所述光栅扫描顺序的反量化的离散余弦变换系数作反向离散余弦变换以获取重建的8*8像素块;步骤S15,根据所述重建的8*8像素块按照光栅扫描的次序重组为图像。具体的,本实施例中关于头文件解码,可在读入特殊文件头后,按照JPEG标准对特殊文件头进行解码,例如Omnivision硬件编码器的文件头为固定长度的623字节。另外,在图像随机区域解码时,可首先根据所需解码的图像区域的左上角坐标和图像区域的宽度和高度,按照图像的格式如YUV格式,推出相应的MCU,然后在查找表中的相应位置找出所需解码的MCU在特殊压缩数据的码流中的位置。由于在编码过程中取消了对DC系数的DPCM编码,因此对每个MCU的解码都可独立进行,同时本实施例也可以实现对多个MCU的并行解码。本实施例实现在需要解码部分图像区域时,可以快速定位到所需解码的图像区域的相应的MCU (最小编码单元)的位置,无需扫描特殊JPEG文件的整个特殊压缩数据,并对每一个MCU进行独立的解码,支持随机位置解码即实现只对图像的部分位置进行解码。实施例三如图9所示,本发明还提供一种支持随机位置解码的JPEG编码系统,包括分割模块11、处理模块12、对齐模块13、生成模块14和查找表模块15。分割模块11用于将图像按照8*8像素块的大小进行分块,输入图像的格式将所述图像分割成若干个最小编码单元,每个最小编码单元包括固定个数所述8*8像素块。优选的,所述图像为YUV格式。例如可以是yuv422, yuv444,或yuv420等。处理模块12用于对图像中的所有最小编码单元按照所述光栅扫描 的顺序对每一个最小编码单元作如下处理对每个最小编码单元中的每一个8*8像素块进行正向离散余弦变换以获取离散余弦变换系数;对所述离散余弦变换系数进行量化以获取量化的离散余弦变换系数;对所述量化的离散余弦变换系数进行Z字扫描以获取从低频到高频排序的离散余弦变换系数;对所述从低频到高频排序的离散余弦变换系数进行熵编码以获取对应的二进制码流,其中,使用行程长度编码对所述从低频到高频排序的离散余弦变换系数中的交流系数进行编码,对所述从低频到高频排序的离散余弦变换系数中的直流系数不作差分脉冲编码。所述光栅扫描的顺序如图6所示。对齐模块13用于将所有最小编码单元的对应的二进制码流采用填充方式作字节对齐以获取每个最小编码单元的字节对齐的二进制码流。较佳的,所述对齐模块采用填充零的方式作字节对齐。具体的,本实施例中,按照光栅扫描的顺序,每一个最小编码单元都采用与标准JPEG编码器相同的方式,都经过FDCT变换,量化,z字扫描。但是与常用的JPEG编码方式不同,首先,在熵编码的过程中,没有使用差分脉冲编码调制(DPCM)对直流系数(DC)进行编码的步骤,其次,对每一个编码的MCU,都采用统一填充的方式如填充O的方式做一次字节对齐(Byte Alignment)。生成模块14用于根据所有的最小编码单元的字节对齐的二进制码流生成一特殊JPEG文件的特殊压缩数据。优选的,生成模块还用于生成特殊JPEG文件的特殊文件头和文件末尾。其中,特殊文件头格式可以完全参考标准JPEG的标准文件头。对硬件编码器而言,特殊文件头可以配置固定格式,特殊文件头的长度也可确定,例如,Omni vision的硬件编码器就常采用固定长度为623Byte的文件头。关于文件末尾格式上,可在最后一个MCU编码结束后,即可按照与标准JPEG文件编码相同的方式,在特殊JPEG文件的结尾写入两个字节的结束符Ox FFD9,无需做额外的处理。查找表模块15用于按照所述光栅扫描的顺序建立记录所述每个最小编码单元的字节对齐的二进制码流在所述特殊JPEG文件的特殊压缩数据中位置的查找表。所述查找表如图6所示,图中每一格表示一个最小编码单元的字节对齐的二进制码流在所述特殊JPEG文件的特殊压缩数据中位置。优选的,所述查找表模块采用统一的空间大小记录每个最小编码单元在所述特殊JPEG文件的特殊压缩数据中位置。具体的,在所述查找表中,可按照与JPEG编码相同的光栅扫描顺序,以bit为单位(对大尺寸图像,也可以使用Byte为单位),使用4Byte空间,将第一个MCU的位置记为Obit,随后记下每一个MCU在码流中的位置,每个位置空间使用4Byte。这样一个查找表的大小即为4x MCU个数Byte。例如,yuv422格式的VGA图片有(640/16) X (480/8) =2400 个 MCU。那么查找表的大小为 2400x4=9600Byte。较佳的,所述的统一的空间大小为4Byte。优选的,本实施例的系统还包括一转码模块16,用于使特殊格式的JPEG文件转码成为标准JPEG文件,通过在所述特殊JPEG文件的特殊文件头中加入JPEG DRI来定义最小编码单元的restart间隔以生成标准文件头,其中,JPEG DRI为Ox FF DD 00040001 ;以及在所述特殊JPEG文件的特殊压缩数据中的每个最小编码单元的结束处加入一个restart标识以生成标准压缩数据,其中,所述restart标识分别为Ox FF DO至Ox FF D7共8个,8个restart标识依次循环加入至一个最小编码单元的结束处,具体的,按照JPEG标准,可以通过查询所述查找表或在编码过程中,在每个MCU结束后,插入restart标识。restart标识共有8个(m=(T7),每次写入一个,从O开始,O到7循环加入,直到编码结束;并根据所述标准文件头、标准压缩数据及文件末尾生成所述标准JPEG文件,可以在需要时很方便地将 特殊JPEG文件转码为标准JPEG文件的格式。本实施例可以实现后续需要解码部分图像区域时,可以快速定位到所需解码的图像区域的相应的MCU (最小编码单元)的位置,无需扫描特殊JPEG文件的整个特殊压缩数据,并对每一个MCU进行独立的解码,支持随机位置解码即实现只对图像的部分位置进行解码。实施例四如图10所示,本发明还提供一种JPEG解码系统,用于对实施例三生成的特殊JPEG文件进行解码,包括位置模块21、熵解码模块22、反量化模块23、离散余弦变换模块24、反Z字扫描模块25和重组模块26。位置模块21根据所需解码的图像区域的左上角坐标及图像区域的宽度和高度在所述查找表中找出相应的最小编码单元在所述特殊JPEG文件的特殊压缩数据中的位置。熵解码模块22用于根据所述位置从所述特殊压缩数据中获取相应的最小编码单元的字节对齐的二进制码流,并对所述字节对齐的二进制码流进行熵解码以获取从低频到高频顺序的量化的离散余弦变换系数,其中,使用可变长解码对字节对齐的二进制码流中的交流系数进行解码,对字节对齐的二进制码流中的直流系数不作差分脉冲解码。反量化模块23用于对所述从低频到高频顺序的量化的离散余弦变换系数进行反量化以获取反量化的离散余弦变换系数。反z字扫描模块24用于对所述反量化的离散余弦变换系数作反z字扫描以获取光栅扫描顺序的反量化的离散余弦变换系数。反向离散余弦变换模块25用于对所述光栅扫描顺序的反量化的离散余弦变换系数作反向离散余弦变换以获取重建的8*8像素块。重组模块26用于根据所述重建的8*8像素块按照光栅扫描的次序重组为图像。具体的,本实施例中关于头文件解码,可在读入特殊文件头后,按照JPEG标准对特殊文件头进行解码,例如Omnivision硬件编码器的JPEG文件头为固定长度的623字节。另外,在图像随机区域解码时,可首先根据所需解码的图像区域的左上角坐标和图像区域的宽度和高度,按照图像的格式如YUV格式,推出相应的MCU,然后在查找表中的相应位置找出所需解码的MCU在特殊压缩数据的码流中的位置。由于在编码过程中取消了对DC系数的DPCM编码,因此对每个MCU的解码都可独立进行,同时本实施例也可以实现对多个MCU的并行解码。本实施例可以快速定位到所需解码的图像区域的相应的MCU(最小编码单元)的位置,无需扫描特殊JPEG文件的整个特殊压缩数据,并对每一个MCU进行独立的解码,支持随机位置解码即实现只对图像的部分位置进行解码。综上所述,本发明通过将图像按照8*8像素块的大小进行分块,再按照图像的输入格式将所述图像分割成若干个最小编码单元,每个最小编码单元包括固定个数的所述8*8像素块;对图像中的所有最小编码单元按照所述光栅扫描的顺序对每一个最小编码单元作如下处理对每个最小编码单元进行正向离散余弦变换以获取离散余弦变换系数;对所述离散余弦变换系数进行量化以获取量化的离散余弦变换系数;对所述量化的离散余弦变换系数进行Z字扫描以获取从低频到高频排序的离散余弦变换系数;对所述从低频到高 频排序的离散余弦变换系数进行熵编码以获取对应的二进制码流,其中,使用行程长度编码对所述从低频到高频排序的离散余弦变换系数中的交流系数进行熵编码,其中对所述从低频到高频排序的离散余弦变换系数中的直流系数不作差分脉冲编码;将所有最小编码单元的对应的二进制码流采用填充方式作字节对齐以获取每个最小编码单元的字节对齐的二进制码流;根据所有的最小编码单元的字节对齐的二进制码流生成一特殊JPEG文件的特殊压缩数据;按照所述光栅扫描的顺序建立记录所述每个最小编码单元的字节对齐的二进制码流在所述特殊JPEG文件的特殊压缩数据中位置的查找表,以供后续需要解码部分图像区域时,可以快速定位到所需解码的图像区域的相应的MCU(最小编码单元)的位置,无需扫描特殊JPEG文件的整个特殊压缩数据,并对每一个MCU进行独立的解码,支持随机位置解码即实现只对图像的部分位置进行解码。另外,通过根据所需解码的图像区域的左上角坐标和图像区域的宽度和高度在所述查找表中找出相应的最小编码单元在所述特殊JPEG文件的特殊压缩数据中的位置;根据所述位置从所述特殊压缩数据中获取相应的最小编码单元的字节对齐的二进制码流,并对所述字节对齐的二进制码流进行熵解码以获取从低频到高频顺序的量化的离散余弦变换系数,其中,使用可变长解码对字节对齐的二进制码流中的交流系数进行解码,对字节对齐的二进制码流中的直流系数不作差分脉冲解码;对所述从低频到高频顺序的量化的离散余弦变换系数进行反量化以获取反量化的离散余弦变换系数;对所述反量化的离散余弦变换系数作反Z字扫描以获取光栅扫描顺序的反量化的离散余弦变换系数;对所述光栅扫描顺序的反量化的离散余弦变换系数作反向离散余弦变换以获取重建的8*8像素块;根据所述重建的8*8像素块按照光栅扫描的顺序重组为图像,可以快速定位到所需解码的图像区域的相应的MCU (最小编码单元)的位置,无需扫描特殊JPEG文件的整个特殊压缩数据,并对每一个MCU进行独立的解码,支持随机位置解码即实现只对图像的部分位置进行解码。此外,本发明通过在所述特殊JPEG文件的特殊文件头中加入JPEG DRI来定义最小编码单元的restart间隔以生成标准文件头,其中PEG DRI为Ox FF DD00040001 ;在所述特殊JPEG文件的特殊压缩数据中的每个最小编码单元的结束处加入一个restart标识以生成标准压缩数据,其中,所述restart标识分别为Ox FF DO至Ox FF D7共8个,8个restart标识依次循环加入至一个最小编码单元的结束处;及根据所述标准文件头、标准压缩数据及文件末尾生成标准JPEG文件特殊JPEG文件,可以在需要时很方便地将特殊JPEG文件转码为标准JPEG文件的格式。本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
显然,本领域的技术人员可以对发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。
权利要求
1.一种JPEG编码方法,其特征在于,包括 将图像按照8*8像素块的大小进行分块,再按照输入图像的格式将所述图像分割成若干个最小编码单元,每个最小编码单元包括固定个数的8*8像素块; 对图像中的所有最小编码单元,按照所述光栅扫描的顺序作如下处理对每个最小编码单元中的每一个8*8像素块进行正向离散余弦变换以获取离散余弦变换系数;对所述离散余弦变换系数按照量化表进行量化以获取量化的离散余弦变换系数;对所述量化的离散余弦变换系数进行Z字扫描以获取从低频到高频排序的离散余弦变换系数;对所述从低频到高频排序的离散余弦变换系数进行熵编码以获取对应的二进制码流,其中,使用行程长度编码对所述从低频到高频排序的离散余弦变换系数中的交流系数进行编码,对所述从低频到高频排序的离散余弦变换系数中的直流系数不作差分脉冲编码; 将所有最小编码单元的对应的二进制码流采用填充方式作字节对齐以获取每个最小编码单元的字节对齐的二进制码流; 根据所有的最小编码单元的字节对齐的二进制码流生成一特殊JPEG文件的特殊压缩数据; 按照所述光栅扫描的顺序建立记录所述每个最小编码单元的字节对齐的二进制码流在所述特殊JPEG文件的特殊压缩数据中位置的查找表。
2.如权利要求I所述的JPEG编码方法,其特征在于,所述图像为YUV格式。
3.如权利要求I所述的JPEG编码方法,其特征在于,采用填充方式作字节对齐步骤中,采用填充零的方式作字节对齐。
4.如权利要求I所述的JPEG编码方法,其特征在于,所述查找表中用统一的空间大小记录每个最小编码单元在所述特殊JPEG文件的特殊压缩数据中位置。
5.如权利要求4所述的JPEG编码方法,其特征在于,所述统一的空间大小为4Byte。
6.如权利要求I所述的JPEG编码方法,其特征在于,所述特殊JPEG文件除特殊压缩数据外,还包括与标准JPEG文件格式相同的文件头和文件末尾。
7.如权利要求6所述的JPEG编码方法,其特征在于,根据所有的最小编码单元的字节对齐的二进制码流生成特殊JPEG文件的特殊压缩数据的步骤之后或按照所述光栅扫描的顺序建立记录所述每个最小编码单元的字节对齐的二进制码流在所述特殊JPEG文件的特殊压缩数据中位置的查找表的步骤之后还包括 在所述特殊JPEG文件的特殊文件头中加入JPEG DRI来定义最小编码单元的restart间隔以生成标准文件头,其中,JPEG DRI为Ox FF DD 00040001 ; 在所述特殊JPEG文件的特殊压缩数据中的每个最小编码单元的结束处加入一个restart标识以生成标准压缩数据,其中,所述restart标识分别为Ox FF DO至Ox FF D7共8个,8个restart标识依次循环加入至一个最小编码单元的结束处; 根据所述标准文件头、标准压缩数据及文件末尾生成标准JPEG文件。
8.—种JPEG解码方法,其特征在于,对权利要求I至6所述的支持随机位置解码的JPEG编码方法生成的特殊JPEG文件进行解码,包括 根据所需解码的图像区域的左上角坐标及图像区域的宽度和高度在所述查找表中找出相应的最小编码单元在所述特殊JPEG文件的特殊压缩数据中的位置; 根据所述位置从所述特殊压缩数据中获取相应的最小编码单元的字节对齐的二进制码流,并对所述字节对齐的二进制码流进行熵解码以获取从低频到高频顺序的量化的离散余弦变换系数,其中,使用可变长解码对字节对齐的二进制码流中的交流系数进行解码,对字节对齐的二进制码流中的直流系数不作差分脉冲解码; 对所述从低频到高频顺序的量化的离散余弦变换系数进行反量化以获取反量化的离散余弦变换系数; 对所述反量化的离散余弦变换系数作反Z字扫描以获取光栅扫描顺序的反量化的离散余弦变换系数; 对所述光栅扫描顺序的反量化的离散余弦变换系数作反向离散余弦变换以获取重建的8*8像素块; 根据所述重建的8*8像素块按照光栅扫描的顺序重组为图像。
9.一种JPEG编码系统,其特征在于,包括 分割模块,用于将图像按照8*8像素块的大小进行分块,再按照输入图像的格式将所述图像分割成若干个最小编码单元,每个最小编码单元包括固定个数的所述8*8像素块; 处理模块,用于对图像中的所有最小编码单元按照所述光栅扫描的顺序对每一个最小编码单元作如下处理对每个最小编码单元中的每一个8*8像素块进行正向离散余弦变换以获取离散余弦变换系数;对所述离散余弦变换系数进行量化以获取量化的离散余弦变换系数;对所述量化的离散余弦变换系数进行Z字扫描以获取从低频到高频排序的离散余弦变换系数;对所述从低频到高频排序的离散余弦变换系数进行熵编码以获取对应的二进制码流,其中,使用行程长度编码对所述从低频到高频排序的离散余弦变换系数中的交流系数进行编码,对所述从低频到高频排序的离散余弦变换系数中的直流系数不作差分脉冲编码; 对齐模块,用于将所有最小编码单元的对应的二进制码流采用填充方式作字节对齐以获取每个最小编码单元的字节对齐的二进制码流; 生成模块,用于根据所有的最小编码单元的字节对齐的二进制码流生成一特殊JPEG文件的特殊压缩数据; 查找表模块,用于按照所述光栅扫描的顺序建立记录所述每个最小编码单元的字节对齐的二进制码流在所述特殊JPEG文件的特殊压缩数据中位置的查找表。
10.如权利要求9所述的JPEG编码系统,其特征在于,所述图像为YUV格式。
11.如权利要求9所述的JPEG编码系统,其特征在于,所述对齐模块采用填充零的方式作字节对齐。
12.如权利要求9所述的JPEG编码系统,其特征在于,所述查找表模块采用统一的空间大小记录每个最小编码单元在所述特殊JPEG文件的特殊压缩数据中位置。
13.如权利要求12所述的JPEG编码系统,其特征在于,所述统一的空间大小为4Byte。
14.如权利要求9所述的JPEG编码系统,其特征在于,生成模块还用于生成与标准JPEG文件格式相同的特殊JPEG文件的文件头和文件末尾。
15.如权利要求14所述的JPEG编码系统,其特征在于,还包括一转码模块,用于在所述特殊JPEG文件的特殊文件头中加入JPEG DRI来定义最小编码单元的restart间隔以生成标准文件头,其中,JPEG DRI为Ox FF DD 00040001 ; 以及在所述特殊JPEG文件的特殊压缩数据中的每个最小编码单元的结束处加入一个restart标识以生成标准压缩数据,其中,所述restart标识分别为Ox FFDO至Ox FF D7共8个,8个restart标识依次循环加入至一个最小编码单元的结束处; 并根据所述标准文件头、标准压缩数据及文件末尾生成所述标准JPEG文件。
16.一种JPEG解码系统,其特征在于,用于对权利要求9至14所述的支持随机位置解码的JPEG编码系统生成的特殊JPEG文件进行解码,包括 位置模块,根据所需解码的图像区域的左上角坐标及图像区域的宽度和高度在所述查找表中找出相应的最小编码单元在所述特殊JPEG文件的特殊压缩数据中的位置; 熵解码模块,用于根据所述位置从所述特殊压缩数据中获取相应的最小编码单元的字节对齐的二进制码流,并对所述字节对齐的二进制码流进行熵解码以获取从低频到高频顺序的量化的离散余弦变换系数,其中,使用可变长解码对字节对齐的二进制 码流中的交流系数进行解码,对字节对齐的二进制码流中的直流系数不作差分脉冲解码; 反量化模块,用于对所述从低频到高频顺序的量化的离散余弦变换系数进行反量化以获取反量化的离散余弦变换系数; 反z字扫描模块,用于对所述反量化的离散余弦变换系数作反z字扫描以获取光栅扫描顺序的反量化的离散余弦变换系数; 反向离散余弦变换模块,用于对所述光栅扫描顺序的反量化的离散余弦变换系数作反向离散余弦变换以获取重建的8*8像素块; 重组模块,用于根据所述重建的8*8像素块按照光栅扫描的顺序重组为图像。
全文摘要
本发明涉及一种JPEG编码和解码方法及系统,所述方法包括按照输入图像的格式预设的单元大小将图像分割成若干个最小编码单元,每个最小编码单元包括固定个数的8*8像素块;按照光栅扫描的顺序对每一个最小编码单元作正向离散余弦变换、量化、Z字扫描、熵编码,其中,熵编码使用行程长度编码对交流系数进行编码,对所直流系数不作差分脉冲编码,随后再通过查表生成码流;采用填充方式对每一个最小编码单元的码流作字节对齐,建立记录所述每个最小编码单元的在码流中位置的查找表。本发明能够快速定位到所需解码的图像区域的相应的最小编码单元的位置,无需扫描特殊JPEG文件的整个特殊压缩数据,并实现只对图像的部分位置进行解码。
文档编号H04N7/26GK102970544SQ20121052593
公开日2013年3月13日 申请日期2012年12月7日 优先权日2012年12月7日
发明者赵谊虹, 单继章 申请人:豪威科技(上海)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1