发明内容
有鉴于此,本发明的目的在于提供一种用于低分辨率LCD屏显示的ADPCM压缩方法及其装置。
为了达到上述目的,本发明一种图像压缩装置,利用压缩重构像素点的值计算并分配显示误差,其包括显示误差计算分配单元、压缩单元、LCD帧缓存单元和解压缩单元:
显示误差计算分配单元,用于给当前原始像素点分配显示误差,并用分配好的显示误差对当前原始像素点进行修正从而得到当前修正像素点;
压缩单元,用于将当前修正像素点压缩产生码流,所述当前修正像素点在压缩单元压缩后重构,产生重构像素点,并利用重构像素点在所述显示误差计算单元中计算以后待处理的原始像素点的显示误差;
LCD帧缓存,用于存储所述压缩单元产生的码流。
进一步地,所述压缩装置包括:
预测单元、量化单元、编码单元和重构单元,
预测单元,根据先前重构像素点的值对当前像素点的值进行预测并输出一个预测值,并将预测值和先前获得的修正像素点的值相减得到残差;
量化单元,对所述残差量化,获得量化残差;
重构单元,对所述量化残差进行反量化产生重构残差,产生的重构残差和所述预测值相加生成重构像素点的值。
进一步地,所述装置还包括一个熵编码单元,用于对所述量化过的残差进行编码并产生码流。
进一步地,所述显示误差计算分配单元包括:
显示误差计算模块,接收到重构像素点的值之后对其进行显示误差计算;
显示误差分配模块,将显示误差按比例分配到当前像素点右边和下边的像素点中。
进一步地,所述显示误差计算模块在特定取舍位做0舍1入,并将低于该取舍位的各位取0,用原始像素值减去取舍之后的像素值得出显示误差。
进一步地,所述显示误差分配模块将所有的显示误差加到当前像素点右边的像素点上。
进一步地,所述显示误差分配模块将所有的显示误差加到当前像素点下边的像素点上。
本发明还提供了一种图像压缩方法,包括:
给当前原始像素点分配该像素点的显示误差,形成当前修正像素点;
将当前修正像素点经过压缩后产生码流;
将码流存储到LCD帧缓存中;
利用压缩重构后的重构像素点计算后续待处理的原始像素点的显示误差;和
将所述LCD帧缓存中的图像数据解压缩用于显示。
进一步地,所述压缩方法包括:
根据先前重构像素点的值对当前像素点的值进行预测编码并输出一个预测值;
所述预测值和修正后的像素点的值相减得到残差;
将残差量化,并将量化结果编码用于显示,同时将量化残差进行反量化产生重构残差;和
产生的重构残差和所述预测值相加即生成预测编码需要的重构像素点的值。
进一步地,所述显示误差计算方法包括:
对二进制的重构值的值的特定位作取舍得到取舍误差;和
将取舍误差通过一种方法分配到该当前像素点的右边和下边的像素点。
进一步地,所述对二进制的重构值的特定位取舍计算方法为:
在特定取舍位做0舍1入,并将低于该取舍位的各位取0,用原始像素值减去取舍之后的像素值得出显示误差。
进一步地,所述显示误差的分配方法为将所有的显示误差加到当前像素点右边的像素点上。
进一步地,所述显示误差分的分配方法为将所有的显示误差加到当前像素点下边的像素点上。
本发明一种图像方法及其装置通过对显示误差计算并且再分配和在ADPCM压缩过程中用修正后的像素值代替原有方案中的原始像素值,很好地解决了减少和再分配高分辨率图像在低分辨率显示屏上显示后带来的误差问题,并由于对图像进行压缩,存储图像的缓冲区大小得到控制。
具体实施方式
为了降低现有技术中由于精度降低带来的误差,本发明计算由于精度降低产生的误差,并将误差分配到周围像素点上;同时,为了解决缓存紧张的问题,在图像数据放入缓存之前先对其进行ADPCM压缩,并且在显示之前解压缩。
本发明提出的图像压缩装置的一种实施例结构图,如图1所示,其包括显示误差计算分配单元10、压缩单元20、LCD帧缓存单元30和解压缩单元40。
显示误差计算分配单元10,用于给当前原始像素点分配显示误差,并用分配好的显示误差对当前原始像素点进行修正从而得到当前修正像素点。
压缩单元20,用于将当前修正像素点压缩产生码流,所述当前修正像素点在压缩单元压缩后重构,并利用重构像素点在所述显示误差计算单元10中计算以后待处理的原始像素点的显示误差。
LCD帧缓存30,用于存储所述压缩单元产生的码流。
解压缩单元40,用于将所述LCD帧缓存中的图像数据解压缩显示。
在另一个具体的实施例中,请参看图2所示,图2是本发明提出的一种图像压缩装置的另一个具体实施例结构框图。一种图像压缩装置100,其包括由预测单元110、量化单元120、编码单元130和重构单元140组成的前述压缩单元20和由显示误差计算单元150和显示误差分配单元160组成的前述显示误差计算和分配单元10。
所述预测单元110用来对先前重构像素点101的值进行预测编码并输出一个当前像素点预测值102,所述当前像素点预测值102和当前修正像素点的值103相减得到当前像素点的残差104,后将当前像素点残差104输入到量化单元120。所述量化单元120对输入的当前像素点残差进行量化并将量化结果发送到熵编码单元130进行编码,同时也将量化结果发送到重构单元140。所述熵编码单元130对量化过的当前像素点残差进行编码并产生码流105,并存储到前述LCD帧缓存中。所述重构单元140接收量化单元当前像素点量化残差并对此量化残差进行反量化产生当前像素点重构残差106,产生的当前像素点重构残差106和所述预测单元110输出的当前像素点预测值102相加即生成预测单元110以后预测需要的重构像素点的值107。
所述预测单元110的具体的预测过程,请参看图3所示。每一幅图像都是由一个个像素组成,用已知像素点的值可以大概判断出未知像素点的值。现在用已知三个点的值来预测第四个点的值为例加以说明,假设已知A、B、C三个像素点的值,那么第四个像素点X的预测值可计为X′=a1·A+b1·B+c1·C,其中,a1、b1、c1是三个像素点的取值系数,取值系数的取值为公知技术,在此不作赘述。为了使预测单元110能够工作,必须将一帧图像的第一行和第一列的像素值作为已知像素,然后预测出第二行第二列的像素点的值,后用重构单元重构出第二行第二列的像素点的值作为已知象素点的值预测第二行第三列的像素点的值,再后,从左到右从上到下预测一整帧图像像素点的值。当前象素点的预测值X′与原始值X之间有一定的差,定义为残差Δ=X-X′。
在量化单元120对输入残差进行量化之前,需要设定量化单元120中的量化参数,其中量化参数包括量化区间数及量化步长,从而实现对残差概率分布图进行量化区间划分,并对每一个量化区间编号。
所述编码单元130用于收到量化区间编号后对其进行编码,编码方式采用熵编码(哈夫曼编码)方式,越靠近零点的编码对应的码长越短,越远离零点的编码对应的码长越长。
所述重构单元140用于接收量化单元的量化残差并对此量化残差进行反量化产生重构残差106,这个重构过程就是所述量化过程的一个逆过程.
所述先前修正像素点的值103在传统ADPCM压缩过程中采用的是原始像素点的值。本发明为了能够更好地减少误差在此用的是修正像素点的值,修正的具体过程会在后面的描述中介绍。
所述重构像素点的值107在本发明中是一个RGB三个分量精度很高的图像,如果在精度较低的LCD上显示的话,就需要做一些处理。在一个具体的实施例中,假设重构值为143,但是显示精度为5位,则对以二进制形式表示的143(10001111)在右数第三位0舍1入之后获得10010000。另一种计算方法为:由于是对右数第三位做取舍,那么则在原二进制数字上加上二进制数100也就是十进制的4,然后与二进制数11111000做与运算,就可以得出右数第三位0舍1入之后的值,因而显示带来的取舍误差ΔX=143-((143+4)&0xF8)=143-144=-1,在本具体实施例中为144。
所述显示误差计算单元150将完成上述计算过程,具体为:
将所述由但前修正像素值量化重构得到的重构值换算为2进制并在规定位作0舍1入;
将在取舍位之后的各位取零;
将作过取舍的二进制数换算成十进制并与重构值相减。
所述显示误差计算单元分别计算每一个像素点的每一个分量的精度误差,并将这些精度误差值发送到显示误差分配单元160中。
请参看图4所示,所述显示误差分配单元将得到的取舍误差ΔX以某种方式分配到X像素点右边或下边的像素点。在一个具体的实施例中,直接将ΔX全部加到X右边的像素E0上,E点的值最终表示为:
E1=E0+ΔX
需要注意的是,与传统的ADPCM压缩方案不同之处还在于,在计算残差时,用的是修正后的像素值X1而不是原始像素值X0。
本发明还提供了一种图像压缩方法,该控制方法在一个优选的实施例中用于前述图像压缩装置中,但这种方法并不绝对依附于前述装置。下面就以用于图像压缩装置中为例来说明本发明的模拟量控制方法。该方法包括:
当前原始像素点在显示误差计算单元中被分配该像素点的显示误差,形成当前修正像素点;
当前修正像素点经过压缩单元压缩,产生码流;
将码流存储到LCD帧缓存中;
利用压缩重构后的重构像素点在所述显示误差计算单元中计算以后待处理的原始像素点的0显示误差;和
解压缩单元将所述LCD帧缓存中的图像数据解压缩用于显示。
所述压缩过程包括:
根据先前重构像素点的值对当前像素点的值进行预测编码并输出一个预测值;
所述预测值和修正像素点的值相减得到残差;
将残差量化,并将量化结果编码用于显示,同时将量化残差进行反量化产生重构残差;和
产生的重构残差和所述预测值相加即生成预测编码需要的重构像素点的值;
所述显示误差计算方法包括:
对重构值的二进制某一位进行0舍1入,并计算取舍误差;和
将取舍误差通过一种方法分配到该当前像素点的右边和下边的像素点。
在一个具体的实施例中,在重构值中取右数第三位作为取舍位进行误差取舍计算,0舍1入,并将后面的两位清零。由于同前述相同,则在此不作赘述。
在另外一个具体的实施例中,取舍误差被全部加在了当前像素点右边的像素点。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换等,均应包含在本发明的保护范围之内。