首页> 中国专利> JPEG 图像压缩时非标准图像尺寸的图像数据处理装置及方法

JPEG 图像压缩时非标准图像尺寸的图像数据处理装置及方法

摘要

本发明公开了JPEG图像编码时非标准图像尺寸的图像数据处理装置,用于对将要输入到JPEG编码模块的图像数据进行标准化格式处理,其中包括存储逻辑电路、存储器和读出逻辑电路。本发明还公开了JPEG图像编码时非标准图像尺寸的图像数据处理方法。本发明不用对图像本身进行放大或缩小的处理,而是通过对将要输入到JPEG编码器的图像数据在缓存器中的读写地址产生逻辑进行改进,即可自动补齐数据,使非标准尺寸的图像变为标准尺寸的图像,以满足JPEG编码对于输入图像数据尺寸的特殊要求。本发明实现简单,不用增加多余的电路结构,可以广泛应用于对输入给JPEG图像编码模块的非标准图像尺寸的处理中。

著录项

  • 公开/公告号CN1997158A

    专利类型发明专利

  • 公开/公告日2007-07-11

    原文格式PDF

  • 申请/专利权人 北京中星微电子有限公司;

    申请/专利号CN200610169859.0

  • 发明设计人 周天夷;杨柱;

    申请日2006-12-29

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

  • 代理机构

  • 代理人

  • 地址 100083 北京市海淀区学院路35号世宁大厦15层

  • 入库时间 2023-12-17 18:50:31

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2013-02-27

    未缴年费专利权终止 IPC(主分类):H04N7/26 授权公告日:20091014 终止日期:20111229 申请日:20061229

    专利权的终止

  • 2009-10-14

    授权

    授权

  • 2007-09-05

    实质审查的生效

    实质审查的生效

  • 2007-07-11

    公开

    公开

说明书

技术领域

本发明涉及JPEG图像压缩领域,特别涉及JPEG图像压缩时非标准图像尺寸的图像数据处理装置及方法。

技术背景

当利用JPEG标准对YUV格式图像的数据进行压缩时,是以宏块为单位进行处理的,每个宏块中包含了Y、U、V各分量的块即block,每个block是一个8行乘8列数据的数据块。所以对于不同的YUV数据格式,如YUV422、YUV420、YUV411和YUV400等等,要求输入图像的宽度和高度必须是一些特殊数的整数倍。例如,对于YUV420格式,要求输入图像的宽度和高度必须为16的整倍数;而对于YUV411格式,图像的宽度必须为32的整倍数,图像的高度必须为8的整倍数。

当输入图像的宽度和高度不是上述特殊数的整数倍时,在进行JPEG编码前就需要先进行图像数据转换,以使图像数据在输入给JPEG编码器时符合上述特殊数的整数倍的要求。一般图像数据转换方法有下述两种。

第一,缩小法:即只对图像是8的整倍数的部分进行压缩,截掉多余的图像数据。这样会导致图像信息的损失。比如在使用数码相机照相时,在LCD取景器中看到的是完整图像,却在经过压缩保存后变成了不完整的图像。

第二,放大法:对实际图像进行放大,以达到图像的宽度和高度是一些特殊数的整数倍的要求。这就需要有一个复杂的任意比例的图像放大电路,来对上述不同格式的YUV数据进行放大,因而增加了芯片的面积,提高了成本。

发明内容

有鉴于此,本发明需要解决的技术问题就是现有技术中,对于JPEG编码前的图像数据的处理,缩小法会导致图像信息损失,而放大法则会使电路过于复杂,从而增加芯片面积,提高芯片成本的问题。

为了解决上述技术问题,本发明提供一种JPEG图像压缩时非标准图像尺寸的图像数据处理装置,用于对将要输入到JPEG编码模块的图像数据进行标准化格式处理,其中包括存储逻辑电路、存储器和读出逻辑电路;

所述存储逻辑电路用于接收输入的YUV格式图像数据,所述YUV格式的图像尺寸为H1行*W1列,在进行JPEG编码时所需的宏块大小为N行*M列,并计算出输入图像数据在存储器中的存储地址即写地址ADDR_wr;

所述存储器用于将图像数据缓存到ADDR_wr所指定的地址处;

所述读出逻辑电路用于产生图像数据的读出地址ADDR_rd,并将ADDR_rd处的数据读出送给JPEG模块进行编码;

所述存储逻辑电路计算ADDR_wr时,每次存储至少N行图像数据,以每行数据为W2个来计算每行的首个写地址,其它数据地址依次递增,即每行增加了W2-W1个冗余数据;每帧图像的首个写地址,以上一帧图像有H2*W2个数据来计算,即每帧图像增加了H2-H1行冗余数据;

在所述读出逻辑电路读出数据时,每次读出N行数据,每行数据个数为W2,每帧图像读出H2行数据,包括所有的YUV格式的实际数据以及冗余数据。

优选地,所述存储器中包括两个存储单元,进行乒乓式的存储,即一个存储单元存储满后,可以将数据读出,同时向另一个存储单元中存入数据,两个存储单元循环使用。

优选地,所述冗余数据可以进行配置。

本发明还提供一种JPEG图像压缩时非标准图像尺寸的图像数据处理方法,用于对将要输入到JPEG编码模块的图像数据进行标准化格式处理,包括以下步骤:

100接收YUV格式的输入图像数据,所述YUV格式的图像尺寸为H1行*W1列,在进行JPEG编码时所需的宏块大小为N行*M列;

200计算存储地址,将YUV格式的输入图像数据缓存下来;

300计算读取地址,然后将YUV格式的输入图像数据读取出来,进行JPEG编码。

步骤200所述计算存储地址的具体步骤为:

201得到YUV格式输入图像的宽度和高度尺寸W1和H1;并且根据YUV图像的具体格式取得宽度和高度特殊数M和N,并根据W1和H1、M和N得到W2和H2;

202每次存储至少N行图像数据,以每行数据为W2个来计算每行的首个写地址,其它数据地址依次递增,即每行增加了W2-W1个冗余数据;每帧图像的首个写地址,以上一帧图像有H2*W2个数据来计算,即每帧图像增加了H2-H1行冗余数据。

步骤300所述计算读取地址的具体步骤为:

每次读出N行数据,每行数据个数为W2,每帧图像读出H2行数据,包括所有的YUV格式的实际数据以及冗余数据。

优选地,步骤200所述的存储YUV格式图像数据采用乒乓式存储方法,即一个存储单元存储满后,可以将数据读出,同时向另一个存储单元中存入数据,两个存储单元循环使用。

优选地,所述冗余数据可以进行配置。

本发明不用对图像本身进行放大或缩小的处理,而是通过对将要输入到JPEG编码器的图像数据在缓存器中的读写地址产生逻辑进行改进,即可自动补齐数据,使非标准尺寸的图像变为标准尺寸的图像,以满足JPEG编码对于输入图像数据尺寸的特殊要求。

附图说明

图1为本发明装置示意图;

图2为利用本发明时图像数据地址的变换示意图;

图3为本发明方法流程图;

图4所示为本发明方法中步骤200计算存储地址的具体步骤。

具体实施方式

下面结合,进一步说明本发明的装置及方法。

如图1所示,为本明的装置示意图。其中包括存储逻辑电路、存储器和读出逻辑电路。所述存储逻辑电路用于接收输入的YUV格式图像数据,并计算出输入图像数据在存储器中的存储地址即写地址ADDR_wr。所述存储器用于将图像数据缓存到ADDR_wr所指定的地址处。所述读出逻辑电路用于产生图像数据的读出地址ADDR_rd,并将ADDR_rd处的数据读出送给JPEG模块进行编码。

下面介绍本发明中ADDR_wr和ADDR_rd的具体产生方式。在此之前,先说明下面用到的一些符号的含义:

M为图像宽度的特殊数,JPEG编码时要求输入图像的宽度为M的整数倍;

N为图像高度的特殊数,JPEG编码时要求输入图像的高度为N的整数倍;

下面所述的“实际图像”尺寸,为输入到存储逻辑电路时的图像尺寸,而“JPEG图像”尺寸,则为读出逻辑电路输出给JPEG编码器的图像尺寸,也为JPEG标准要求的图像尺寸。

W1为实际图像宽度,单位是图像像素个数,可以不是特殊数的整数倍;

H1为实际图像高度,单位是图像像素个数,可以不是特殊数的整数倍;

W2为JPEG图像宽度,单位是图像像素个数,是特殊数的整数倍,且W2≥W1;

H2为JPEG图像高度,单位是图像像素个数,是特殊数的整数倍,且H2≥H1,

每次存储器中需缓存至少N行图像数据,N1为当前像素在当前的N行图像数据中的行数,N1可以是1到N的正整数。

在将图像分割转换成包含多个8行乘8列的block的数据宏块时,需要在所述存储器中存储至少N行图像数据。在存储宽度为W1的每一行数据时,存储逻辑电路计算其每一行起始数据的存储地址的公式不是ADDR_wr=N1*W1,而是ADDR_wr=N1*W2。即一行的第一个数据的存储位置不是紧接着上一行最后一个数据的存储位置,而是应该以W2为步长,乘以行数N1得出。而下一帧图像的第一行数据的存储位置不是以上一帧图像高度为H1而计算得出,而是以上一帧图像高度为H2来计算得到。即下一帧图像不是紧接着上一帧最后一个数据的存储位置,而是空过冗余行(H2-H1)后的位置。以图例来说明上述图像数据地址的变换实质。如图2所示,左边图像表示实际的YUV图像,其宽度和高度分别为W1和H1;而右边的图表示经过上述地址计算后所保存的图像,其实质就是将实际的尺寸为H1*W1的图像转换成了尺寸为H2*W2的一幅图像,但是本发明缓存器中的数据除了H1*W1尺寸的实际图像的数据之外,其它数据都是冗余数据。经过这样的地址转换处理,保存在存储器的图像数据,其实已经转换成了标准尺寸的图像,完全符合JPEG编码器对输入数据的要求。

然后在读出逻辑电路读取存储的数据时,要读出包括冗余数据在内的图像数据。产生读地址ADDR_rd时不是以W1来计算一行要读取的8行乘8列的次数,而是以W2来计算,即在读取一行中最后一个宽度为M的数据段时,(W2-W1)列的冗余数据和有效数据会被一并读出,从而自动完成图像宽度数据补足的功能。另个,对于每幅图像中的最后(H2-H1)行的冗余行数据也正常读出,送入JPEG编码器。

举例来说,假设输入图像数据为YUV420格式,尺寸为H1*W1=600*450而对于YUV420格式来说,JPEG编码器要求其输入图像的宽度和高度必须为16的整倍数,所以M和N分别为16,即一个宏块的尺寸为16*16,则600*450的图像包括完整的37*28个宏块,此外,每行多出了8个数据,每帧图像多出了2行数据。所以可以在输入图像中的每一列增加8个冗余数据,每帧图像后增加14行冗余数据,将输入图像变换成为H2*W2=608*464的图像。

因为N=16,存储器最少需要缓存16行图像数据,假设存储器大小仅可以存储16行图像数据。则写地址具体变换方式如下,对于前37个16行数据,在每个16行数据存储时,每行第一个写地址ADDR_wr的计算,都是以上一行宽度为W2来计算,这样图像其实是每存一行450像素的图像数据,即隔开14个地址再继续保存下一行数据。在处理完前37个16行的数据后,处理一幅图像的最后8行数据,这8行数据仍与前述地址的产生方式相同。在处理下一帧图像时,其首地址不能继续上述8行之后的地址,而是从存储器的开头重新计算。这样事实上就是在前一帧图像的最后8行数据后增加了8行冗余数据,每行数据列数为464。

在上述实施例中,存储器每次保存一组16行数据,在实际使用中,只要行数大于16即可,如每次缓存20行。则对于为YUV420且尺寸为600*450的图像来说,存储每行数据时ADDR_wr的产生规律仍与上述内容中相同。只是在本帧图像数据处理完毕后,即存储了共30组、每组20行数据、每行数据后增加14个冗余数据之后,下一幅图像开始的地址并不是紧接着最后一行数据,而是隔开共8行、每行464个数据处的地址。

另外,存储器中可以使用乒乓结构的两个存储单元,每个存储单元可以保存至少16行数据,每行464个数据,其中每行的最后14个为冗余数据,存满一个存储单元后就开始使用另一存储单元,如此循环使用两个存储单元。

在将图像数据按照上述本发明的方式缓存到存储器中后,读出逻辑电路即按照每行464个数据、每帧图像共608行计算读地址,将实际数据和冗余数据一并读出,送给JPEG编码模块。

对于其它格式的YUV数据,也可根据各自不同的特殊数以及实际的图像宽度高度等值按照上述方法进行地址的计算。

至于冗余数据的值,可以通过寄存器配置。

本发明的方法流程图如图3和图4所示。

图3所示,为本发明方法的宏观步骤,包括:

100接收YUV格式的输入图像数据;

200计算存储地址,将YUV格式的输入图像数据缓存下来;

300计算读取地址,然后将YUV格式的输入图像数据读取出来,进行JPEG编码。

图4所示为本发明方法中步骤200计算存储地址的具体步骤。

201接收YUV格式的输入图像,得到该图像的宽度和高度尺寸W1和H1;并且根据YUV图像的具体格式取得宽度和高度特殊数M和N,并根据W1和H1、M和N得到W2和H2;

仍以上述装置中描述的YUV420格式的图像数据为例,其尺寸为600*450。对于YUV420格式来说,JPEG编码器要求其输入图像的宽度和高度必须为16的整倍数,所以得到其M和N都为16。则可以将输入图像变换成为H2*W2=608*464的图像,每行增加8个冗余数据,每帧图像增加14行冗余数据。

202每次存储至少N行图像数据,以每行数据为W2个来计算每行的首个写地址,其它数据地址依次递增;每帧图像的首个写地址,以上一帧图像有H2*W2个数据来计算。

每次存储至少N行图像数据,这是因为JPEG编码器每次处理的一个宏块的高度为N行。在本例中,假设每次存储16行数据正整数。则具体的写地址计算公式可以为ADDR_wr=i*464+j,其中i为从0到15的正整数,表示当前像素在当前的16个行中的第i行,j为从0到449的正整数,表示每行中的第j个图像数据;将图像数据存入所述存储地址。具体来说,第一行实际数据有450个,依次存储完毕后,在存储下一行数据时,因为步长为464,所以下一行数据从464开始存储,所以按照这种方式产生写地址实质上就是每行增加了16个冗余数据。

因为实际图像的行数为600,而每次存储16行,所以最后一次存储时仅有8行数据需要存储。那么在这8行数据数据存储完毕后,在存储下一帧图像的数据时,写地址的产生不是紧接着所述的8行数据的,而是隔开8行数据然后开始。

至于步骤300所述的读地址,其具体产生步骤如下。仍以YUV420格式尺寸为600*450的图像数据为例,在按照201、202所述的步骤产生了写地址并将图像数据存入存储器后,在之后读出数据时,每次读出N行即16行数据,其读地址的计算公式为ADDR_rd=i’*464+j’,其中i’为从0到15的正整数,表示当前像素在当前的16行中的第i’行,j’为从0到463的正整数,表示每行中的第j个图像数据;将图像数据读出送给JPEG编码模块。具体来说,第一行实际数据有450个,但加上冗余数据有464个,在读取数据时,每行要读取包括实际数据和冗余数据在内的464个数据。注意在读取数据时,是需要将所有的实际数据和冗余数据都一一记取出来的。

对于其它格式的YUV数据,也可根据各自不同的特殊数以及实际的图像宽度高度等值按照上述方法进行地址的计算。

至于冗余数据的值,可以通过寄存器配置。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号