CN1319276C - 一种减小在线图像压缩数据缓冲区大小的缓冲区读写方法 - Google Patents
一种减小在线图像压缩数据缓冲区大小的缓冲区读写方法 Download PDFInfo
- Publication number
- CN1319276C CN1319276C CNB2005100251956A CN200510025195A CN1319276C CN 1319276 C CN1319276 C CN 1319276C CN B2005100251956 A CNB2005100251956 A CN B2005100251956A CN 200510025195 A CN200510025195 A CN 200510025195A CN 1319276 C CN1319276 C CN 1319276C
- Authority
- CN
- China
- Prior art keywords
- read
- write
- fritter
- camera sensor
- line data
- 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.)
- Active
Links
Images
Abstract
本发明提供一种减小在线图像压缩数据缓冲区大小的缓冲区读写方法,数据缓冲区首先水平写入A行数据,块处理模块进行垂直的读取,而垂直读取完的A个小块可以组成一个垂直小块,可以进行后续行的垂直写入,保存一行新的数据。该方法可对同一块缓冲区进行巧妙的分区和读写的合理分配,在一个可缓冲区中完成了原本需要两块缓冲区完成的功能,降低了最终的芯片面积和产品成本。
Description
技术领域
本发明涉及一种减小在线图像压缩数据缓冲区的缓冲区读写方法。
背景技术
大多数静态图像压缩标准(如JPEG,JPEG2000)和动态图像压缩标准(如MPEG1,MPEG2,MPEG4,H263等)中,首先对图像的原始数据进行时域到频域的变换,再对频域信号进行压缩。其中时域到频域的变换有一个共有特征:对一定大小的块(如8×8,共64个像素)进行变换。此外,某些标准中,还有最小编码单元的限制(Minimum Code Unit,MCU),要求每次获得一个MCU的数据,如JPEG YUV4:2:0的图像MCU为16×16像素的块。我们称DCT等对图像中一定大小的块依次进行操作的运算或处理模块为“块处理模块”。
数码相机传感器产生的数据是一行接着一行传输的,而JPEG进行离散余弦变换(Discrete Cosine Transform,DCT)变换时是以8×8的小块为单位进行操作,因此DCT需要同时使用8行的数据。对于大小为1280×1024的130万像素图象一般的在线DCT压缩数据缓冲区设计采用两个缓冲区的设计,(每个缓冲区可存储8行共8×1280个像素的数据),进行乒乓读写(即从一块准备好8行数据的缓冲区读取数据时,需要另一块缓冲区来准备后续的8行数据)为DCT提供8×8的数据单元。两个缓冲区的乒乓读写方式如图1所示,其中,→表示“写”的过程,而
表示“读”的过程。
这样的设计需要的缓冲区大,从而导致设计的集成电路芯片面积较大,从而成本也高。
发明内容
本发明所要解决的技术问题是提供一种减小百万像素在线DCT压缩数据缓冲区大小的方法,该方法可对同一块缓冲区进行巧妙的分区和读写的合理分配,在一个可存储8行共8×1280个像素数据的缓冲区中完成了原本需要两块缓冲区完成的功能,降低了最终的芯片面积和产品成本。
为了解决上述技术问题,本发明所采用的技术方案是:提供一种减小在线图像压缩数据缓冲区大小的缓冲区读写方法,其从数码相机传感器的行数据得到为块处理模块提供A×N的块数据,其中A、N可为任何自然数,包括如下步骤:首先将缓冲区分成A×A等分;
步骤1:对数码相机传感器的行数据进行水平写入,直到写入该数码相机传感器的行数据的第A行的1/A行数据,这段时间缓冲区只能被写,不能被读;
步骤2:数码相机传感器在写入第A行剩余的(A-1)/A行数据过程中,块处理模块将左边第一个垂直小块列读走;
步骤3-5:缓冲区从步骤2进入垂直写、垂直读的状态,经过A-1个垂直小块列读写,到垂直读走最后一列;
步骤6:当数码相机传感器的行数据垂直写入到第2A行的前1/A行数据过程中,缓冲区只能被写,不能被读;
步骤7:当数码相机传感器的行数据写到第2A行剩余的(A-1)/A行数据过程中,块处理模块需要将最上方的一个水平小块行读走;
步骤8-10:缓冲区从步骤7进入水平写、水平读的状态;经过A-1个水平小块行读写,到水平读走最后一行;
步骤11:当数码相机传感器的行数据水平写入第3A行的前1/A行数据过程中,缓冲区只能被写,不能被读;
步骤12:缓冲区的读写状态又重新回到类似步骤2,从而完成2A行数据的从行数据转换成A×A个像素块数据的过程。
进一步地,本发明还提供另一种减小在线图像压缩数据缓冲区大小的缓冲区读写方法,其从数码相机传感器的行数据得到为块处理模块提供B×N的块数据,其中,B,N可为任何自然数,包括如下步骤:首先将缓冲区分成B×C等分,B表示行数,C表示列数,其中C大于B,且B和C都为S的幂,S为大于1的自然数;
步骤1:对数码相机传感器的行数据进行水平写入,直到写入该数码相机传感器的行数据的第B行的第1个小块,这段时间缓冲区只能被写,不能被读;
步骤2:数码相机传感器在写入第B行的第1小块后,块处理模块将第1个垂直小块的读走;数码相机传感器在写入第B行的第2小块后,块处理模块将第2个垂直小块列读走;在数码相机传感器开始写入第(B+1)行的第1个小块之前,块处理模块必须读走第1个垂直小块列;
步骤3:此后,块处理模块依次将垂直小块列读走,直至将这B行的最后一个垂直小块列读走;每读走一个垂直小块列,数码相机传感器可垂直写入B/C行像素数据,共B个小块;对于重映射后的次序表而言,数码相机传感器是水平写入下一个B行图像的像素数据;
步骤4:在数码相机传感器写入第2B行的第1个小块期间,缓冲区只能被写,不能被读;
步骤5:重映射次序表,缓冲区的读写状态又重新回到类似步骤2,从而完成B行数据的从行数据转换成B×N个像素块数据的过程。
本发明支持在线DCT压缩,不提高DCT处理能力的要求的情况下,使所需的缓冲区减少为一般设计的一半。
附图说明
图1是现有的乒乓缓冲区读写示意图;
图2是本发明的旋转缓冲区分块结构;
图3是旋转缓冲区读写状态转换图。
具体实施方式
如图2所示:本发明的缓冲区(面积为:8×1280)按水平和垂直方向分别8等分,形成等分的64个小块,每个小块可以存储160像素的数据。在水平写入数据时,水平的8个小块可以组成一个水平小块,保存一行数据。在水平写入8行数据后,DCT进行垂直的读取,而垂直读取完的8个小块可以组成一个垂直小块,可以进行后续行的垂直写入,保存一行新的数据。
如图3所示:本发明的缓冲区的读写操作方法包括如下步骤:
步骤1:对数码相机传感器的行数据进行水平写入,直到写入第8行的1/8行数据,这段时间缓冲区只能被写,不能被读;
步骤2:数码相机传感器在写入第8行剩余的7/8行数据过程中,DCT模块将左边第一个垂直小块列的8×160像素数据读走;
步骤3-5:旋转缓冲区从步骤2进入垂直写、垂直读的状态,经过七个垂直小块列读写,到垂直读走最后一列;
步骤6:当数码相机传感器的行数据垂直写入到第16行的前1/8行数据过程中,缓冲区只能被写,不能被读;
步骤7:当数码相机传感器的行数据写到第16行剩余的7/8行数据过程中,DCT模块需要将最上方的一个水平小块行的8×160读走;
步骤8-10:旋转缓冲区从步骤7进入水平写、水平读的状态。经过七个水平小块行读写,到水平读走最后一行;
步骤11:当数码相机传感器的行数据水平写入第24行的前1/8行数据过程中,缓冲区只能被写,不能被读;
步骤12:旋转缓冲区的读写状态又重新回到类似步骤2,从而完成16行数据的从行数据转换成8×8个像素块数据的过程。
以上具体实施例以JPEG中为例,阐述一种减小在线图像压缩数据缓冲区的缓冲区读写方法,但本发明并不局限JPEG,也不局限于DCT。
本发明的保护范围并不局限于以上具体的实施方式,比如,本发明并不局限于8×8数据单元,本发明还可以适用于:
1)从数码相机传感器的行数据得到为DCT提供16×16的数据单元(对YUV4:2:0的图像,JPEG的最小编码单元为16×16像素的小块);
这种情况下,我们需要一个可存储16行共16×1280个像素数据的缓冲区,并将每行分为16个小块(每块包含80个像素的数据),共16×16个小块。16×16个小块的读写操作,类似8×8个小块。
2)从数码相机传感器的行数据得到为块处理模块提供A×N的块数据(A,N可为任何自然数);
假设一行有L个像素,我们需要一个可存储A行共A×L个像素数据的缓冲区,并将每行分为A个小块,共A×A个小块(每块包含L/A个像素的数据,L必须是A*N的整数倍)。A×A个小块的读写操作,类似8×8个小块。
3)从数码相机传感器的行数据得到为块处理模块提供B×N的块数据(B,N可为任何自然数);
假设一行有L个像素,我们需要一个可存储B行共B×L个像素数据的缓冲区,并将每行分为C个小块,共B×C个小块(每块包含L/C个像素的数据,L必须是C*N的整数倍,C必须是B的整数倍)。为了便于ASIC实现,B和C通常都为2的幂。理论上,B和C都为S的幂即可(S为大于1的自然数)。
以下的例子是:将缓冲区分为4×8个小块,以提供4×N的数据块S0,S1,…,S31表示32个小块。每写入B行数据,各小块在B行图像中的位置经过了一次重映射。对于B×C中B和C相等的情况(即以上的A×A的情况),重映射在图形上是把水平行映射为垂直列,或把水平行映射为垂直列。对于B×C中B和C不相等的情况,因为缓冲区需经过大于2次重映射,才能返回初始状态,所以无法在图形上用缓冲区垂直、水平两种读写状态来表示。因此,我们将每次重映射的结果表示在如下表格中。
初始次序(次序1)为
S0 | S1 | S2 | S3 | S4 | S5 | S6 | S7 |
S8 | S9 | S10 | S11 | S12 | S13 | S14 | S15 |
S16 | S17 | S18 | S19 | S20 | S21 | S22 | S23 |
S24 | S25 | S26 | S27 | S28 | S29 | S30 | S31 |
表1:次序1
对数码相机传感器的行数据按表1水平次序写入,则各小块存储的像素数据在第一个4行图像中的位置正如表1所示。数码相机传感器在写入表1第4行的第1小块S24后,块处理模块可将表1左边第1个垂直小块的{S0,S8,S16,S24}读走。数码相机传感器在写入表1第4行的第2小块S25后,块处理模块可将表1左边第2个垂直小块列的{S1,S9,S17,S25}读走。
此后,块处理模块依次将表1的垂直小块列读走。每读走一个,数码相机传感器可垂直写入半行像素数据。在表1中半行接着半行垂直写入像素数据,等效于在表2中按水平次序写入。所以,则各小块存储的像素数据在第二个4行图像中的位置正如表2所示。
当块处理模块读走表1中的第8个垂直小块列时,数码相机传感器可写入表1中的第7个垂直小块列{S6,S14,S22,S30},相当于写入表2中第4个水平小块行的前半行。
S0 | S8 | S16 | S24 | S1 | S9 | S17 | S25 |
S2 | S10 | S18 | S26 | S3 | S11 | S19 | S27 |
S4 | S12 | S20 | S28 | S5 | S13 | S21 | S29 |
S6 | S14 | S22 | S30 | S7 | S15 | S23 | S31 |
表2:次序2
数码相机传感器在写入表2第4行的第1小块S6后,块处理模块可将左边表2第1个垂直小块的{S0,S2,S4,S6}读走。数码相机传感器在写入表2第4行的第2小块S14后,块处理模块可将表2左边第2个垂直小块列的{S8,S10,S12,S14}读走。
此后,块处理模块依次将表2的垂直小块列读走。每读走一个,数码相机传感器可垂直写入半行像素数据。在表2中半行接着半行垂直写入像素数据,等效于在表3中按水平次序写入。所以,则各小块存储的像素数据在第三个4行图像中的位置正如表3所示。
当块处理模块读走表2中的第8个垂直小块列时,数码相机传感器可写入表2中的第7个垂直小块列{S17,S19,S21,S23},相当于写入表3中第4个水平小块行的前半行。
S0 | S2 | S4 | S6 | S8 | S10 | S12 | S14 |
S16 | S18 | S20 | S22 | S24 | S26 | S28 | S30 |
S1 | S3 | S5 | S7 | S9 | S11 | S13 | S15 |
S17 | S19 | S21 | S23 | S25 | S27 | S29 | S31 |
表3:次序3
以此类推,缓冲区各小块在4行图像中的位置关系,依次从表3、表4、表5,又回到表1。
S0 | S16 | S1 | S17 | S2 | S18 | S3 | S19 |
S4 | S20 | S5 | S21 | S6 | S22 | S7 | S23 |
S8 | S24 | S9 | S25 | S10 | S26 | S11 | S27 |
S12 | S28 | S13 | S29 | S14 | S30 | S15 | S31 |
表4:次序4
S0 | S4 | S8 | S12 | S16 | S20 | S24 | S28 |
S1 | S5 | S9 | 513 | S17 | S21 | 525 | S29 |
S2 | S6 | S10 | S14 | S18 | S22 | S26 | 30 |
S3 | S7 | S11 | S15 | S19 | S23 | S27 | S31 |
表5:次序5
以上5张表具有很强的内在关系,可很方便的用ASIC设计中的比特位循环移位来实现。
首先,将任一小块的块号N(0,1,2,…,31)用二进制表示为5比特的数N=16*n4+8*n3+4*n2+2*n1+n0
(其中n4,n3,n2,n1,n0取值为1或0)
设任一小块在一个4行图像中的坐标为(X,Y),其中X=0,1,…,7,Y=0,1,…,3。X的二进制表示为3比特的数,Y的二进制表示为2比特的数。
X=4*x2+2*x1+x0
(其中x2,x1,x0取值为1或0)
Y=2*y1+y0
(其中y1,y0取值为1或0)
表1中的N与(X,Y)的对应关系可用下式表示:
{y1,y0,x2,x1,x0}={n4,n3,n2,n1,n0}
循环移位2位,可得表2中的N与(X,Y)的对应关系
{y1,y0,x2,x1,x0}={n2,n1,n0,n4,n3}
再循环移位2位,可得表3中的N与(X,Y)的对应关系
{y1,y0,x2,x1,x0}={n0,n4,n3,n2,n1}
再循环移位2位,可得表4中的N与(X,Y)的对应关系
{y1,y0,x2,x1,x0}={n3,n2,n1,n0,n4}
再循环移位2位,可得表5中的N与(X,Y)的对应关系
{y1,y0,x2,x1,x0}={n1,n0,n4,n3,n2}
再循环移位2位,又回到表1中的N与(X,Y)的对应关系
{y1,y0,x2,x1,x0}={n4,n3,n2,n1,n0}
可见,对于将缓冲区分为B×C个小块(C必须是B的整数倍),且B和C都为2的幂的情况,缓冲区在逻辑上的重映射可很方便用块号(即ASIC设计中的地址)的比特位循环移位来实现。
一般地,对于将缓冲区分为B×C个小块(C必须是B的整数倍),且B和C都为S的幂(S为大于1的自然数)的情况,设
B=S,C=S,其中b,c为自然数,且b<c。设b,c的最大公因子为g。
则缓冲区需经过(b+c)/g次重映射后,可回到初始次序。
Claims (4)
1、一种减小在线图像压缩数据缓冲区大小的缓冲区读写方法,其特征在于,从数码相机传感器的行数据得到为块处理模块提供A×N的块数据,其中A、N可为任何自然数,包括如下步骤:首先将缓冲区分成A×A等分;
步骤1:对数码相机传感器的行数据进行水平写入,直到写入该数码相机传感器的行数据的第A行的1/A行数据,这段时间缓冲区只能被写,不能被读;
步骤2:数码相机传感器在写入第A行剩余的(A-1)/A行数据过程中,块处理模块将左边第一个垂直小块列读走;
步骤3-5:缓冲区从步骤2进入垂直写、垂直读的状态,经过A-1个垂直小块列读写,到垂直读走最后一列;
步骤6:当数码相机传感器的行数据垂直写入到第2A行的前1/A行数据过程中,缓冲区只能被写,不能被读;
步骤7:当数码相机传感器的行数据写到第2A行剩余的(A-1)/A行数据过程中,块处理模块需要将最上方的一个水平小块行读走;
步骤8-10:缓冲区从步骤7进入水平写、水平读的状态。经过A-1个水平小块行读写,到水平读走最后一行;
步骤11:当数码相机传感器的行数据水平写入第3A行的前1/A行数据过程中,缓冲区只能被写,不能被读;
步骤12:缓冲区的读写状态又重新回到类似步骤2,从而完成2A行数据的从行数据转换成A×N个像素块数据的过程。
2、根据权利要求1所述的减小在线图像压缩数据缓冲区大小的缓冲区读写方法,其特征在于,所述的A为8或16。
3、一种减小在线图像压缩数据缓冲区大小的缓冲区读写方法,其特征在于,从数码相机传感器的行数据得到为块处理模块提供B×N的块数据,其中,B,N可为任何自然数,包括如下步骤:首先将缓冲区分成B×C等分,B表示行数,C表示列数,其中C大于B,且B和C都为S的幂,S为大于1的自然数,(假设一行有L个像素,则L必须是C*N的整数倍);
步骤1:对数码相机传感器的行数据进行水平写入,直到写入该数码相机传感器的行数据的第B行的第1个小块,这段时间缓冲区只能被写,不能被读;
步骤2:数码相机传感器在写入第B行的第1个小块后,块处理模块将第1个垂直小块的读走;数码相机传感器在写入第B行的第2小块后,块处理模块将第2个垂直小块列读走;在数码相机传感器开始写入第(B+1)行的第1个小块之前,块处理模块必须读走第1个垂直小块列;
步骤3:此后,块处理模块依次将垂直小块列读走,直至将这B行的最后一个垂直小块列读走;每读走一个垂直小块列,数码相机传感器可垂直写入B/C行像素数据,共B个小块;对于重映射后的次序表而言,数码相机传感器是水平写入下一个B行图像的像素数据;
步骤4:在数码相机传感器写入第2B行的第1个小块期间,缓冲区只能被写,不能被读;
步骤5:重映射次序表,缓冲区的读写状态又重新回到类似步骤2,从而完成B行数据的从行数据转换成B×N个像素块数据的过程。
4、根据权利要求3所述的减小在线图像压缩数据缓冲区大小的缓冲区读写方法,其特征在于,所述的B、C为2的幂。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100251956A CN1319276C (zh) | 2005-04-19 | 2005-04-19 | 一种减小在线图像压缩数据缓冲区大小的缓冲区读写方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100251956A CN1319276C (zh) | 2005-04-19 | 2005-04-19 | 一种减小在线图像压缩数据缓冲区大小的缓冲区读写方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1787382A CN1787382A (zh) | 2006-06-14 |
CN1319276C true CN1319276C (zh) | 2007-05-30 |
Family
ID=36784725
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100251956A Active CN1319276C (zh) | 2005-04-19 | 2005-04-19 | 一种减小在线图像压缩数据缓冲区大小的缓冲区读写方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1319276C (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102158717B (zh) * | 2010-02-11 | 2013-09-18 | 原相科技股份有限公司 | 数据转换方法及数据转换装置 |
US9749548B2 (en) * | 2015-01-22 | 2017-08-29 | Google Inc. | Virtual linebuffers for image signal processors |
CN109933560A (zh) * | 2019-03-21 | 2019-06-25 | 南京威翔科技有限公司 | 一种基于fifo与随机存储器结合的模块间流控制通信方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4852065A (en) * | 1984-06-02 | 1989-07-25 | Eric Baddiley | Data reorganization apparatus |
CN1180874A (zh) * | 1996-08-28 | 1998-05-06 | 三洋电机株式会社 | 数字照相机 |
WO1998037558A2 (en) * | 1997-02-21 | 1998-08-27 | Koninklijke Philips Electronics N.V. | Method of and arrangement for recording and reproducing video images |
-
2005
- 2005-04-19 CN CNB2005100251956A patent/CN1319276C/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4852065A (en) * | 1984-06-02 | 1989-07-25 | Eric Baddiley | Data reorganization apparatus |
CN1180874A (zh) * | 1996-08-28 | 1998-05-06 | 三洋电机株式会社 | 数字照相机 |
WO1998037558A2 (en) * | 1997-02-21 | 1998-08-27 | Koninklijke Philips Electronics N.V. | Method of and arrangement for recording and reproducing video images |
Also Published As
Publication number | Publication date |
---|---|
CN1787382A (zh) | 2006-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8989279B2 (en) | Reference data buffer for intra-prediction of digital video | |
CN101248430B (zh) | 视频处理的转置缓冲 | |
US20140086309A1 (en) | Method and device for encoding and decoding an image | |
US6720978B2 (en) | Method for storing and retrieving data that conserves memory bandwidth | |
US20080055328A1 (en) | Mapping method and video system for mapping pixel data included in the same pixel group to the same bank of memory | |
CN102868871B (zh) | 一种视频图像格式的转换方法和装置 | |
CN101212680B (zh) | 图像数据的存储器存取方法及系统 | |
JP5359569B2 (ja) | メモリのアクセス方法 | |
CN1319276C (zh) | 一种减小在线图像压缩数据缓冲区大小的缓冲区读写方法 | |
Li et al. | Reducing dram image data access energy consumption in video processing | |
US20020036937A1 (en) | Semiconductor memory apparatus | |
CN101996142B (zh) | 一种访问存储器的方法及装置 | |
CN1520187A (zh) | 用于视频数据压缩的系统和方法 | |
CN100551067C (zh) | Jpeg图像压缩时非标准图像尺寸的图像数据处理装置及方法 | |
US7181075B2 (en) | Multi-level encoding/decoding apparatus | |
JP4109151B2 (ja) | 画像処理装置 | |
Lin et al. | Low power design for MPEG-2 video decoder | |
CN101166272B (zh) | 补差点数据储存方法 | |
US20070109875A1 (en) | Data storage method and information processing device using the same | |
CN101568032B (zh) | 补差点数据储存方法 | |
CN101854541B (zh) | 视频压缩电路及其方法 | |
CN100504847C (zh) | 实现反向离散余弦转换的方法及装置 | |
CN101184227A (zh) | 除区块滤波器 | |
CN100584019C (zh) | 视频解码中变换扫描表的反变换方法及装置 | |
JP3532137B2 (ja) | データ発生回路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20161201 Address after: 361015 Xiamen Fujian torch hi tech Zone Pioneering Park Cheng Yip Building Room 201 Patentee after: Xiamen Ziguang exhibition Rui Technology Co. Ltd. Address before: 201203 Shanghai City Songtao road Pudong Zhangjiang hi tech Park No. 696 3-5 Patentee before: Zhanxun Communication (Shanghai) Co., Ltd. |