首页> 中国专利> 存取图像数据的方法及存取YUV420图像数据的方法

存取图像数据的方法及存取YUV420图像数据的方法

摘要

一种存取图像数据的方法及其存取YUV420格式的图像数据的方法。此方法使用两种不同的存取方式应用于缓存器存取JPEG图像数据,所以只需要使用一个缓存器,便可达到JPEG图像数据的实时压缩处理。

著录项

  • 公开/公告号CN101222571A

    专利类型发明专利

  • 公开/公告日2008-07-16

    原文格式PDF

  • 申请/专利权人 凌阳科技股份有限公司;

    申请/专利号CN200710001374.5

  • 发明设计人 蔡建忠;

    申请日2007-01-11

  • 分类号H04N1/41(20060101);H04N7/26(20060101);

  • 代理机构11245 北京纪凯知识产权代理有限公司;

  • 代理人沙捷

  • 地址 中国台湾新竹科学工业园区创新一路19号

  • 入库时间 2023-12-17 20:28:06

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-02-27

    未缴年费专利权终止 IPC(主分类):H04N1/41 授权公告日:20090916 终止日期:20170111 申请日:20070111

    专利权的终止

  • 2009-09-16

    授权

    授权

  • 2008-09-10

    实质审查的生效

    实质审查的生效

  • 2008-07-16

    公开

    公开

说明书

技术领域

本发明涉及一种存取图像数据的方法,且特别涉及一种只需要使用一个缓存器,便可达到JPEG图像数据的实时压缩处理的方法。

背景技术

传统上,在数字相机或是手机相机的应用里,传感器(sensor)一般采用电荷耦合器件(Charge Coupled Device,简称CCD),或是采用互补金属氧化物半导体(Complementary Metal-Oxide Semiconductor,简称CMOS)。传感器的输出,是以线扫描为基础(即Line Base)的光栅扫描(Raster Scan)方式来输出影像。然而,若是使用JPEG规格的图像数据压缩方式时,由于JPEG规格的压缩方式以方块扫描为基础(即Block Base),例如以8*8个像素(pixel)为一个扫描方块的方式来进行图像数据的压缩,因此在传感器输出图像数据以及将图像数据进行JPEG格式压缩的步骤之间,还必须多一道转换图像数据编排方式的处理程序。

图1为JPEG转换编码的流程图。请参照图1,图像数据(ImageData)必须先后经过颜色转换(Color Transfer)101、离散余弦变换(Discrete Cosine Transformation)102、量化(quantization)103、以及编码(encoding)104之后,最后形成压缩位元流(Compressed Bitstream)进而完成JPEG转换编码的动作。然而,因为图像数据必须经过离散余弦变换做转换处理的关系,以至于JPEG的编码方式必须以最小编码单元(Minimum Coded Unit,以下简称MCU)来做编码处理以形成压缩位元流,而每个MCU均为8*8个像素的影像分量。

当图像数据以JPEG所定义的YUV420压缩格式进行图像数据的压缩时,由于YUV420压缩格式的定义关系,因此图像数据会被划分为许多分量区块来进行JPEG压缩。

图2为YUV420压缩格式的定义的说明图。图2说明YUV420压缩格式是由图像数据(例如640*480像素的图像数据)中的每个16*16个像素的影像区块(每个影像区块皆不与其它影像区块重叠)中,取得4个8*8个像素的Y影像分量(Y component)区块、1个8*8个像素的U影像分量(U component)区块、以及1个8*8个像素的V影像分量(V component)区块。Y影像分量表示一个像素的亮度,U影像分量和V影像分量为表示像素的色调与饱和度。而离散余弦变换所转换的顺序依序为图2所示的Y11、Y12、Y21、Y22、U1、与V1,所以处理YUV420压缩时必须以16条线(line)的数据为基础,来将图像数据进行JPEG压缩。

传统上常用的方法,常使用二个缓冲器的架构,例如A/B缓冲器(A/B buffer)架构,以在线扫描与方块扫描(即MCU方块)之间,进行转换图像数据的编排方式。而所谓的A/B缓冲器的架构,就是当图像数据写入A缓冲器时,JPEG引擎(engine)则将B缓冲器中的数据取出,以进行压缩。而当图像数据写入B缓冲器时,JPEG引擎则将A缓冲器中的数据取出,以进行压缩。故以A/B缓冲器的架构处理YUV420压缩时,则全部所需的缓冲器的大小(Buffer Size)则为32条线,所谓32条线是指缓冲器中所规划出来的32条线状的存储空间。

图3为现有技术使用的A/B缓冲器架构的说明图。图3中的A缓冲器301与B缓冲器302均为16条线的缓冲器。在此架构之下,使用者可以利用开关303来决定将光栅扫描次序的图像数据输入至A缓冲器301或B缓冲器302,并利用开关304来输出A缓冲器301存储的像素方块数据,或输出B缓冲器302存储的像素方块数据。以及利用垂直同步信号(Vertical Sync Signal)、水平同步信号(Horizontal SyncSignal)、与时钟信号(clock)使写入地址控制器305去驱动A缓冲器301或B缓冲器302进行光栅扫描次序的图像数据的写入动作,或是驱使读取地址控制器306去驱动A缓冲器301或B缓冲器302进行像素方块数据的读取(即输出)动作。

虽然,A/B缓冲器的架构可以达成实时处理JPEG压缩,但是在数字相机(DSC)和移动通信的应用上,由于须要避免过多的功率消耗的缘故,所以必须利用静态随机存取内存(SRAM)来存储A/B缓冲器数据,只不过如此做法是非常浪费静态随机存取内存的做法。以1.3M的传感器为例,12条线的缓冲器(可称为line buffer)需要约30K字节的静态随机存取内存,占整个芯片约14%的晶粒成本(die cost),所以如何以最精简数目的缓冲器达成实时处理JPEG压缩,是多数厂商急欲解决的主要课题。

除此之外,就缓冲器本身的设计而言,由于缓冲器输入图像数据(亦可视为读取(read)图像数据)与输出图像数据(亦可视为写入(write)图像数据)的方式不同,以致于使用者必须使用A/B缓冲器的架构。故处理YUV420压缩时,由于JPEG本身的定义方式,必须16条线的数据都已经读取至缓冲器(即呈现ready状态)后才可以进行压缩,故使用A/B缓冲器的架构来进行处理JPEG压缩的实时程度也有其限制。

图4为以线扫描为基础且经过YUV420取样的640*480像素的图像数据的说明图。图5(a)为12条线的缓冲器输入图像数据的说明图。图5(b)为12条线的缓冲器输出图像数据的说明图。请依照说明的需要而参照图4、图5(a)与图5(b)。其中,640*480像素的图像数据,即表示水平分辨率为640个像素,垂直分辨率为480个像素的图像数据。图4所示的图像数据具有480条线数据,分别为线数据1~线数据480。并且由于图4所示的640*480像素的图像数据经过YUV420取样,因此图4中的所有标号为奇数的线数据皆具有Y、U、以及V影像分量,而所有标号为偶数的线数据皆只具有Y影像分量。图5(a)与图5(b)所绘示的缓冲器皆具有存储空间L1~L16,并且存储空间中的每一个方块(如图5(a)中的记忆单元501与半个记忆单元502,以及图5(b)中的记忆单元503与半个记忆单元504所示)皆可暂存8个像素的数据。

线数据1~16依序存储至缓冲器的存储空间L1~L16。当缓冲器中所有的存储空间皆被图像数据填满时,JPEG引擎便开始将缓冲器中的数据取出,而取出数据的方式如同图5(b)的505所示,为将存储空间L1~L16中标示为1以及标示为2的记忆单元中的数据取出。接着,JPEG引擎再依照505所示的方式取出存储空间L1~L16中标示为3以及标示为4的记忆单元中的数据,至于存储空间L1~L16中标示为5~80的记忆单元中的数据,亦如同上述方式依序取出。同样地,缓冲器、以及JPEG引擎亦依照线数据1~16的动作方式,而依序将线数据17~32、33~48、49~64…等暂存于缓冲器中,直到线数据465~480亦从缓冲器输出为止。但是,这样的动作方式,使得线数据17~32必须等待线数据1~16完全从缓冲器中输出,才会被输入至缓冲器中,因此浪费掉不少时间,并使得进行JPEG压缩的实时程度有其限制。同理,线数据33~48必须等待线数据17~32完全从缓冲器中输出,才会被输入至缓冲器中,依此类推,故现有的作法也浪费了相当长的等待的时间。

另外,从图5(a)与图5(b)也可以得知,虽然存储空间标示为L1~L16,但其实在存储空间L1~L16中,存储空间L2、L4、L6、L8、L10、L12、L14以及L16皆只暂存Y影像分量,故存储空间L2与L4的数据存储量相当于存储空间L1、L3、L5、L7、L9、L11、L13、以及L15当中的任一个存储空间的数据存储量,而存储空间L6与L8、存储空间L10与L12、存储空间L14与L16亦是如此。所以现有技术至少需要准备24条线的缓冲器,即A/B缓冲器各12条线,以利用读取/写入(read/write)不同静态随机存取内存的特性,实时处理JPEG压缩的应用。故对于使用A/B缓冲器架构而言,采用此种现有技术所需付出的成本,不可谓不高。

发明内容

本发明的目的就是提供一种存取图像数据的方法,此方法只需要使用一个缓冲器便可以达到JPEG图像数据实时压缩处理的功能。

本发明的另一目的就是提供一种存取YUV420格式图像数据的方法,此方法只需要使用一个缓冲器便可以达到JPEG图像数据实时压缩处理的功能。

基于上述及其它目的,本发明提出一种存取图像数据的方法。图像数据包括多个图像数据矩阵A,且每一图像数据矩阵A包括m列的子图像数据矩阵R,前述子图像数据矩阵R包括n行的图像单元a,每一图像单元a中包含p个像素,每一像素使用多个单位的数据来表示。前述单位包括第一单位、第二单位、及第三单位,而w列的子图像数据矩阵R的第一单位的数据需以u列且每列n行的记忆单元b来存储,且w列的子图像数据矩阵R的第二单位与第三单位的数据需以v列且每列n行的记忆单元b来存储,其中

A=R1R2...Rm=a1,1a1,2...a1,na2,1a2,2...a2,n.........am,1am,2...am,n,

且定义Ri表示为第i列的子图像数据矩阵R、ai,j表示为第i列第j行的图像单元a。此存取图像数据的方法包括:

(a)提供矩阵存储空间B,用以暂存该些图像数据矩阵A,矩阵存储空间B包括x列的子矩阵存储空间S,每一该子矩阵存储空间S包括y行的前述记忆单元b。矩阵存储空间B也表示为包括z行的子矩阵存储空间C,每一该子矩阵存储空间C包括x列的子矩阵存储空间T,每一子矩阵存储空间T包括h行的记忆单元b。矩阵存储空间C也表示为包括h行的子矩阵存储空间D。其中,x=m*(u+v)/w。当n*(1+v/u)/x为整数时,则h=n*(1+v/u)/x;当n*(1+v/u)/x不为整数时,则h=INT(n*(1+v/u)/x)+1,函数INT()表示为撷取输入参数的整数部分。当n/h为整数时,则z=n/h;当n/h不为整数时,则z=INT(n/h)+1。而y=h*z。

当中

B=S1S2...Sx=b1,1b1,2...b1,yb2,1b2,2...b2,y.........bx,1bx,2...bx,y=C1C2...Cz,

Cq=T1T2...Tx=b1,1b1,2...b1,hb2,1b2,2...b2,h.........bx,1bx,2...bx,h=D1D2...Dh,

且定义Sk表示为第k列的子矩阵存储空间S、bk,l表示为第k列第l行的记忆单元b、Cq表示为第q行的子矩阵存储空间C、Tk表示为第k列的子矩阵存储空间T。(b)获取第e个前述图像数据矩阵A中w列的前述子图像数据矩阵R的数据,并存储至矩阵存储空间B中(u+v)列的前述子矩阵存储空间S中。

(c)从矩阵存储空间B中的子矩阵存储空间C内读取第e个前述图像数据矩阵A的数据,当1行的前述子矩阵存储空间C所存储的数据被读取完毕时,才会读取另一行的前述子矩阵存储空间C所存储的数据。

(d)获取第(e+1)个前述图像数据矩阵A中w列的子图像数据矩阵R的数据,并存储至矩阵存储空间B中的子矩阵存储空间C中。

(e)从矩阵存储空间B中(u+v)列的前述子矩阵存储空间S内读取第(e+1)个前述图像数据矩阵A的数据,当1组(u+v)列的前述子矩阵存储空间S所存储的数据被读取完毕时,才会读取另一组的(u+v)列的前述子矩阵存储空间S所存储的数据。其中,e、h、i、j、k、l、m、n、p、q、x、y、z皆为自然数,w、u、v皆为有理数,且i<=m、j<=n、k<=x、l<=y、q<=z。

基于上述及其它目的,本发明提出一种存取YUV420格式图像数据的方法。前述YUV420格式图像数据包括多个图像数据矩阵A,且每一该些图像数据矩阵A包括m列的子图像数据矩阵R,前述子图像数据矩阵R包括n行的图像单元a。前述图像单元a中包含p个像素,每一像素使用多个单位的数据来表示。前述单位包括第一单位、第二单位、及第三单位,而w列的前述子图像数据矩阵R的第一单位的数据需以u列的记忆单元b来存储,且w列的前述子图像数据矩阵R的第二单位与第三单位的数据需以v列的前述记忆单元b来存储,其中

A=R1R2...Rm=a1,1a1,2...a1,na2,1a2,2...a2,n.........am,1am,2...am,n,

且定义Ri表示为第i列的子图像数据矩阵R、ai,j表示为第i列第j行的图像单元a。。此存取YUV420格式图像数据的方法包括:

(f)提供矩阵存储空间B,用以暂存该些图像数据矩阵A。矩阵存储空间B包括x列的子矩阵存储空间S,前述子矩阵存储空间S包括y行的前述记忆单元b。矩阵存储空间B也表示为包括z行的子矩阵存储空间C,每一该子矩阵存储空间C包括x列的子矩阵存储空间T,每一该子矩阵存储空间T包括h行的前述记忆单元b。矩阵存储空间C也表示为包括h行的子矩阵存储空间D,并且矩阵存储空间C亦包括Y列的子矩阵存储空间E,每一该子矩阵存储空间E表示为包括3列的前述子矩阵存储空间T。其中,x=m*(u+v)/w。当n*(1+v/u)/x为整数时,则h=n*(1+v/u)/x;当n*(1+v/u)/x不为整数时,则h=INT(n*(1+v/u)/x)+1,其中函数INT()表示为撷取输入参数的整数部分。当n/h为整数时,则z=n/h;当n/h不为整数时,则z=INT(n/h)+1。而y=h*z。当(2*h)/3Q的余数为0时,则m1=Q,m2=Q;当(2*h)/3Q的余数为1时,则m1=Q,m2=Q+1;当(2*h)/3Q的余数为2时,则m1=Q+1,m2=Q,其中Q为(2*h)/3的商。当x/3的余数为0时,则Y=x/3。

当中,

B=S1S2...Sx=b1,1b1,2...b1,yb2,1b2,2...b2,y.........bx,1bx,2...bx,y=C1C2...Cz,

Cq=T1T2...Tx=b1,1b1,2......b1,m1b1,m1+1...b1,hb2,1b2,2...b2,m2b2,m2+1......b2,hb3,1b3,2......b3,m1b3,m1+1...b3,hb4,1b4,2......b4,m1b4,m1+1...b4,hb5,1b5,2...b5,m2b5,m2+1......b5,hb6,1b6,2......b6,m1b6,m1+1...b6,h........................bx-2,1bx-2,2......bx-2,m1bx-2,m1+1...bx-2,hbx-1,1bx-1,2...bx-1,m2bx-1,m2+1......bx-1,hbx,1bx,2......bx,m1bx,m1+1...bx,h

=D1D2...Dh=E1E2...EY,

Ek=Tk-1TkTk+1,

且定义Sk表示为第k列的子矩阵存储空间S、bk,l表示为第k列第l行的记忆单元b、Cq表示为第q行的子矩阵存储空间C、Dq表示为第q行的子矩阵存储空间D、Tk表示为第k列的子矩阵存储空间T、Ek表示为第k列的子矩阵存储空间E。

(g)获取第e个前述图像数据矩阵A中w列的前述子图像数据矩阵R的数据,并存储至矩阵存储空间B中(u+v)列的该子矩阵存储空间S中。

(h)从矩阵存储空间B中的子矩阵存储空间C内读取第e个前述图像数据矩阵A的数据,当1行的前述子矩阵存储空间C所存储的数据被读取完毕时,才会读取另一行的前述子矩阵存储空间C所存储的数据。

(i)获取第(e+1)个前述图像数据矩阵A中w列的子图像数据矩阵R的数据,并存储至矩阵存储空间B中的子矩阵存储空间C中。

(j)从矩阵存储空间B中的子矩阵存储空间S内读取第(e+1)个前述图像数据矩阵A的数据,其中,e、h、i、j、k、l、m、n、p、q、x、y、z、m1、m2、Q皆为自然数,w、u、v皆为有理数,且i<=m、j<=n、k<=x、l<=y、q<=z。

依照本发明的一实施例所述的存取图像数据的方法,上述的将前述数据存储至矩阵存储空间B中(u+v)列的子矩阵存储空间S时,写入前述数据至记忆单元bk,l的顺序由l=1递增至l=n,而从矩阵存储空间B中的子矩阵存储空间C内读取前述数据时,从前述子矩阵存储空间D中读取前述数据。

依照本发明的一实施例所述的存取图像数据的方法,上述的将前述数据存储至矩阵存储空间B中(u+v)列的前述子矩阵存储空间S时,从第k列的子矩阵存储空间Sk开始存储第一单位的(u-v)列的数据及第二单位与第三单位的v列的数据,从k=1开始递增至k=f,且从第g列的子矩阵存储空间Sg开始存储第一单位的v列的数据,从g=f+1开始递增至g=x,其中f=x*u/(u+v),且f与g皆为自然数。

依照本发明的一实施例所述的存取图像数据的方法,上述的将前述数据存储至矩阵存储空间B中(u+v)列的前述子矩阵存储空间S时,第一单位的数据是从第k列的子矩阵存储空间Sk开始存储,从k=1开始递增至k=f,第二单位与三单位的数据是从第g列的子矩阵存储空间Sg开始存储,从g=f+1开始递增至g=x,其中f=x*u/(u+v),且f与g皆为自然数。

依照本发明的一实施例所述的存取图像数据的方法,上述的将前述数据存储至矩阵存储空间B中的子矩阵存储空间C时,写入前述数据至记忆单元bk,l的顺序是先递增l,由l=1递增至l=h,再递增k,而从矩阵存储空间B中(u+v)列的子矩阵存储空间S内读取数据时,是从该些子矩阵存储空间C中的相对应前述记忆单元bk,l读取数据,且子矩阵存储空间Cq的读取顺序是由q=1递增至q=z。

依照本发明的一实施例所述的存取图像数据的方法,上述的将前述数据存储至矩阵存储空间B中的子矩阵存储空间C时,是将第一单位的(u-v)列的数据及第二单位与第三单位的v列数据存入子矩阵存储空间E中的子矩阵存储空间Tk-1中的记忆单元bk-1,1至bk-1,m1、子矩阵存储空间Tk中的记忆单元bk,1至bk,m2、以及子矩阵存储空间Tk+1中的记忆单元bk+1,1至bk+1,m1。并将第一单位的v列数据存入前述子矩阵存储空间E中的子矩阵存储空间Tk-1中的记忆单元bk-1,m1+1至bk-1,h、前述子矩阵存储空间Tk中的记忆单元bk,m2+1至bk,h、以及前述子矩阵存储空间Tk+1中的记忆单元bk+1,m1+1至bk+1,h

本发明因采用连续两种不同的存取方式应用于缓存器存取JPEG图像数据,因此本发明的方法只需要使用一个缓存器,便可达到JPEG图像数据的实时压缩处理。

为让本发明的上述和其它目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合附图,作详细说明如下。

附图说明

图1为JPEG转换编码的流程图。

图2为YUV420压缩格式的定义的说明图。

图3为现有技术使用的A/B缓冲器架构的说明图。

图4为以线扫描为基础且经过YUV420取样的640*480像素的图像数据的说明图。

图5(a)为12条线的缓冲器输入图像数据的说明图。

图5(b)为12条线的缓冲器输出图像数据的说明图。

图6为依照本发明一实施例的存取图像数据的方法的流程图。

图7为具有30个图像数据矩阵A的示意图。

图8为依照本发明一实施例的步骤602的说明图。

图9为依照本发明另一实施例的步骤602的说明图。

图10(a)为依照本发明一实施例的压缩完30个MCU的说明图。

图10(b)为依照本发明一实施例的压缩完60个MCU的说明图。

图11为依照本发明一实施例的步骤605的说明图。

图12为依照本发明另一实施例的存取图像数据的方法的流程图。

图13为依照本发明另一实施例的步骤1202的说明图。

图14(a)为依照本发明另一实施例的压缩完30个MCU的说明图。

图14(b)为依照本发明另一实施例的压缩完60个MCU的说明图。

图15为依照本发明另一实施例的步骤1205的说明图。

图16为依照本发明一实施例的硬件架构的说明图。

附图标记的说明

101:颜色转换

102:离散余弦变换

103:量化

104:编码

301、302、1601:缓冲器

303、304:开关

305:写入地址控制器

306:读取地址控制器

501、503:记忆单元

502、504:一半的记忆单元

505、1001、1002、1003、1401、1402、1403:区域

701、702~730:图像数据矩阵

1002:写入数据的区域

601、602、603、604、605、1201、1202、1203、1204、1205:流程图步骤

L1~L24:存储空间

具体实施方式

图6为依照本发明一实施例的存取图像数据的方法的流程图。图7为具有30个图像数据矩阵A的示意图。以下为了说明的方便,此实施例的图像数据将设定为水平分辨率为640个像素,垂直分辨率为480个像素的图像数据(一般称为640*480像素的图像数据),并且以JPEG规格的YUV420压缩格式来说明本方法。请依照说明的需要而参照图6与图7。

640*480像素的图像数据包括30个图像数据矩阵A,如图7所示的701、702…730。其中,任一图像数据矩阵A包括16列的子图像数据矩阵R,每一子图像数据矩阵R包括80行的图像单元a,其表示为:

A=R1R2...R16=a1,1a1,2...a1,80a2,1a2,2...a2,80.........a16,1a16,2...a16,80,

并且定义Ri表示为第i列的子图像数据矩阵R、ai,j表示为第i列第j行的图像单元a。在图像数据矩阵A中的每一图像单元a中包含8(即p)个像素,并且每一像素使用三个单位的数据来表示,包括第一单位的Y影像分量数据、第二单位的U影像分量数据、及第三单位的V影像分量数据。而每2(即w)列的子图像数据矩阵R的第一单位的Y影像分量数据需以1(即u)列且每列80行的记忆单元b来存储,且每2列的子图像数据矩阵R的第二单位的U影像分量数据与第三单位的V影像分量数据需以0.5(即v)列且每列80行的记忆单元b来存储。此存取图像数据的方法包括下列步骤:

首先,提供一个缓冲器,亦即提供一个矩阵存储空间B(如图6的步骤601所示),用以暂存该些图像数据矩阵A。矩阵存储空间B包括x列的子矩阵存储空间S,每一子矩阵存储空间S包括y行的记忆单元b。矩阵存储空间B也表示为包括z行的子矩阵存储空间C,每一子矩阵存储空间C包括x列的子矩阵存储空间T,每一子矩阵存储空间T包括h行的记忆单元b。矩阵存储空间C也表示为包括h行的子矩阵存储空间D,表示为:

B=S1S2...Sx=b1,1b1,2...b1,yb2,1b2,2...b2,y.........bx,1bx,2...bx,y=C1C2...Cz,

Cq=T1T2...Tx=b1,1b1,2...b1,hb2,1b2,2...b2,h.........bx,1bx,2...bx,h=D1D2...Dh,

并且定义Sk表示为第k列的子矩阵存储空间S、bk,l表示为第k列第l行的记忆单元b、Cq表示为第q行的子矩阵存储空间C、Tk表示为第k列的子矩阵存储空间T。其中,x的大小可以经由式(1)算得:

x=m*(u+v)/w    …(1),

因此,可得出此实施例的x=12。并且,h的大小可以经由式(2)算得:

h=n*(1+v/u)/x    …(2),

若n*(1+v/u)/x为整数时,则h=n*(1+v/u)/x,因此可得出此实施例的h=10。然而,在n*(1+v/u)/x不为整数时的情况之下(例如水平分辨率为352像素时,n=44),则h=INT(n*(1+v/u)/x)+1,其中函数INT()表示为撷取输入参数的整数部分,因此可得出h=6。而z的大小可以经由式(3)算得:

z=n/h    …(3),

当n/h为整数时,则z=n/h,因此可得出此实施例的z=8。然而在n/h不为整数的情况之下,则z=INT(n/h)+1。y的大小可以经由式(4)算得:

y=h*z    …(4),

因此,可得出此实施例的y=80。故此实施例所需提供的矩阵存储空间B可表示为:

B=S1S2...S12=b1,1b1,2...b1,80b2,1b2,2...b2,80.........b12,1b12,2...b12,80=C1C2...C8,

Cq=T1T2...T12=b1,1b1,2...b1,10b2,1b2,2...b2,10.........b12,1b12,2...b12,10=D1D2...D10,

接着,执行图6的步骤602,即获取第e个图像数据矩阵A中2列的子图像数据矩阵R的数据,并存储至矩阵存储空间B中(1+0.5)列的子矩阵存储空间S中。其中将数据存储至矩阵存储空间B中(1+0.5)列的子矩阵存储空间S时,写入数据至记忆单元bk,l的顺序由l=1递增至l=80。并且,将数据存储至矩阵存储空间B中1+0.5列的子矩阵存储空间S时,从第k列的子矩阵存储空间Sk开始存储第单位的(1-0.5)列的数据及第二单位与第三单位的0.5列的数据,k从k=1开始递增至k=f,且从第g列的子矩阵存储空间Sg开始存储第一单位的0.5列的数据,g从g=f+1开始递增至g=x,其中f可由式(5)算得,f与g皆为自然数。

f=x*u/(u+v)    …(5),

因此可以得出f=8,g=9。依照YUV420压缩格式的定义,于图7的图像数据矩阵701至730中,奇数列皆获取Y、U、以及V影像分量数据,而偶数列皆只获取Y影像分量数据。因此,每两列的图像数据(如a1,1~a1,80与a2,1~a2,80、a3,1~a3,80与a4,1~a4,80,依此类推),就需要矩阵存储空间B中1.5列的子矩阵存储空间S来存储。而存储的方式如图8所示。

图8为依照本发明一实施例的步骤602的说明图。请依照说明的需要而参照图6与图8。以第e个图像数据矩阵A(假设为图7所示的图像数据矩阵701)为例,图像数据矩阵701中的a1,1~a1,80(即子图像数据矩阵R1)依序存入图8中的存储空间L1的记忆单元1~80(即矩阵存储空间B中的子矩阵存储空间S1中的b1,1~b1,80)。而图像数据矩阵701中的a2,1~a2,80(即子图像数据矩阵R2)依序存入图8中的存储空间L2的记忆单元1~80(即矩阵存储空间B中的子矩阵存储空间S9中的b9,1~b9,80),然而由于S9中的b9,1~b9,80只存储了Y影像分量数据,因此只使用了S9中的b9,1~b9,80一半的存储空间,故b9,1~b9,80还有一半的存储空间可以用来存储Y影像分量数据。图像数据矩阵701中的a3,1~a3,80(即子图像数据矩阵R3)依序存入图8中的存储空间L3的记忆单元1~80(即矩阵存储空间B中的子矩阵存储空间S2中的b2,1~b2,80)。而图像数据矩阵701中的a4,1~a4,80(即子图像数据矩阵R4)依序存入图8中的存储空间L4的记忆单元1~80(即矩阵存储空间B中的子矩阵存储空间S9中的b9,1~b9,80的另一半存储空间)。至于图像数据矩阵701中其它的图像数据的存入方式请依此类推,不再赘述。

然而,除了上述的存入方式外,使用者还可以依照实际上的需要而改成其它的存入方式,例如将数据存储至矩阵存储空间B中1+0.5列的子矩阵存储空间S时,将第一单位的数据从第k列的子矩阵存储空间Sk开始存储,k从k=1开始递增至k=f,而第二单位与三单位的数据从第g列的子矩阵存储空间Sg开始存储,g从g=f+1开始递增至g=x,其中f亦可经由式(5)算得,f与g皆为自然数。因此可以得出此实施例的f=8,而g=9。而存入方式如图9所示。

图9为依照本发明另一实施例的步骤602的说明图。请依照说明的需要而参照图6与图9。以第e个图像数据矩阵A(假设为图7所示的图像数据矩阵701)为例,图像数据矩阵701中的a1,1~a1,80(即子图像数据矩阵R1)中的Y影像分量数据依序存入图9中的存储空间L1的记忆单元1~80(即矩阵存储空间B中的子矩阵存储空间S1中的b1,1~b1,80),然而S1中的b1,1~b1,80只被使用了一半的存储空间。图像数据矩阵701中的a2,1~a2,80(即子图像数据矩阵R2)中的Y影像分量数据依序存入图9中的存储空间L2的记忆单元1~80(即子矩阵存储空间S1中的b1,1~b1,80的另一半存储空间),如此便把子矩阵存储空间S1中的b1,1~b1,80全都填满了。而a3,1~a3,80、a4,1~a4,80、…a16,1~a16,80的Y影像分量数据亦按此方式依序存储至图9中的存储空间L3~16。

至于图像数据矩阵701中的a1,1~a1,80(即子图像数据矩阵R1)中的U与V影像分量数据则存入存储空间L17(即矩阵存储空间B中的子矩阵存储空间S9中的b9,1~b9,80),然而子矩阵存储空间S9中的b9,1~b9,80只被使用了一半的存储空间。而图像数据矩阵701中的a3,1~a3,80(即子图像数据矩阵R3)中的U与V影像分量数据则存入存储空间L18(即子矩阵存储空间S9中的b9,1~b9,80的另一半存储空间),此时便把子矩阵存储空间S9中的b9,1~b9,80全都填满了。而图像数据矩阵701中的其它奇数列的U与V影像分量数据亦按此方式依序存储至图9中的存储空间L19~24。在此实施例中,上述步骤602虽然已被描绘出两种可能的存入方式,然而熟习此技术者可依照实际上的需要而变化存入方式,因此步骤602应不限于上述的两种存入方式。

接着,执行图6的步骤603,即从矩阵存储空间B中的子矩阵存储空间C内读取图像数据矩阵701(即第e个图像数据矩阵A)的数据,当1行的子矩阵存储空间C所存储的数据被读取完毕时,才会读取另一行的子矩阵存储空间C所存储的数据,而从矩阵存储空间B中的子矩阵存储空间C内读取数据时,从子矩阵存储空间D中读取数据。因此,从矩阵存储空间B中的子矩阵存储空间C内读取图像数据矩阵701的数据时,是依序从子矩阵存储空间C1至C8读取数据,并且在每个子矩阵存储空间C中,是依序从子矩阵存储空间D1至D10读取数据。

当子矩阵存储空间C1中的数据被读取出矩阵存储空间B时,即表示已有30个MCU的数据被读取出矩阵存储空间B而进行JPEG压缩,如图10(a)的1001所示。图10(a)为依照本发明一实施例的压缩完30个MCU的说明图。因此,有足够的空间可以将图7中的图像数据矩阵702(即第e+1个图像数据矩阵A)中2列的子图像数据矩阵R的数据,存储至矩阵存储空间B中的子矩阵存储空间C1(即图10(a)的1001所示)中,即图6的步骤604。而存储方式如图10(b)中的1002所示。

图10(b)为依照本发明一实施例的压缩完60个MCU的说明图。当子矩阵存储空间C2(即图10的1003所示)中的数据开始被读取出矩阵存储空间B时,图像数据矩阵702中的a1,1~a1,80便存储至1002中的奇数列(即存储空间L1、3、5、…15,亦即子矩阵存储空间T1至T8)所标示的记忆单元1~10,而图像数据矩阵702中的a2,1~a2,80为存储至1002中的偶数列(即存储空间L2、4、6、…16,亦即子矩阵存储空间T9至T12)所标示的记忆单元1~10。至于图像数据矩阵702中的其它图像数据,亦依此方式依序存入矩阵存储空间B,不再赘述。当图像数据矩阵702中的所有图像数据皆存储在矩阵存储空间B时,便可以进行步骤605,即从矩阵存储空间B中(1+0.5)列的子矩阵存储空间S内读取图像数据矩阵702(第(e+1)个图像数据矩阵A)的数据,当1组1+0.5列的子矩阵存储空间S所存储的数据被读取完毕时,才会读取另一组的1+0.5列的子矩阵存储空间S所存储的数据。而读取的方式如图11所示。

图11为依照本发明一实施例的步骤605的说明图。请参照图11。步骤605的读取数据的方式是将存储空间L1与存储空间L2中所有标示为相同数字的记忆单元中的数据同时读取出矩阵存储空间B。例如将存储空间L1与存储空间L2中所包含的16个标示为1的记忆单元中的数据读出矩阵存储空间B。然后再将存储空间L1与存储空间L2中所包含的16个标示为2的记忆单元中的数据读出矩阵存储空间B。依此类推,直到存储空间L1与存储空间L2中的数据都被读出矩阵存储空间B。此时,存储空间L1就有足够的存储空间可以将图像数据矩阵603(即第e+2个图像数据矩阵A)中的数据a1,1~a1,80存入,而存储空间L2亦有足够的存储空间可以将图像数据矩阵603中的数据a2,1~a2,80存入,亦即又返回步骤602。本发明的方法便反复地依序操作上述的步骤602、603、604、以及605,直到将图像数据矩阵701~730中的数据都经过缓冲器暂存,而最终皆被读出缓冲器进行JPEG压缩处理。并且,经由上述各步骤所描述的操作过程中,可以知道本发明的方法在存取图像数据的时候,并不需要任何等待时间。而本发明的方法最大的误差是30个MCU的时间。另外,依照此实施例所述的方式,就可以达成利用12条线的缓冲器完成YUV420压缩的功能。

虽然在本实施例中已经对矩阵存储空间B描绘出了一个可能的型态,但熟知此技术者应知,各厂商所采用的图像数据的压缩格式可能不尽相同,因此本发明的矩阵存储空间B应当不限制于此种可能的型态。换言之,不论图像数据的压缩格式是属于YUV411、YUV422、或是YUV444,也不论图像数据的垂直分辨率与水平分辨率各为多少,本发明所述的矩阵存储空间B都可对应地作调整。意即,使用者只要使用对应于矩阵存储空间B的记忆容量大小的缓冲器,便可以利用单一个缓冲器进行实时JPEG压缩。

图6所述的实施例是本发明中最省静态随机存取内存的做法,然而为了确保不发生数据覆写(overwrite)的现象,在使用上述的实施例的方法时,提高JPEG引擎的速度是必要的。但是,就高分辨率的影像(high resolution image)而言,芯片的功率消耗以及速度可能都无法符合需求,故使用者可采用图12所述的实施例的方法来做JPEG压缩,就可以不需要提高JPEG引擎的速度。并且图12的实施例仍将图像数据设定为640*480像素的图像数据,然图12的实施例所述的方法限用于YUV420压缩格式,因此图12的实施例仅以YUV420压缩格式说明本方法。

如同图6的实施例所述,此640*480像素的图像数据包括30个图像数据矩阵A,亦可由图7所示的701、702…730来表示。其中,任一图像数据矩阵A包括16列的子图像数据矩阵R,每一子图像数据矩阵R包括80行的图像单元a。因此,任一图像数据矩阵A皆可表示为:

A=R1R2...R16=a1,1a1,2...a1,80a2,1a2,2...a2,80.........a16,1a16,2...a16,80,

并且定义Ri表示为第i列的子图像数据矩阵R、ai,j表示为第i列第j行的图像单元a。而图像数据矩阵A中的每一图像单元a中所包含的像素数目及数据的种类与单位,以及该些数据所需要的存储空间的大小皆不再赘述。此存取图像数据的方法如图12所示,图12为依照本发明另一实施例的存取图像数据的方法的流程图。图12所示的方法包括下列步骤:

首先,提供一个缓冲器,亦即提供矩阵存储空间B(如图12的步骤1201所示),用以暂存该些图像数据矩阵A。矩阵存储空间B包括x列的子矩阵存储空间S,每一子矩阵存储空间S包括y行的记忆单元b。矩阵存储空间B也表示为包括z行的子矩阵存储空间C,每一子矩阵存储空间C包括x列的子矩阵存储空间T,每一子矩阵存储空间T包括h行的记忆单元b。矩阵存储空间C也表示为包括h行的子矩阵存储空间D,并且矩阵存储空间C亦包括Y列的子矩阵存储空间E,每一子矩阵存储空间E表示为包括3列的子矩阵存储空间T。表示为:

B=S1S2...Sx=b1,1b1,2...b1,yb2,1b2,2...b2,y.........bx,1bx,2...bx,y=C1C2...Cz,

Cq=T1T2...Tx=b1,1b1,2......b1,m1b1,m1+1...b1,hb2,1b2,2...b2,m2b2,m2+1......b2,hb3,1b3,2......b3,m1b3,m1+1...b3,hb4,1b4,2......b4,m1b4,m1+1...b4,hb5,1b5,2...b5,m2b5,m2+1......b5,hb6,1b6,2......b6,m1b6,m1+1...b6,h........................bx-2,1bx-2,2......bx-2,m1bx-2,m1+1...bx-2,hbx-1,1bx-1,2...bx-1,m2bx-1,m2+1......bx-1,hbx,1bx,2......bx,m1bx,m1+1...bx,h

=D1D2...Dh=E1E2...EY,

Ek=Tk-1TkTk+1,

并且定义Sk表示为第k列的子矩阵存储空间S、bk,l表示为第k列第l行的记忆单元b、Cq表示为第q行的子矩阵存储空间C、Dq表示为第q行的子矩阵存储空间D、Tk表示为第k列的子矩阵存储空间T、Ek表示为第k列的子矩阵存储空间E。其中x、h、z、以及y的大小分别依照式(1)、(2)、(3)、以及(4)算得,因此可得出x=12,h=10,z=8,y=80。故此实施例所需提供的矩阵存储空间B可表示为:

B=S1S2...S12=b1,1b1,2...b1,80b2,1b2,2...b2,80.........b12,1b12,2...b12,80=C1C2...C8,

Cq=T1T2...T12=b1,1b1,2......b1,m1b1,m1+1...b1,80b2,1b2,2...b2,m2b2,m2+1......b2,80b3,1b3,2......b3,m1b3,m1+1...b3,80b4,1b4,2......b4,m1b4,m1+1...b4,80b5,1b5,2...b5,m2b5,m2+1......b5,80b6,1b6,2......b6,m1b6,m1+1...b6,80........................b10,1b10,2......b10,m1b10,m1+1...b10,80b11,1b11,2...b11,m2b11,m2+1......b11,80b12,1b12,2......b12,m1b10,m1+1...b12,80

=D1D2...D10,

至于m1与m2的用意将于稍后说明。m1与m2的值可经由下列方式得出:

首先令n1=(h-(m1+1)+1)*2,

且令n2=(h-(m2+1)+1)*2

接着再运用式(5)~式(9)

2*h=3Q+R          …(5),

m1+(n1)/2=h       …(6),

m2+(n2)/2=h       …(7),

4*(m1+m2+m1)=y    …(8),

4*(n1+n2+n1)=y    …(9),

其中Q为(2*h)/3的商,R为(2*h)/3Q的余数。由式(5)可得出R=2,并且经由式(5)~式(9)可得知m1=Q+1,m2=Q,n1=Q,n2=Q+2,因此得出此实施例的m1=7,m2=6,n1=6,n2=8。但是在其它实施例中,若(2*h)/3Q的余数R=0,则m1=Q,m2=Q,n1=Q,n2=Q。若(2*h)/3Q的余数R=1,则m1=Q,m2=Q+1,n1=Q+1,n2=Q-1。而x/3的余数为0,故Y=4。

接着,执行图12的步骤1202,即获取第e个图像数据矩阵A中2列的子图像数据矩阵R的数据,并存储至矩阵存储空间B中(1+0.5)列的子矩阵存储空间S中。此步骤1202的动作方式可以由使用者依照实际的需要而采用如同图8或图9所述的方式,在此不再赘述。然而,在此实施例中,步骤1202的动作方式为采用如图13所示的方式。

图13为依照本发明另一实施例的步骤1202的说明图。请依照说明的需要而参照图12与图13。以第e个图像数据矩阵A(假设为图7所示的图像数据矩阵701)为例,图像数据矩阵701中的a1,1~a1,80(即子图像数据矩阵R1)依序存入图13中的存储空间L1的记忆单元1~80(即矩阵存储空间B中的子矩阵存储空间S1中的b1,1~b1,80)。而图像数据矩阵701中的a2,1~a2,80(即子图像数据矩阵R2)依序存入图13中的存储空间L2的记忆单元1~80(即矩阵存储空间B中的子矩阵存储空间S2中的b2,1~b2,80),然而由于S2中的b2,1~b2,80只存储了Y影像分量数据,因此只使用了S2中的b2,1~b2,80一半的存储空间,故b2,1~b2,80还有一半的存储空间可以用来存储Y影像分量数据。图像数据矩阵701中的a3,1~a3,80(即子图像数据矩阵R3)依序存入图13中的存储空间L3的记忆单元1~80(即矩阵存储空间B中的子矩阵存储空间S3中的b3,1~b3,80)。而图像数据矩阵701中的a4,1~a4,80(即子图像数据矩阵R4)依序存入图13中的存储空间L4的记忆单元1~80(即矩阵存储空间B中的子矩阵存储空间S2中的b2,1~b2,80的另一半存储空间)。至于图像数据矩阵701中其它的图像数据的存入方式请依此类推,不再赘述。

然后,执行图12的步骤1203,即从矩阵存储空间B中的子矩阵存储空间C内读取图像数据矩阵701(第e个图像数据矩阵A)的数据,并且当1行的子矩阵存储空间C所存储的数据被读取完毕时,才会读取另一行的子矩阵存储空间C所存储的数据。而从矩阵存储空间B中的子矩阵存储空间C内读取数据时,从子矩阵存储空间D中读取数据。因此,从矩阵存储空间B中的子矩阵存储空间C内读取图像数据矩阵701的数据时,是依序从子矩阵存储空间C1至C8读取数据,并且在每个子矩阵存储空间C中,是依序从子矩阵存储空间D1至D10读取数据。

当子矩阵存储空间C1中的数据被读取出矩阵存储空间B时,即表示已有30个MCU的数据被读取出矩阵存储空间B而进行JPEG压缩,如图14(a)的1401所示。图14(a)为依照本发明另一实施例的压缩完30个MCU的说明图。因此,有足够的空间可以将图7中的图像数据矩阵702(即第e+1个图像数据矩阵A)中2列的子图像数据矩阵R的数据,存储至矩阵存储空间B中的子矩阵存储空间C1(即图14(a)的1401所示)中,即图12的步骤1204。而存储方式如图14(b)中的1402所示。

图14(b)为依照本发明另一实施例的压缩完60个MCU的说明图。当子矩阵存储空间C2(即1403所示)中的数据开始被读取出矩阵存储空间B时,便可将图像数据矩阵702中,a1,1~a1,80所包含的第一单位的1-0.5列的Y影像分量数据,以及加起来共0.5列的第二单位的U影像分量数据与第三单位的V影像分量数据存入子矩阵存储空间E中的子矩阵存储空间Tk-1中的记忆单元bk-1,1至bk-1,m1、子矩阵存储空间Tk中的记忆单元bk,1至bk,m2、以及子矩阵存储空间Tk+1中的记忆单元bk+1,1至bk+1,m1,且m1=7,m2=6。简单来说,图像数据矩阵702中的数据a1,1~a1,80是如1402中的大方块(即记忆单元)所标示的数字一样而依序地被写入至子矩阵存储空间C1中。

此时,子矩阵存储空间C1所剩下的存储空间便可以用来存储图像数据矩阵702中,a2,1~a2,80的所包含的0.5列的第一单位的Y影像分量数据。存储方式为将第一单位的Y影像分量数据存入子矩阵存储空间E中的子矩阵存储空间Tk-1中的记忆单元bk-1,m1+1至bk-1,h、子矩阵存储空间Tk中的记忆单元bk,m2+1至bk,h、以及子矩阵存储空间Tk+1中的记忆单元bk+1,m1+1至bk+1,h。简而言之,图像数据矩阵702中的数据a2,1~a2,80是如1402中的小方块(一半的记忆单元)中所标示的数字一样而依序地被写入至子矩阵存储空间C1中。如此一来,子矩阵存储空间C1便被数据填满了。至于图像数据矩阵702中的其它的图像数据,亦采用步骤1204所述的方式而依序存储至子矩阵存储空间C2~C8中,在此不再赘述。

当图像数据矩阵702中的所有图像数据皆被存储至矩阵存储空间B时,便可以开始执行步骤1205,即从矩阵存储空间B 中的子矩阵存储空间S内读取图像数据矩阵702(第e+1个图像数据矩阵A)的数据,当1个子矩阵存储空间S所存储的数据被读取完毕时,才会读取另个子矩阵存储空间S所存储的数据。读取方式如图15所示。

图15为依照本发明另一实施例的步骤1205的说明图。请参照图15,图15显示矩阵存储空间B皆填满了图像数据矩阵702的图像数据,因此就可以开始读取存储空间L1(即子矩阵存储空间S1)所存储的数据。并依照存储空间L1、存储空间L2/4、存储空间L3、存储空间L5、存储空间L6/8、存储空间L7、存储空间L9、存储空间L10/12、存储空间L11、存储空间L13、存储空间L14/16、存储空间L15的顺序而将图像数据矩阵702的图像数据读出矩阵存储空间B。并且当存储空间L1中的数据被读出矩阵存储空间B时,存储空间L1就又有足够的存储空间可以将图像数据矩阵703(即第e+2个图像数据矩阵A)中的数据a1,1~a1,80存入,而存储空间L2亦有足够的存储空间可以将图像数据矩阵703中的数据a2,1~a2,80存入,亦即又返回步骤1202。此实施例的方法便反复地依序操作上述的步骤1202、1203、1204、以及1205,直到图像数据矩阵701~730中的数据都经过缓冲器暂存,而最终皆被读出缓冲器进行JPEG压缩处理。

并且,经由上述各步骤所描述的操作过程中,可以知道本发明的方法在存取图像数据的时候,并不需要任何等待时间,而本发明的方法最大的误差是30个MCU的时间。另外,依照本实施例所述的方式,就可以达成利用12条线的缓冲器完成YUV420压缩的功能。

虽然在本实施例中已经对矩阵存储空间B描绘出了一个可能的型态,但熟知此技术者应知,各厂商对于YUV420压缩格式的图像数据所设定的水平分辨率可能不尽相同,因此本发明的矩阵存储空间B应当不限制于此种可能的型态。换言之,只要图像数据的压缩格式是属于YUV420,则不论图像数据的水平分辨率为多少,本发明所述的矩阵存储空间B都可对应地作调整。意即,使用者只要使用对应于矩阵存储空间B的记忆容量大小的缓冲器,便可以以单一个缓冲器进行YUV420格式的图像数据的实时压缩。

使用本发明的存取图像数据的方法,即可不需要使用A/B缓冲器的架构,而只需使用一个缓冲器便可以同样达到存取图像数据的功能,如图16所示,图16为依照本发明一实施例的硬件架构的说明图。由图16中可知,本发明的方法只需要使用到一个具有12线的缓冲器1601。

综上所述,本发明的存取图像数据的方法为使用两种不同的存取方式应用于缓存器存取JPEG图像数据,因此本发明的方法只需要使用一个缓存器,便可达到JPEG图像数据的实时压缩处理。

虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明,任何熟习此技术者,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,因此本发明的保护范围当视后附的权利要求范围所界定者为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号