CN108881923A - 减少jpeg编解码行缓冲容量的方法 - Google Patents
减少jpeg编解码行缓冲容量的方法 Download PDFInfo
- Publication number
- CN108881923A CN108881923A CN201810916908.5A CN201810916908A CN108881923A CN 108881923 A CN108881923 A CN 108881923A CN 201810916908 A CN201810916908 A CN 201810916908A CN 108881923 A CN108881923 A CN 108881923A
- Authority
- CN
- China
- Prior art keywords
- followed successively
- row
- image data
- address
- read address
- 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/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/625—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]
-
- 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
- H04N19/43—Hardware specially adapted for motion estimation or compensation
- H04N19/433—Hardware specially adapted for motion estimation or compensation characterised by techniques for memory access
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Discrete Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
Abstract
本发明公开了一种减少JPEG编解码行缓冲容量的方法,其特征在于,包括:编码阶段,对于读入的一帧图像,将其第0~第7行图像数据依次写入编码行缓冲模块,编码行缓冲模块中地址指针从s=0开始,每写入一个像素数据地址指针s增加1;当前8行图像数据写入后,按照JPEG编码所需的8x8的数据单元送出图像数据;同时,编码行缓冲模块开始写入第8~第15行图像数据,并按照控制读写地址变换逻辑,来控制数据存取调度;解码阶段采用与编码阶段相同的读写地址变换逻辑。上述方法将所需行缓冲空间减少了一半,从而有利于降低芯片功耗,减小芯片面积,进而实现产品成本的缩减。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种减少JPEG编解码行缓冲容量的方法。
背景技术
多媒体技术是当今的热门话题之一。多媒体通信和多媒体计算机面临的一个难题是海量数据的存储与传送问题。在所有可能的数据中,图像又是数据量最大的。以一般彩色电视信号为例,如果各分量均被数字化为8个比特,则数据量约为100Mb/s,因而采用一个容量为1GB(=1000MB=800Mb)的CD-ROM(只读光盘)仅能存约1分钟的原始数据(每字节后面附有2位校验位)。高清晰度电视(High-Definition TV,HDTV)其数据量约1.2Gb/s,因此1GB的光盘还存不下7秒钟的HDTV图像,而且如此大的数据量也不利于通信网中的传送。显然,电视信号数字化后直接传送的方法是难以接受的,必须进行数据压缩。多媒体数据中,存在着空间冗余、时间冗余、信息熵冗余、知识冗余和视觉冗余,这说明数据压缩的余地很大。多媒体计算机是90年代计算机发展的一个主流方向,为了综合实时地处理文本、图像、视频、声音等多种媒体信息,首先要解决的问题就是对庞大的图像、声音信息的存储和传输。
静态图像压缩标准JPEG,直译为联合摄影术专家组,其中联合是指几个国际组织的联合。它是从1986年正式开始制定的,当时有两个国际组织联合支持,其一是国际标准组织ISO(International Standards Organization),其二是国际电报电话咨询委员会CCITT(International Telephone and Telegraph Consultative Committee)。到1987年11月,国际电工委员会IEC(International Electrotechnical Commission)也参加合作,因此说JPEG是三个国际组织合作的成果,是在1991年建立并通过的第一个适用于连续色调静止图像压缩的国际标准,从而统一了用于彩色传真、静止图像、可视会议、电子出版物等图像的压缩和传输格式。JPEG是ISO的标准,同时也是CCITT的推荐标准。JPEG技术已在多媒体技术、图像通信和图像数据库等各个领域得到广泛应用。
经JPEG标准压缩的图像,可在不太影响图像质量的前提下,得到很高的压缩比。该标准既可以用软件实现,也可以用硬件实现。实时图像处理在多媒体、HDTV、图像通信等领域有着非常广泛的应用。图像处理算法的特点是数据量和运算量非常大,随着图像处理数据量的增大,用软件实现图像数据的压缩已经不能满足图像的实时处理要求,用硬件实现图像处理算法已经成为必然趋势。基本JPEG编解码流程如图1所示。图像压缩标准的建立以及超大规模集成电路技术的发展使图像编/解码算法的硬件实现已成为可能,图像压缩/解压VLSI芯片已成为多媒体技术的核心,世界各大电子研究机构都致力于实现这些算法芯片的研究。
JPEG压缩算法的原理如下:对一幅640×480,16M色的真彩色图像(每个像素点用3个字节分别存放红、绿、蓝信息),数据量为921 600字节。这么大的数据量,在存储和传输时,既费空间,又费时间。而实际上,人眼的视觉特性决定了人眼对有些亮度与色度的差别是无法区分的。只将人眼敏感的信息保留下来,而舍弃那些感觉不到的信息,这就是JPEG有损压缩的策略。JPEG压缩的有损之处体现在:①在由RGB到YUV色度空间变换时,保留每个象素点的亮度信息,而只保留部分象素点的色度信息。②经过离散余弦变换(DiscreteCosine Transform,DCT)后的变换系数,被进一步量化。量化系数的选取是不均匀的。人眼敏感的低频信号区采用细量化,而高频信号区采用粗量化。这样,人眼感觉不到的高频信号被忽略,仅仅保留了低频信号,从而达到压缩的目的。JPEG是面向连续色调静止图像压缩的国际标准,JPEG委员会在制定JPEG标准时,定义了许多标记用来区分和识别图像数据及其相关信息,目前,使用比较广泛的是JPEG文件交换格式JFIF(JPEG File InterchangeFormat)1.02版本。JPEG标准包含一系列不同的压缩算法,压缩一幅图像需要经过很多步骤。
JPEG编码的基本流程如图2所示。编码过程中首先将原始彩色图像的色彩进行色彩空间转换,更适于下一步进行下采样。下采样后的图像被分为很多块,每一块都将经过DCT处理来得到图像的频域成分。DCT处理结果将被量化滤波,去除了图像中不太重要的一些成分,然后对图像数据用游程编码和哈夫曼编码来进一步减少数据量。
基线JPEG压缩标准的硬件实现结构划分如图3所示,由YCbCr空间表示的图像数据经过下采样,按照最小编码单元的原则依次输入,首先经过二维离散余弦变换,在这一模块中图像数据先经过行方向的离散余弦变换,再经过列方向的离散余弦变换两个步骤;第二步是将二维离散余弦变换的结果经过量化送入到ZigZag扫描模块,将数据单元以“之”字形扫描排列;接下来就是将数据流进行编码和格式化处理,最终产生JPEG文件交换格式JFIF数据流输出。
离散余弦变换是一种与傅立叶变换紧密相关的数学运算。在傅立叶级数展开式中,如果被展开的函数是实偶函数,那么其傅立叶级数中只包含余弦项,再将其离散化可导出余弦变换,因此称之为离散余弦变换。时间域中信号需要用许多数据点来表示:在x轴表示时间,在y轴表示幅度。信号一旦用傅立叶变换转换到频率域,就只需要几个点就可以表示这几个相同的信号。原因就是信号只含有少量的频率成分,这允许在频率域中只用几个数据点就可以表示信号,而在时间域中表示则需要大量数据点。这一技术可以应用到彩色图像上。彩色图像由像素组成,这些像素具有RGB彩色值,转换到YCbCr空间并下采样后,每个像素都带有x,y坐标,对每种成分使用8×8矩阵。在灰度图像中像素具有灰度值,它的x,y坐标由灰色的幅度组成。为了在JPEG中压缩灰度图像,每个像素被翻译为亮度或灰度值。为了压缩彩色图像,这项工作必须进行三遍,因为JPEG分别地处理每个颜色成分,Y成分第一个被压缩,其次分别是Cb、Cr成分。而一个8×8矩阵的64个值,每个值都带有各自的x,y坐标,这样我们就有了一种像素的三维表示法,称作空间表达式或空间域。通过DCT变换,空间表达式就转化为频谱表达式或频率域,从而达到了数据压缩的目的。DCT是目前最佳的图像变换,它有很多优点。DCT是正交变化,它可以将8×8图像的空间表达式转换为频率域,只需要用少量的数据点表示图像;DCT产生的系数很容易被量化,因此能获得好的块压缩;DCT算法的性能很好,有很多快速算法,如采用快速傅立叶变换可以进行高效的运算,因此它在硬件和软件中都容易实现;而且DCT算法是对称的,所以利用反离散余弦变换(Inverse DCT,IDCT)可以用来解压缩图像。在进行DCT变换时通常将图像分成N×N的子块进行变换。如图4所示,JPEG采用8×8大小的子块的二维离散余弦变换,在编码的输入端,把原始图像顺序地分割成一系列8×8子块,经DCT变换后生成64个DCT系数,解码时,通过反离散余弦变换来获得重构图像。DCT变换是一个无损变换,它实际上并不进行压缩,它只是为下一步的压缩做准备工作。
芯片中集成JPEG压缩算法模块可以实现将图像数据进行压缩,进而减小数据传输时间,缩小大规模数据传输带来可能的数据误差以及减小数据传输带来功耗损失。
对于实时图像处理,一般图像数据是以包含帧同步VSYNC、行同步HSYNC、图像数据Data逐帧逐行依次传送的。以图像分辨率为VGA格式640x480为例,即每一帧为VSYNC一个周期,如图5(a)所示,在VSYNC高电平期间,共有480行图像数据进行传送,行同步信号HSYNC为行周期;如图5(b)所示,在HSYNC高电平期间,有640个有效图像数据进行传送,如此每帧重复这样的图像数据传送时序。
典型的图像编解码传输系统如图6所示。图像数据接收模块按照帧、行同步信号,接收图像数据,如前所述因为JPEG编码的编码单元是以8x8共64个数据来进行处理的,而图像又是有时间先后顺序的逐行传送,所以需要有JPEG编码行缓冲模块将数据暂存下来;通常情况下需要两个行缓冲line buffer0和line buffer1,每个行缓冲至少可以存放8行图像数据,从而实现在接收连续图像数据时,可以持续进行图像压缩编码。
如图7所示,以640x480分辨率的VGA图像为例,每行数据有640byte,因为编码单元是8x8共64个数据,即处理第一块时,先对第0行0~7这8个数据进行DCT运算,存放8行数据就需要640x8=5120byte,两块行缓冲ram就需要5120x2=10240byte,相当于10Kbyte的ram空间;当一帧开始时,前8行(第0行~第7行)数据依次按照时间先后依次存入行缓冲LineBuffer0,对应ram地址从0到5119依次递增,当8行数据接收完毕后,再对送入的第8行~第15行图像数据依次存入到行缓冲Line Buffer1对应的ram空间,与此同时,JPEG编码模块将取出存放在Line Buffer0中的图像数据进行压缩编码。重复该循环过程,直到整帧图像接收完毕。
当接收端接收到压缩编码过的JPEG数据后,先进行JPEG解码,然后将解码后的数据按照两个640x8=5120行缓冲依次存入,每个行缓冲存满8行图像数据后,由图像输出模块重构成有帧、行同步的图像数据序列送出。
由以上分析可以看出,编码需要两块RAM,各存8行图像数据,共计16行数据深度的ram空间;解码时同样也需要两个块ram,共计16行数据深度的ram空间,则总共需要四个RAM;无论是嵌入式系统,还是专用集成电路实现JPEG编解码,RAM空间都是宝贵的资源,对整个芯片或嵌入式系统的成本有重要的影响。
发明内容
本发明的目的是提供一种减少JPEG编解码行缓冲容量的方法,可以降低芯片整体成本和功耗,提高了芯片竞争力。
本发明的目的是通过以下技术方案实现的:
一种减少JPEG编解码行缓冲容量的方法,包括:
编码阶段,对于读入的一帧图像,将其第0~第7行图像数据依次写入编码行缓冲模块,编码行缓冲模块中地址指针从s=0开始,每写入一个像素数据地址指针s增加1;当前8行图像数据写入后,按照JPEG编码所需的8x8的数据单元送出图像数据;同时,编码行缓冲模块开始写入第8~第15行图像数据,并按照控制读写地址变换逻辑,来控制数据存取调度;对于后续的行图像数据,根据行号所属范围,按照第0~第7行或者第8~第15行的方式来进行读写地址控制,从而基于一块编码行缓冲模块实现编码阶段的行数据缓冲;
解码阶段采用与编码阶段相同的读写地址变换逻辑,从而基于一块解码行缓冲模块实现解码阶段的行数据缓冲。
由上述本发明提供的技术方案可以看出,使用编解码行缓冲区域的读写地址变换逻辑,将所需行缓冲空间减少了一半,从而有利于降低芯片功耗,减小芯片面积,进而实现产品成本的缩减。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。
图1为本发明背景技术提供的基本JPEG编解码流程图;
图2为本发明背景技术提供的JPEG编码的基本流程图;
图3为本发明背景技术提供的基线JPEG压缩标准的硬件结构划分示意图;
图4为本发明背景技术提供的DCT变换流程图;
图5为本发明背景技术提供的图像数据传送时序示意图;
图6为本发明背景技术提供的典型的图像编解码传输系统示意图;
图7为本发明背景技术提供的现有技术中图像编码阶段行缓冲示意图;
图8为本发明实施例提供的一种减少JPEG编解码行缓冲容量的方法的流程图;
图9为本发明实施例提供的第0~第7行图像中的像素数据在编码行缓冲模块中的存储地址和各数据单元DU的构成图;
图10为本发明实施例提供的第8行图像数据前64个像素在编码行缓冲模块中的写地址示意图;
图11为本发明实施例提供的第8行图像数据第64~第127个像素在编码行缓冲模块中的写地址示意图;
图12为本发明实施例提供的第8行图像数据共n个像素在编码行缓冲模块中的写地址示意图;
图13为本发明实施例提供的第0行~第7行图像数据在编码行缓冲模块中存储地址和各数据单元DU的读取地址的示意图;
图14为本发明实施例提供的第8行数据在编码行缓冲模块中存储地址示意图。
具体实施方式
下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。
本发明实施例提供一种减少JPEG编解码行缓冲容量的方法,该方法使用编解码行缓冲区域的读写地址变换逻辑,将所需行缓冲空间减少了一半,也即,编解码阶段均可通过一块行缓冲模块实现行数据缓冲。
在本发明实施例中,假设输入图像分辨率为n x m,即每帧图像有m行,每行有n列,编解码阶段所使用的行缓冲模块均可存取8行图像数据,行缓冲模块(RAM)空间各访问地址为s,s的地址范围为0~8n-1。
编码阶段的流程如图8所示,主要包括:
1、初始状态,RAM内容为空,地址指针s为空;
2、对于读入的一帧图像,将其第0~第7行图像数据依次写入编码行缓冲模块,编码行缓冲模块中地址指针从s=0开始,每写入一个像素数据地址指针s增加1,因此,写地址指针依次变化为s=0,1,2,…,8n-1。
3、当前8行图像数据写入后,按照JPEG编码所需的8x8的数据单元送出图像数据。
本发明实施例中,写入8行图像数据后,按照JPEG编码所需的8×8的数据单元DU送出图像数据,如前所述,图像的分辨率列数为n,则每一行图像数据均包含n个像素,按照8×8的方式写入每一行图像数据,则8行图像数据共有n/8个DU。8×8的数据单元的编号如下:第1行编号为D00、D01,...,D07;第2行编号为D10、D11,...,D17;依次类推,第8行编号为D70、D71,...,D77。具体如表1所示:
表1数据单元中数据编号
n/8个数据单元中各图像数据在编码行缓冲模块的读地址如下:
DU0中各图像数据在编码行缓冲模块的读地址如下:
D00~D07:读地址依次为0~7;
D10~D17:读地址依次为n~n+7;
D20~D27:读地址依次为2n~2n+7;
D30~D37:读地址依次为3n~3n+7;
D40~D47:读地址依次为4n~4n+7;
D50~D57:读地址依次为5n~5n+7;
D60~D67:读地址依次为6n~6n+7;
D70~D77:读地址依次为7n~7n+7;
DU1中各图像数据在编码行缓冲模块的读地址如下:
D00~D07:读地址依次为8~15;
D10~D17:读地址依次为n+8~n+15;
D20~D27:读地址依次为2n+8~2n+15;
D30~D37:读地址依次为3n+8~3n+15;
D40~D47:读地址依次为4n+8~4n+15;
D50~D57:读地址依次为5n+8~5n+15;
D60~D67:读地址依次为6n+8~6n+15;
D70~D77:读地址依次为7n+8~7n+15;
依次类推,DU(n/8)-1中各图像数据在编码行缓冲模块的读地址如下:
D00~D07:读地址依次为(n-8)~(n-1);
D10~D17:读地址依次为(2n-8)~(2n-1);
D20~D27:读地址依次为(3n-8)~(3n-1);
D30~D37:读地址依次为(4n-8)~(4n-1);
D40~D47:读地址依次为(5n-8)~(5n-1);
D50~D57:读地址依次为(6n-8)~(6n-1);
D60~D67:读地址依次为(7n-8)~(7n-1);
D70~D77:读地址依次为(8n-8)~(8n-1)。
DU0~DU(n/8)-1中所有D00~D07构成第0行图像,DU0~DU(n/8)-1中所有D10~D17构成第1行图像,...,DU0~DU(n/8)-1中所有D70~D77构成第7行图像。当第7行图像数据接收完毕后,就开始向编码模块传送上述DU0、DU1、...、DU8的数据开始进行图像编码。
本发明实施例中,上述第0~第7行图像中的像素数据在编码行缓冲模块中的存储地址和各数据单元DU的构成如图9所示。
4、编码行缓冲模块开始写入第8~第15行图像数据,并按照控制读写地址变换逻辑,来控制数据存取调度。
本发明实施例中,当按照JPEG编码所需的8x8的数据单元送出第0~第7行图像数据时,开始依次写入第8~第15行图像数据,为了避免覆盖还没有传送给JPEG编码模块进行编码的部分前8行图像数据,第8~第15行像素数据写入编码行缓冲空间时,编码行缓冲模块中地址指针从s=0开始,每写入一个像素数据时地址指针s不再是只进行增加1的变化,而要根据数据单元是以8x8共64个像素为一组的结构来变化。
第8行前64个像素数据在编码行缓冲模块中写地址的指针进行如下变化:
第8行图像数据中第0~第7个像素,写地址依次为:0~7,
第8行图像数据中第8~第15个像素,写地址依次为:n~n+7,
第8行图像数据中第16~第23个像素,写地址依次为:2n~2n+7,
第8行图像数据中第24~第31个像素,写地址依次为:3n~3n+7,
第8行图像数据中第32~第39个像素,写地址依次为:4n~4n+7,
第8行图像数据中第40~第47个像素,写地址依次为:5n~5n+7,
第8行图像数据中第48~第55个像素,写地址依次为:6n~6n+7,
第8行图像数据中第56~第63个像素,写地址依次为:7n~7n+7;
第8行图像数据前64个像素在编码行缓冲模块中的写地址如图10所示。
第8行图像像素第64~第127个共64个像素数据在编码行缓冲模块中写地址的指针进行如下变化:
第8行图像数据中第64~第71个像素,写地址依次为:8~15,
第8行图像数据中第72~第79个像素,写地址依次为:n+8~n+15,
第8行图像数据中第80~第87个像素,写地址依次为:2n+8~2n+15,
第8行图像数据中第88~第95个像素,写地址依次为:3n+8~3n+15,
第8行图像数据中第96~第103个像素,写地址依次为:4n+8~4n+15,
第8行图像数据中第104~第111个像素,写地址依次为:5n+8~5n+15,
第8行图像数据中第112~第119个像素,写地址依次为:6n+8~6n+15,
第8行图像数据中第120~第127个像素,写地址依次为:7n+8~7n+15;第8行图像数据第64~第127个像素在编码行缓冲模块中的写地址如图11所示。
依次类推,第8行图像数据最后64个像素数据在编码行缓冲模块中写地址的指针将进行如下变化:
第8行图像数据中第n-64~第n-57个像素,写地址依次为:n/8-8~n/8-1;
第8行图像数据中第n-56~第n-49个像素,写地址依次为:n+n/8-8~n+n/8-1;
第8行图像数据中第n-48~第n-41个像素,写地址依次为:2n+n/8-8~2n+n/8-1;
第8行图像数据中第n-40~第n-33个像素,写地址依次为:3n+n/8-8~3n+n/8-1;
第8行图像数据中第n-32~第n-25个像素,写地址依次为:4n+n/8-8~4n+n/8-1;
第8行图像数据中第n-24~第n-17个像素,写地址依次为:5n+n/8-8~5n+n/8-1;
第8行图像数据中第n-16~第n-9个像素,写地址依次为:6n+n/8-8~6n+n/8-1;
第8行图像数据像素第n-8~第n-1个像素,写地址依次为:7n+n/8-8~7n+n/8-1;
第8行图像数据这一行共n个像素在编码行缓冲模块中的写地址如图12所示。
综上所述,第8行图像数据开始写入行缓冲时,其第i个像素数据的写地址为:
S(i)=quotient(mod(i,64),8)*n+quotient(i,64)*8+mod(i,8);
其中,函数mod(被除数,除数)表示返回两数相处的余数;函数quotient(被除数,除数)表示返回两数相除的商;i∈[0,n-1]。
依次类推,第15行图像数据开始写入行缓冲时,其第i个像素数据的写地址为:
S(i)=quotient(mod(i,64),8)*n+quotient(i,64)*8+7n/8+mod(i,8);
即第8~第15行图像数据中,第f行第i个像素数据的写地址为:
S(i,f)=quotient(mod(i,64),8)*n+quotient(i,64)*8+mod(f,8)*n/8+mod(i,8);
其中,f∈[8,15]。
当第15行图像数据写入完毕后,第0~第7行图像数据也已经全部输出进行了JPEG编码处理。
5、第8~第15行图像数据写入后,按照JPEG编码所需的8×8的DU送出图像数据。
本发明实施例中,第8~第15行图像数据写入后,按照JPEG编码所需的8×8的DU送出图像数据,各个DU中各图像数据在编码行缓冲模块的读地址如下:
DU0中各图像数据在编码行缓冲模块的读地址如下:
D00~D07:读地址依次为0~7;
D10~D17:读地址依次为n/8~n/8+7;
D20~D27:读地址依次为2n/8~2n/8+7;
D30~D37:读地址依次为3n/8~3n/8+7;
D40~D47:读地址依次为4n/8~4n/8+7;
D50~D57:读地址依次为5n/8~5n/8+7;
D60~D67:读地址依次为6n/8~6n/8+7;
D70~D77:读地址依次为7n/8~7n/8+7;
DU1中各图像数据在编码行缓冲模块的读地址如下:
D00~D07:读地址依次为8~15;
D10~D17:读地址依次为n/8+8~n/8+15;
D20~D27:读地址依次为2n/8+8~2n/8+15;
D30~D37:读地址依次为3n/8+8~3n/8+15;
D40~D47:读地址依次为4n/8+8~4n/8+15;
D50~D57:读地址依次为5n/8+8~5n/8+15;
D60~D67:读地址依次为6n/8+8~6n/8+15;
D70~D77:读地址依次为7n/8+8~7n/8+15;
依次类推,DU(n/8)-1中各图像数据在编码行缓冲模块的读地址如下:
D00~D07:读地址依次为n/8-8~n/8-1;
D10~D17:读地址依次为2n/8-8~2n/8-1;
D20~D27:读地址依次为3n/8-8~3n/8-1;
D30~D37:读地址依次为4n/8-8~4n/8-1;
D40~D47:读地址依次为5n/8-8~5n/8-1;
D50~D57:读地址依次为6n/8-8~6n/8-1;
D60~D67:读地址依次为7n/8-8~7n/8-1;
D70~D77:读地址依次为n-8~n-1。
6、对于后续的行图像数据,根据行号所属范围,按照第0~第7行或者第8~第15行的方式来进行读写地址控制,直到整帧图像数据接收完毕,并依次送到JPEG编码模块。
那么对于一副输入图像分辨率为n x m,即每帧图像有m行,每行有n列,
1)当输入图像数据为第j行,j∈[(2t+1)*8,(2t+1)*8+7],t=0~m/16,则第j行第i个像素数据的写地址为(如输入的第8~第15行,第24~第32行):
S(i,j)=quotient(mod(i,64),8)*n+quotient(i,64)*8+mod(j,8)*n/8+mod(i,8);
2)当输入图像数据为第j行,j∈[2*t*8,2*t*8+7],t=0~m/16,则第j行第i个像素数据的写地址为(如输入的第0~第7行,第16~第23行):
S(i,j)=n*mod(j,16)+i;
其中i∈[0,n-1]。
示例性的,在完成步骤5之后,应当开始写入第16行图像数据,也即j=16,行号所属范围属于上述第2)种情况,则直接按照公式来计算第16行第i个像素数据的写地址:
S(i,16)=n*mod(16,16)+i。
解码阶段采用与编码阶段相同的读写地址变换逻辑,从而基于一块解码行缓冲模块实现解码阶段的行数据缓冲;也即,实现了和传统JPEG编解码所需行缓冲空间减少一半的目的。
基于如上地址变换公式的推导,设计JPEG编解码行缓冲的RAM地址读写产生逻辑,采用了一块RAM进行数据的写入以及读出,通过控制读写地址变换逻辑,精确控制数据存取调度。该电路结构避免了芯片面积的浪费以及功耗损失。以分辨率640x480的图像为例,即图像有480行,每行有640列像素,对每个像素的亮度Y进行编码,则可存储8行图像数据的行缓冲地址范围为0~5119共5120个地址单元(640*8=5120),每8行数据可以产生80个编码数据单元DU(640/8=80),整帧图像共有480/8*80=4800个编码数据单元DU,对该图像进行编码压缩时,行缓冲中像素数据读写地址的硬件逻辑变化操作如下所述:
当图像的第0行~第7行这前8行像素数据,逐个像素送入到编码行缓冲模块时,其在编码行缓冲模块中存储地址和各数据单元DU的读取地址如图13所示。
当读出DU0~DU9这10个数据单元进行编码后,相当于总共送给了64*10=640个像素数据进行编码,那么行缓冲的地址空间0~79、640~719、1280~1359、1920~1999、2560~2639、3200~3279、3840~3919、4480~4559,这640个地址空间可以更新存储数据,所以此时第8行数据就可以存放在这些地址对应的存储空间中,如图14所示。
同样,第9行图像数据将在DU10~DU19这10个数据单元读出后,存放在行缓冲的地址空间80~159、720~779、1360~1439、2000~2079、2640~2719、3280~3359、3920~3999、4560~4639这640个地址空间中;
在DU70~DU79这10个数据单元读出后,行缓冲中原先存放的第0~7行图像数据已经完全都读取完毕,并同时送入到JPEG编码模块进行编码,那么对于接收到的第15行图像数据将存放在行缓冲的地址空间560~639、1200~1279、1840~1919、2480~2559、3120~3199、3760~3839、4400~4479、5040~5119这640个地址空间中;
第8行~第15行图像数据存储到行缓冲以后,将开始送出数据单元DU,对应DU80~DU159共80个数据单元;
DU80的数据将从如下地址读出:0~7、80~87、160~167、240~247、320~327、400~407、480~487、560~567;
DU81的数据将从如下地址读出:8~15、88~95、168~176、248~255、328~335、408~415、488~495、568~575;
。。。
DU89的数据将从如下地址读出:72~79、152~159、232~239、312~319、392~399、472~479、560~567、632~639;
相当于DU80~DU89全部读出后,行缓冲地址空间0~639的数据都可以更新,此时接收的第16行像素数据,就可以依次存入到0~639地址空间中;
而当DU90~DU99数据单元全部读出后,行缓冲地址空间640~1279的数据都可以更新,此时接收的第17行像素数据,就可以依次存入到640~1279地址空间中;依次操作,在第8~15行对应的最后10个数据单元DU150~DU159全部读出后,行缓冲地址空间4480~5119的数据都可以更新,此时接收的第23行像素数据,就可以依次存入到4480~5119地址空间中;接下来,接收到这第16~23行图像数据时,行缓冲读写地址的操作等同于第0~7行;接收第24~31行图像数据时,行缓冲读写地址的操作等同于第8~15行。。。依此反复,完成整帧640x480分辨率的图像数据接收和编码。
该硬件逻辑操作保证在读与写分时进行的基础上,数据写入与读出地址之间不产生冲突,在写入8line数据后,按照8x8窗口的方式将数据读出,完成一行(数据个数)数据读出后,立即对读出完成的地址写入新的数据,进而以此反复循环读写。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例可以通过软件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,上述实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。
Claims (7)
1.一种减少JPEG编解码行缓冲容量的方法,其特征在于,包括:
编码阶段,对于读入的一帧图像,将其第0~第7行图像数据依次写入编码行缓冲模块,编码行缓冲模块中地址指针从s=0开始,每写入一个像素数据地址指针s增加1;当前8行图像数据写入后,按照JPEG编码所需的8x8的数据单元送出图像数据;同时,编码行缓冲模块开始写入第8~第15行图像数据,并按照控制读写地址变换逻辑,来控制数据存取调度;对于后续的行图像数据,根据行号所属范围,按照第0~第7行或者第8~第15行的方式来进行读写地址控制,从而基于一块编码行缓冲模块实现编码阶段的行数据缓冲;
解码阶段采用与编码阶段相同的读写地址变换逻辑,从而基于一块解码行缓冲模块实现解码阶段的行数据缓冲。
2.根据权利要求1所述的一种减少JPEG编解码行缓冲容量的方法,其特征在于,
编码阶段,当编码行缓冲模块写入8行图像数据后,按照JPEG编码所需的8×8的数据单元DU送出图像数据,8行图像数据共有n/8个DU;假设图像数据的分辨率为n x m,m、n分别为行、列总数;
8×8的数据单元的编号如下:第1行编号为D00、D01,...,D07;第2行编号为D10、D11,...,D17;依次类推,第8行编号为D70、D71,...,D77。
3.根据权利要求2所述的一种减少JPEG编解码行缓冲容量的方法,其特征在于,n/8个数据单元中各图像数据在编码行缓冲模块的读地址如下:
DU0中各图像数据在编码行缓冲模块的读地址如下:
D00~D07:读地址依次为0~7;
D10~D17:读地址依次为n~n+7;
D20~D27:读地址依次为2n~2n+7;
D30~D37:读地址依次为3n~3n+7;
D40~D47:读地址依次为4n~4n+7;
D50~D57:读地址依次为5n~5n+7;
D60~D67:读地址依次为6n~6n+7;
D70~D77:读地址依次为7n~7n+7;
DU1中各图像数据在编码行缓冲模块的读地址如下:
D00~D07:读地址依次为8~15;
D10~D17:读地址依次为n+8~n+15;
D20~D27:读地址依次为2n+8~2n+15;
D30~D37:读地址依次为3n+8~3n+15;
D40~D47:读地址依次为4n+8~4n+15;
D50~D57:读地址依次为5n+8~5n+15;
D60~D67:读地址依次为6n+8~6n+15;
D70~D77:读地址依次为7n+8~7n+15;
依次类推,DU(n/8)-1中各图像数据在编码行缓冲模块的读地址如下:
D00~D07:读地址依次为(n-8)~(n-1);
D10~D17:读地址依次为(2n-8)~(2n-1);
D20~D27:读地址依次为(3n-8)~(3n-1);
D30~D37:读地址依次为(4n-8)~(4n-1);
D40~D47:读地址依次为(5n-8)~(5n-1);
D50~D57:读地址依次为(6n-8)~(6n-1);
D60~D67:读地址依次为(7n-8)~(7n-1);
D70~D77:读地址依次为(8n-8)~(8n-1)。
4.根据权利要求3所述的一种减少JPEG编解码行缓冲容量的方法,其特征在于,
当按照JPEG编码所需的8x8的数据单元送出第0~第7行图像数据时,开始依次写入第8~第15行图像数据,编码行缓冲模块中地址指针从s=0开始,每写入一个像素数据时地址指针s根据数据单元以8x8共64个像素为一组的结构来变化;
第8行前64个像素数据在编码行缓冲模块中写地址为:
第8行图像数据中第0~第7个像素,写地址依次为:0~7,
第8行图像数据中第8~第15个像素,写地址依次为:n~n+7,
第8行图像数据中第16~第23个像素,写地址依次为:2n~2n+7,
第8行图像数据中第24~第31个像素,写地址依次为:3n~3n+7,
第8行图像数据中第32~第39个像素,写地址依次为:4n~4n+7,
第8行图像数据中第40~第47个像素,写地址依次为:5n~5n+7,
第8行图像数据中第48~第55个像素,写地址依次为:6n~6n+7,
第8行图像数据中第56~第63个像素,写地址依次为:7n~7n+7;
第8行图像像素第64~第127个像素数据在编码行缓冲模块中写地址为:
第8行图像数据中第64~第71个像素,写地址依次为:8~15,
第8行图像数据中第72~第79个像素,写地址依次为:n+8~n+15,
第8行图像数据中第80~第87个像素,写地址依次为:2n+8~2n+15,
第8行图像数据中第88~第95个像素,写地址依次为:3n+8~3n+15,
第8行图像数据中第96~第103个像素,写地址依次为:4n+8~4n+15,
第8行图像数据中第104~第111个像素,写地址依次为:5n+8~5n+15,
第8行图像数据中第112~第119个像素,写地址依次为:6n+8~6n+15,
第8行图像数据中第120~第127个像素,写地址依次为:7n+8~7n+15;
依次类推,第8行图像数据最后64个像素数据在编码行缓冲模块中写地址为:
第8行图像数据中第n-64~第n-57个像素,写地址依次为:n/8-8~n/8-1;
第8行图像数据中第n-56~第n-49个像素,写地址依次为:n+n/8-8~n+n/8-1;
第8行图像数据中第n-48~第n-41个像素,写地址依次为:2n+n/8-8~2n+n/8-1;
第8行图像数据中第n-40~第n-33个像素,写地址依次为:3n+n/8-8~3n+n/8-1;
第8行图像数据中第n-32~第n-25个像素,写地址依次为:4n+n/8-8~4n+n/8-1;
第8行图像数据中第n-24~第n-17个像素,写地址依次为:5n+n/8-8~5n+n/8-1;
第8行图像数据中第n-16~第n-9个像素,写地址依次为:6n+n/8-8~6n+n/8-1;
第8行图像数据像素第n-8~第n-1个像素,写地址依次为:7n+n/8-8~7n+n/8-1;
则第8行图像数据开始写入时,第i个像素数据的写地址为:
S(i)=quotient(mod(i,64),8)*n+quotient(i,64)*8+mod(i,8);
其中,函数mod(被除数,除数)表示返回两数相处的余数;函数quotient(被除数,除数)表示返回两数相除的商;i∈[0,n-1]。
5.根据权利要求4所述的一种减少JPEG编解码行缓冲容量的方法,其特征在于,第15行图像数据开始写入时,第i个像素数据的写地址为:
S(i)=quotient(mod(i,64),8)*n+quotient(i,64)*8+7n/8+mod(i,8);
即第8~第15行图像数据中,第j行第i个像素数据的写地址为:
S(i,j)=quotient(mod(i,64),8)*n+quotient(i,64)*8+mod(j,8)*n/8+mod(i,8);
其中,j∈[8,15];
当第15行图像数据写入完毕后,第0~第7行图像数据也已经全部输出进行了JPEG编码处理。
6.根据权利要求5所述的一种减少JPEG编解码行缓冲容量的方法,其特征在于,第8~第15行图像数据写入后,按照JPEG编码所需的8×8的DU送出图像数据,各个DU中各图像数据在编码行缓冲模块的读地址如下:
DU0中各图像数据在编码行缓冲模块的读地址如下:
D00~D07:读地址依次为0~7;
D10~D17:读地址依次为n/8~n/8+7;
D20~D27:读地址依次为2n/8~2n/8+7;
D30~D37:读地址依次为3n/8~3n/8+7;
D40~D47:读地址依次为4n/8~4n/8+7;
D50~D57:读地址依次为5n/8~5n/8+7;
D60~D67:读地址依次为6n/8~6n/8+7;
D70~D77:读地址依次为7n/8~7n/8+7;
DU1中各图像数据在编码行缓冲模块的读地址如下:
D00~D07:读地址依次为8~15;
D10~D17:读地址依次为n/8+8~n/8+15;
D20~D27:读地址依次为2n/8+8~2n/8+15;
D30~D37:读地址依次为3n/8+8~3n/8+15;
D40~D47:读地址依次为4n/8+8~4n/8+15;
D50~D57:读地址依次为5n/8+8~5n/8+15;
D60~D67:读地址依次为6n/8+8~6n/8+15;
D70~D77:读地址依次为7n/8+8~7n/8+15;
依次类推,DU(n/8)-1中各图像数据在编码行缓冲模块的读地址如下:
D00~D07:读地址依次为n/8-8~n/8-1;
D10~D17:读地址依次为2n/8-8~2n/8-1;
D20~D27:读地址依次为3n/8-8~3n/8-1;
D30~D37:读地址依次为4n/8-8~4n/8-1;
D40~D47:读地址依次为5n/8-8~5n/8-1;
D50~D57:读地址依次为6n/8-8~6n/8-1;
D60~D67:读地址依次为7n/8-8~7n/8-1;
D70~D77:读地址依次为n-8~n-1。
7.根据权利要求4-6任一项所述的一种减少JPEG编解码行缓冲容量的方法,其特征在于,根据行号所属范围,按照第0~第7行或者第8~第15行的方式来进行读写地址控制包括:
如果行号j∈[(2t+1)*8,(2t+1)*8+7],t=0~m/16,则按照第8~第15行的方式来进行读写地址控制;第j行第i个像素数据的写地址为:
S(i,j)=quotient(mod(i,64),8)*n+quotient(i,64)*8+mod(j,8)*n/8+mod(i,8);
如果行号j∈[2*t*8,2*t*8+7],则按照第0~第7行的方式来进行读写地址控制;第j行第i个像素数据的写地址为:
S(i,j)=n*mod(j,16)+i。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810916908.5A CN108881923B (zh) | 2018-08-13 | 2018-08-13 | 减少jpeg编解码行缓冲容量的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810916908.5A CN108881923B (zh) | 2018-08-13 | 2018-08-13 | 减少jpeg编解码行缓冲容量的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108881923A true CN108881923A (zh) | 2018-11-23 |
CN108881923B CN108881923B (zh) | 2021-03-12 |
Family
ID=64317874
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810916908.5A Active CN108881923B (zh) | 2018-08-13 | 2018-08-13 | 减少jpeg编解码行缓冲容量的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108881923B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210241024A1 (en) * | 2020-02-02 | 2021-08-05 | Emza Visual Sense Ltd. | Jpeg classifier |
WO2022000324A1 (zh) * | 2020-06-30 | 2022-01-06 | 深圳市大疆创新科技有限公司 | 数据编码方法、数据解码方法、数据处理方法、编码器、解码器、系统、可移动平台与计算机可读介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1469249A (zh) * | 2002-06-28 | 2004-01-21 | 松下电器产业株式会社 | 像素数据块生成装置及像素数据块生成方法 |
CN1649383A (zh) * | 2004-01-29 | 2005-08-03 | 三洋电机株式会社 | 图像信号处理装置和图像信号处理方法 |
US20090295817A1 (en) * | 2008-06-03 | 2009-12-03 | Chunjie Yu | Method for reading and writing image data in memory |
-
2018
- 2018-08-13 CN CN201810916908.5A patent/CN108881923B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1469249A (zh) * | 2002-06-28 | 2004-01-21 | 松下电器产业株式会社 | 像素数据块生成装置及像素数据块生成方法 |
CN1649383A (zh) * | 2004-01-29 | 2005-08-03 | 三洋电机株式会社 | 图像信号处理装置和图像信号处理方法 |
US20090295817A1 (en) * | 2008-06-03 | 2009-12-03 | Chunjie Yu | Method for reading and writing image data in memory |
CN101599167A (zh) * | 2008-06-03 | 2009-12-09 | 株式会社理光 | 存储器的存取方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210241024A1 (en) * | 2020-02-02 | 2021-08-05 | Emza Visual Sense Ltd. | Jpeg classifier |
WO2022000324A1 (zh) * | 2020-06-30 | 2022-01-06 | 深圳市大疆创新科技有限公司 | 数据编码方法、数据解码方法、数据处理方法、编码器、解码器、系统、可移动平台与计算机可读介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108881923B (zh) | 2021-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100287624B1 (ko) | 화상데이타의압축,해제방법및그장치 | |
CN105933708B (zh) | 一种数据压缩和解压缩的方法和装置 | |
EP2721816A1 (en) | Method and device for encoding and decoding an image | |
CN110933445B (zh) | 一种基于系数矩阵变换的dct运算方法及其变换装置 | |
CN108881923A (zh) | 减少jpeg编解码行缓冲容量的方法 | |
US6721455B1 (en) | Method and apparatus for icon compression and decompression | |
JP3857509B2 (ja) | 画像処理装置、画像処理システム、画像符号化方法、及び記憶媒体 | |
JPH0772839A (ja) | カラービデオディスプレイ装置 | |
CN101547352A (zh) | 影像压缩方法和解压缩方法 | |
JPH08205144A (ja) | 画像符号化装置 | |
JP3231800B2 (ja) | 画像符号化装置及び画像符号化方法 | |
Ahmad et al. | FPGA based implementation of baseline JPEG decoder | |
JP2003189109A (ja) | 画像処理装置及び方法、並びにコンピュータ・プログラム | |
US20060023952A1 (en) | Method and apparatus for transforming the dimensions of an image | |
GB2333201A (en) | Video decoder for high picture quality | |
US20040136600A1 (en) | Visually lossless still image compression for RGB, YUV, YIQ, YCrCb, K1K2K3 formats | |
JP3170312B2 (ja) | 画像処理装置 | |
EP1233375B1 (en) | Image data encoding apparatus and method | |
CN101247474B (zh) | 一种图像处理的装置及方法 | |
JP2003348355A (ja) | 画像処理装置及びその制御方法 | |
JPH0531974A (ja) | 画像処理装置 | |
CN100534187C (zh) | 联合图像专家组影像的像素数据的输出缓冲方法 | |
Aravind et al. | On implementing the JPEG still-picture compression algorithm | |
JPH08167856A (ja) | ランレングス符号の復号回路 | |
JP3170313B2 (ja) | 画像処理装置 |
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 |