发明内容
本申请实施例提供了一种图像压缩的装置、方法、电子设备及计算机可读存储介质,用于解决现有技术对图像压缩时硬件成本较高的技术问题。
根据本申请实施例的一个方面,提供了一种图像压缩装置,该装置包括:
图像划分模块,用于将目标图像划分为若干个宏块;
宏块分区模块,用于对每个宏块进行分区,不同分区的任意两个像素间的像素距离大于预设阈值;
分量确定模块,用于对于每个分区,确定分区在各颜色通道的第一分量和第二分量;
颜色索引确定模块,用于对于每个像素,根据像素的对应分区的第一分量和第二分量确定像素在对应分区的颜色索引;
压缩码流获得模块,用于获取预设的图像压缩比例,对于任意一个宏块,根据宏块的分区个数各个分区在各个颜色通道的第一分量和第二分量以及所有像素的颜色索引对宏块进行压缩,得到宏块对应的压缩码流。
在一个可能的实现方式中,宏块分区模块,包括:
分区中心确定子模块,用于确定上一次迭代过程的分区中心;
像素所在分区确定子模块,用于对于每个像素,确定像素与每个上一次迭代过程的分区中心之间的像素距离,将像素划分至最小像素距离对应的上一次迭代过程的分区中心所在的分区;
其中,首次迭代过程的分区中心以所有像素的任意一个颜色通道的分量的最大值、任意一个颜色通道的分量的最小值以及任意一个颜色通道的分量的平均值的组合表征。
在一个可能的实现方式中,像素所在分区确定子模块还包括:
平均值确定单元,用于确定同一分区的所有像素在每个颜色通道的分量的平均值;
分区中心迭代单元,用于对上一次迭代过程的分区中心进行更新,获得当前迭代过程的分区中心,当前迭代过程的分区中心以相应分区中所有像素在各个颜色通道的平均值表征;
像素距离第一确定单元,用于确定当前迭代过程的分区中心和上一次迭代过程的分区中心之间的像素距离;
像素距离第二确定单元,用于若当前迭代过程的分区中心和上一次迭代过程的分区中心之间的像素距离大于预设阈值,则计算每个像素与每个当前迭代过程的分区中心之间的像素距离;
像素所在分区划分单元,用于将每个像素划分至最小像素距离对应的当前迭代过程的分区中心所在的分区,直至相邻两次迭代过程的分区中心之间的像素距离小于预设阈值。
在一个可能的实现方式中,分量确定模块,包括:
分量确定子模块,用于确定分区中的最大基像素值和最小基像素值,将最大基像素值和最小基像素值分别输入对应分区的各颜色通道的目标函数,获得分区在各颜色通道的第一分量和第二分量;
其中,目标函数是对分区的像素在相应颜色通道的分量,进行直线拟合获得的。
在一个可能的实现方式中,分量确定子模块,包括:
基像素值获得单元,用于根据分区中每个像素的所有颜色通道的分量的代数和,获得相应像素的基像素值;
最大基像素值和最小基像素值确定单元,用于从分区中所有像素的基像素值中确定最大基像素值和最小基像素值。
在一个可能的实现方式中,颜色索引确定模块,包括:
量化数确定子模块,用于根据宏块的分区个数确定宏块的量化数;
目标颜色通道确定子模块,用于确定像素在对应分区的目标颜色通道;
颜色索引确定子模块,用于根据像素所属宏块的量化数、像素在目标颜色通道的分量以及目标颜色通道的第一分量和第二分量,确定像素在对应分区的颜色索引。
在一个可能的实现方式中,目标颜色通道确定子模块,包括:
第一参数确定单元,用于对于任意一个颜色通道,根据像素在对应颜色通道的分量和分区在对应颜色通道的第二分量之间的差值,得到第一参数;
第二参数确定单元,用于确定分区在对应颜色通道的第一分量和分区在对应颜色通道的第二分量之间的差值,得到第二参数;
第三参数确定单元,用于根据第一参数和第二差值的比值,得到第三参数;
目标颜色通道确定单元,用于确定最大第三参数所对应的颜色通道为像素对应的目标颜色通道。
在一个可能的实现方式中,颜色索引确定模块,包括:
第一目标参数确定子模块,用于确定像素在目标颜色通道的分量与目标颜色通道的第二分量之间的差值,得到第一目标参数;
第二目标参数确定子模块,用于确定目标颜色通道的第一分量和第二分量之间的差值,得到第二目标参数;
第三目标参数确定子模块,用于确定第一目标参数和第二目标参数之间的比值,得到第三目标参数;
颜色索引确定子模块,用于根据第三目标参数和量化数确定像素在对应分区的颜色索引。
根据本申请实施例的第二个方面,提供了一种图像压缩方法,该方法包括:将目标图像划分为若干个宏块;
对每个宏块进行分区,不同分区的任意两个像素间的像素距离大于预设阈值;
对于每个分区,确定分区在各颜色通道的第一分量和第二分量;
对于每个像素,根据像素的对应分区的第一分量和第二分量确定像素在对应分区的颜色索引;
获取预设的图像压缩比例,对于任意一个宏块,根据宏块的分区个数各个分区在各个颜色通道的第一分量和第二分量以及所有像素的颜色索引对宏块进行压缩,得到宏块对应的压缩码流。
在一个可能的实现方式中,对每个宏块进行分区,包括:
确定上一次迭代过程的分区中心;
对于每个像素,确定像素与每个上一次迭代过程的分区中心之间的像素距离,将像素划分至最小像素距离对应的上一次迭代过程的分区中心所在的分区;
其中,首次迭代过程的分区中心以所有像素的任意一个颜色通道的分量的最大值、任意一个颜色通道的分量的最小值以及任意一个颜色通道的分量的平均值的组合表征。
在一个可能的实现方式中,将像素划分至最小像素距离对应的上一次迭代过程的分区中心所在的分区,之后还包括:
确定同一分区的所有像素在每个颜色通道的分量的平均值;
对上一次迭代过程的分区中心进行更新,获得当前迭代过程的分区中心,当前迭代过程的分区中心以相应分区中所有像素在各个颜色通道的平均值表征;
确定当前迭代过程的分区中心和上一次迭代过程的分区中心之间的像素距离;
若当前迭代过程的分区中心和上一次迭代过程的分区中心之间的像素距离大于预设阈值,则计算每个像素与每个当前迭代过程的分区中心之间的像素距离;
将每个像素划分至最小像素距离对应的当前迭代过程的分区中心所在的分区,直至相邻两次迭代过程的分区中心之间的像素距离小于预设阈值。
在一个可能的实现方式中,确定分区在各颜色通道的第一分量和第二分量,包括:
确定分区中的最大基像素值和最小基像素值,将最大基像素值和最小基像素值分别输入对应分区的各颜色通道的目标函数,获得分区在各颜色通道的第一分量和第二分量;
其中,目标函数是对分区的像素在相应颜色通道的分量,进行直线拟合获得的。
在一个可能的实现方式中,根据像素的对应分区的第一分量和第二分量确定像素在对应分区的颜色索引,包括:
根据宏块的分区个数确定宏块的量化数;确定像素在对应分区的目标颜色通道;
根据像素所属宏块的量化数、像素在目标颜色通道的分量以及目标颜色通道的第一分量和第二分量,确定像素在对应分区的颜色索引。
根据本申请实施例的另一个方面,提供了一种电子设备,该电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现如第二方面所提供的方法的步骤。
根据本申请实施例的再一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第二方面所提供的方法的步骤。
根据本申请实施例的又一个方面,提供了一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中,当计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行实现如第二方面所提供的方法的步骤。
本申请实施例提供的技术方案带来的有益效果是:本申请实施例将目标图像划分为若干个宏块;对每个宏块进行分区,不同分区的任意两个像素间的像素距离大于预设阈值;对于每个分区,确定分区在各颜色通道的第一分量和第二分量;对于每个像素,根据像素在对应分区的第一分量和第二分量确定像素在对应分区的颜色索引;获取预设的图像压缩比例,对于任意一个宏块,根据宏块的分区个数各个分区在各个颜色通道的第一分量和第二分量以及所有像素的颜色索引对宏块进行压缩,得到宏块对应的压缩码流。本申请实施例通过每个分区在各个颜色通道的第一分量和第二分量以及每个像素的颜色索引来表征对整个分区的所有像素在各个颜色通道的分量,计算量较小,实现过程比较简单,另外,各个像素的颜色索引分别在各自对应的目标颜色通道上的,各像素的分量在目标颜色通道上的比重最大,能够有效减小压缩误差。
具体实施方式
下面结合本申请中的附图描述本申请的实施例。应理解,下面结合附图所阐述的实施方式,是用于解释本申请实施例的技术方案的示例性描述,对本申请实施例的技术方案不构成限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请实施例所使用的术语“包括”以及“包含”是指相应特征可以实现为所呈现的特征、信息、数据、步骤、操作、元件和/或组件,但不排除实现为本技术领域所支持其他特征、信息、数据、步骤、操作、元件、组件和/或它们的组合等。应该理解,当我们称一个元件被“连接”或“耦接”到另一元件时,该一个元件可以直接连接或耦接到另一元件,也可以指该一个元件和另一元件通过中间元件建立连接关系。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的术语“和/或”指示该术语所限定的项目中的至少一个,例如“A和/或B”可以实现为“A”,或者实现为“B”,或者实现为“A和B”。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
首先对本申请涉及的几个名词进行介绍和解释:
图像压缩是指以较少的比特有损或无损地表示原来的像素矩阵的技术,也称图像编码,在满足一定质量的条件下,以较少比特数表示图像或图像中所包含信息的技术。
图像压缩分为有损压缩和无损压缩,无损压缩是对文件本身的压缩,和其它数据文件的压缩一样,是对文件的数据存储方式进行优化,采用某种算法表示重复的数据信息,文件可以完全还原,不会影响文件内容,对于数码图像而言,也就不会使图像细节有任何损失。
有损压缩是对图像本身的改变,在保存图像时保留了较多的亮度信息,而将色相和色纯度的信息和周围的像素进行合并,合并的比例不同,压缩的比例也不同,由于信息量减少,所以压缩比可以很高,图像质量也会相应的下降。
图像压缩的基本原理:
图像数据之所以能被压缩,就是因为数据中存在着冗余。图像数据的冗余主要表现为:图像中相邻像素间的相关性引起的空间冗余;图像序列中不同帧之间存在相关性引起的时间冗余;不同彩色平面或频谱带的相关性引起的频谱冗余。数据压缩的目的就是通过去除这些数据冗余来减少表示数据所需的比特数,由于图像数据量的庞大,在存储、传输、处理时非常困难,因此图像数据的压缩就显得非常重要。
宏块(Macro Block),一个图像首先要划分成多个块(4*4像素)才能进行处理,显然宏块应该是整数个块组成,通常宏块大小为16*16或4*4个像素,本方案优先选择将图像划分为4*4个像素。
本申请提供的图像压缩的装置、方法、电子设备以及计算机可读存储介质,旨在解决现有技术的如上技术问题。
下面通过对几个示例性实施方式的描述,对本申请实施例的技术方案以及本申请的技术方案产生的技术效果进行说明。
本申请实施例中提供了一种图像传输的装置,如图1所示,该装置包括:
图像划分模块110,用于将目标图像划分为若干个宏块。
本申请实施例目标图像为压缩前的原始图像,可以为任意单独的图像,也可以为视频中的任意一帧图像。
宏块为编码处理的基本单元,本申请实施例将目标图像进行分块,将待处理图像划分为连续且非重叠的相同大小的宏块,比如每个宏块为4*4个像素。
值得注意的是,本申请实施例每个宏块都是独立的,宏块与宏块之间不相互依赖,即后续过程中对目标图像进行压缩,实际上是对每个宏块单独进行压缩,这样的压缩方式使得各个宏块对应的码流相互独立,不相互依赖,可避免错误传播。
宏块分区模块120,用于对每个宏块进行分区,不同分区的任意两个像素间的像素距离大于预设阈值。
本申请实施例在对目标图像进行分块得到若干个宏块后,再对每个宏块进行分区,得到多个分区。
像素,也可称之为像素点,一张图像由若干个像素组成,像素在各个颜色通道的分量可以用空间坐标的形式表示。
本申请实施例包括每个像素包括三个颜色通道,比如RGB模型有R(Red,红色)通道、G(Green,绿色)通道以及B(Blue,蓝色)通道3种颜色通道。当然,本申请实施例的三个颜色通道也可为其他颜色模型对应的三个通道,比如HSV模型的三个维度对应的通道。
比如,假设以3颜色通道来描述像素,某像素为(r1,b1,c1),可解释为该像素在第一颜色通道的分量为r1,在第二颜色通道的分量为b1,在第三颜色通道的分量为c1。
两个像素之间的像素距离可以以两个像素分别在各个颜色通道的差的绝对值的和来表示,也可以其他形式表示,本申请实施例对此不作限制。具体地,假设像素A为(r1,g1,b1),B为(r2,g2,b2),则两个像素之间的像素距离d可以通过公式:
d=|r1-r2|+|g1-g2|+|b1-b2|来计算,
其中,d为两个像素之间的像素距离,r1为像素A在第一颜色通道的分量,g1为像素A在第二颜色通道的分量,b1为像素A在第三颜色通道的分量;r2为像素B在第一颜色通道的分量,g2为像素B在第二颜色通道的分量,b2为像素B在第三颜色通道的分量。
本申请实施例对宏块进行分区是根据各个像素之间的像素距离来划分的,同一分区的任意两个像素之间的像素距离小于预设阈值,即同一分区的任意两个像素之间的像素距离较为相近,若两个像素之间的像素距离大于预设阈值,则这两个像素会被划分到两个分区。
本申请实施例对宏块进行分区,得到多个分区,每个分区中都包含有至少一个像素,值得注意的是,本申请实施例对宏块进行分区,一个宏块最多有3个分区,即一个宏块的分区个数可以为1个、2个以及3个,对宏块进行分区的过程见后续内容。
本申请实施例根据宏块的分区个数确定宏块的量化数,宏块的量化数可根据分区个数来确定,量化数为宏块内像素的个数和宏块的分区个数的比值,假设量化数为N,宏块内像素的个数为m,分区个数为q(q=1,2,3),则N=m/q。对于一个分区的宏块,可确定该宏块的量化数为16,对于两个分区的宏块,该宏块的量化数为8,对于三个分区的宏块,该宏块的量化数为4。
分量确定模块130,用于对于每个分区,确定分区在各颜色通道的第一分量和第二分量。
本申请实施例第一分量和第二分量是通过基像素值确定的,对于每个分区,从所有像素的基像素值中确定分区中的最大基像素值和最小基像素值,将最大基像素值和最小基像素值分别输入对应分区的各颜色通道的目标函数,获得分区分别在各个颜色通道的第一分量和第二分量,其中,目标函数是对对应分区的像素在相应颜色通道的分量,进行直线拟合获得的,目标函数的确定详细过程见后续内容。
本申请实施例基像素值是指像素在多个颜色通道的分量的代数和,具体而言,像素C的在各个颜色通道的分量可表示为(r,g,b),可计算像素C的基像素值x=r+g+b。
本申请实施例在确定出所有像素的基像素值之后,从该分区中所有像素的基像素值中确定出最大基像素值xmax和最小基像素值xmin。
本申请实施例每个分区的各个颜色通道都有其对应的目标函数,同一个分区内的像素是相近或成线性关系,可通过对同一分区中的像素在各个颜色通道的分量进行直线拟合获得各个颜色通道对应的目标函数,详细过程见后续部分。
本申请实施例在确定出各个颜色通道的目标函数以及分区中的最大基像素值以及最小基像素值之后,将该最大基像素值和最小基像素值分别带入各个目标函数中,得到分区在各个颜色通道的第一分量和第二分量,详细过程见后续内容。
颜色索引确定模块140,用于对于每个像素,根据像素的对应分区的第一分量和第二分量确定像素在对应分区的颜色索引。
本申请实施例通过计算出每个分区在各个颜色通道的第一分量和第二分量来确定出该分区的各个像素分别对应的颜色索引,通过第一分量、第二分量以及颜色索引可以恢复该像素在各个颜色通道的分量,在计算出每个分区在各个颜色通道的第一分量和第二分量,每个像素在对应颜色通道的分量一定位于所属分区在对应的颜色通道的第一分量和第二分量之间,每个像素所展现出来的颜色受多个颜色通道的影响,在进行压缩时,需确定出对该像素影响最大的目标颜色通道。
对于每个像素,根据该像素在各颜色通道的分量以及像素对应分区在各颜色通道的第一分量和第二分量确定像素对应的目标颜色通道。
具体而言,对于任意一个颜色通道,计算该分区在该颜色通道的第一分量和第二分量之间的差值,得到第一参数,计算像素在该颜色通道的分量和最小颜色之间的差值,得到第二参数,确定第二参数和第一参数的比值,确定最大比值所在的颜色通道,该颜色通道即为目标颜色通道。
本申请实施例在确定出目标颜色通道后,根据该像素在目标颜色通道上的分量、该像素所属宏块的量化数以及该像素的对应分区在目标颜色通道的第一分量和第二分量获得该像素的颜色索引。
可根据公式idx=(N-1)*(v-v2)/(v1-v2)来计算,其中,idx为颜色索引,v为该像素在目标颜色通道的分量,v1为该像素分区在目标颜色通道的第一分量,v2为该像素分区在目标颜色通道的第二分量,N为宏块的量化数,N的取值可以为4、8或16,即对于一个分区的宏块,该宏块的量化数为16,对于两个分区的宏块,该宏块的量化数为8,对于三个分区的宏块,该宏块的量化数为4。
具体地,假设某像素(100,80,90),即该像素在三个颜色通道的分量分别为100、80和90,该像素所属的分区在第一颜色通道的第一分量和第二分量分别为100和30,可计算(100-30)/(100-30)=1,在第二颜色通道的第一分量和第二分量分别为100和20,可计算(80-20)/(100-20)=4/5,在第三颜色通道的第一分量和第二分量分别为150和60,可计算(90-60)/(150-60)=1/3,则确定目标颜色通道为第一颜色通道。
该像素宏块的分区为1个,可确定该像素宏块对应的量化数为16,则可计算该像素在对应分区的量化索引idx=(16-1)*(100-30)/(100-30)=15,则可确定该像素的量化索引为15。
本申请的颜色索引是在目标颜色通道上建立的索引,目标颜色通道是对像素影响最大的颜色通道,以目标颜色通道上的颜色索引代替其他颜色通道上的索引,能够有效减小缩放时造成的误差,比使用插值的方法、求最小距离计算颜色索引更为简单。
若已知某像素所在分区在各个颜色通道的第一分量和第二分量以及该像素的颜色索引,可通过该像素的对应分区在各个颜色通道的第一分量和第二分量以及该像素的颜色索引恢复该像素在各个颜色通道的分量,可通过公式v=idx*(v1-v2)/(N-1)+v2来恢复该像素在各个颜色通道的分量,其中,idx为该像素的颜色索引,v1和v2分别表示该像素的对应分区在某颜色通道的第一分量和第二分量,N为宏块的量化数,N的取值为4、8或16。
延续上例,某像素的量化索引为15,该像素所在分区在第一颜色通道的第一分量和第二分量为100和30,在第二颜色通道的第一分量和第二分量分别为100和20,在第三颜色通道的第一分量和第二分量分别为150和60,对该像素在三个颜色通道的分量进行恢复后得到的三个分量值分别为100、100和150,和上述的该像素在三个颜色通道的分量分别为100、80和90有一定的像素距离,由此可以确定本申请用一个颜色通道的颜色索引对图像进行压缩有一定的损失,是有损压缩,但本申请的颜色索引是目标颜色通道上的索引,目标颜色通道是对像素影响最大的颜色通道,以目标颜色通道上的颜色索引代替其他颜色通道上的索引,能够有效减小缩放时造成的误差。
压缩码流获得模块150,用于获取预设的图像压缩比例,对于任意一个宏块,根据宏块的分区个数、各个分区在各个颜色通道的第一分量和第二分量以及所有像素的颜色索引对宏块进行压缩,得到宏块对应的压缩码流。
本申请实施例预设的图像压缩比例是指用户期待的压缩比例,图像压缩比例为目标图像的压缩码流和目标图像的原始码流的比值,比如压缩比例为1:3,即目标图像的压缩码流为目标图像的原始码流的1/3,实现了对目标图像的压缩,本申请实施例将目标图像划分为若干个宏块,图像压缩比例也是宏块压缩比例,即图像压缩比例同样为宏块的压缩码流和宏块的原始码流的比值。
本申请实施例在确定预设的图像压缩比例之后,确定将宏块内的分区个数、各个分区在各个颜色通道的第一分量和第二分量以及所有像素的颜色索引对压入码流各自所需的比特位长。
具体地,可为该宏块的分区个数设置第一标识,对于分区个数为1的宏块,设置第一标识为00,耗费2bit,对于分区个数为2的宏块,设置第一标识为01,耗费2bit,对于分区个数为3的宏块,设置第一标识为1,耗费1bit。可以理解的是,在将第一标识压入码流时,可先确定该码流的第一个比特位,第一个比特位为0,确定要么为1个分区,要么2个分区,进而确定第二个比特位,第二个比特位为0,则确定为1个分区,第二个比特位为1,确定为2个分区,第一比特位为1,确定为3个分区。
同样,可为每个像素设置分区索引,分区索引可以为该像素分区对应的分区编号,对于1个分区的宏块,可以不设置分区索引,以节约码流,耗费0bit,对于2个分区的宏块,每个像素的分区索引要么为1要么为0,则确定耗费16bit存储各像素的分区索引;对于3个分区的宏块,每个像素的分区索引为00、01或10中的任意一种,则确定耗费32bit存储各像素的分区索引。
将目标图像的每个像素在各个颜色通道的分量压入码流需要10bit,每个像素有三个颜色通道的分量,将每个像素在各个颜色通道的分量压入码流需30bit,对于4*4的宏块,将该宏块中所有像素在各个颜色通道的分量压入码流,需要480bit,本申请实施例图像的压缩比例为4:15,即需要实现目标图像对应的压缩码流为128bit。
延续上例,已确定将分区个数对于的标志位、分区索引、颜色索引压入码流所需的比特位,用压缩后的码流的总比特位减去将分区个数、分区索引、颜色索引压入码流所需的比特位,即得到将各个分区在各个颜色通道的第一分量和第二分量对应的比特位,对于1个分区的宏块,该子区的各个颜色通道的第一分量和第二分量压入码流均需10bit;对于2个分区的宏块,将各子区的各个颜色通道的第一分量和第二分量压入码流均需5bit(高比特位的5bit,在对该像素的各个颜色通道的分量进行恢复时,先将该比特位左移5位);对于3个分区的宏块,将各子区的各个颜色通道的第一分量和第二分量压入码流均需4bit(高比特位的4bit,在对该像素的各个颜色通道的分量进行恢复时,先将该比特位左移6bit)。
在确定将分区个数对于的标志位、分区索引、颜色索引以及各个分区在各个颜色通道的第一分量和第二分量压入码流所需的比特位之后,按照预设的顺序,比如该顺序为分区个数标志位、分区索引、颜色索引以及各个分区在各个颜色通道的第一分量和第二分量,将上述分区个数标志位、分区索引、颜色索引以及各个分区在各个颜色通道的第一分量和第二分量分别压入码流。
本申请实施例在确定该分区在各个颜色通道的第一分量和第二分量以及所有像素的颜色索引,对各个分区进行压缩,得到该分区的压缩码流,再将各个分区的压缩码流进行组合得到该宏块的压缩码流,在对各个分区的码流进行组合时,需要确定每个像素对应的索引,将每个像素对应的索引压入码流,对于整个宏块而言,宏块的码流中包括以下信息:分区个数、各个像素的分区索引、各个分区在各个颜色通道的第一分量和第二分量以及各个像素的颜色索引。
本申请实施例可以为不同的分区个数设置不同的编码模式,该编码模式中包括为分区个数对应的第一标识占的比特数、各像素的分区索引占的比特数、各个颜色通道的第一分量和第二分量占的比特数以及各个像素的颜色索引占的比特数设置的格式。
事实上,本申请实施例在确定出宏块的分区个数后,可直接确定该宏块对应的编码模式,对于分区个数为1的宏块,对应编码模式mode1,分区个数为2的宏块,对应编码模式为mode2,分区个数为3的宏块,对应的编码模式为mode3,通过确定各宏块的分区个数,可确定各宏块对应的编码模式,无需采用恢复误差来判断选用那种压缩模式,采用恢复误差确定压缩模式的方法需要确定每个像素的分别对应的误差,这种压缩方式在一定程度上虽然降低了压缩误差,但这种方式计算量较大,编码模式多,硬件实现较为复杂。本申请实施例直接根据分区个数确定宏块的压缩模式,每个宏块只对应一种压缩模式,压缩方式较为简单,对于颜色复杂的宏块,其对应的分区数相对较多,压缩误差相对较小,可达到与上述恢复误差确定压缩模式的方法达到相近的压缩误差。
本申请实施例通过确定每个分区在各个颜色通道的第一分量和第二分量以及每个像素的颜色索引来表征对整个分区的所有像素在各个颜色通道的分量,计算量较小,实现过程比较简单,另外,各个像素的颜色索引分别在各自对应的目标颜色通道上的,各像素的分量在目标颜色通道上的比重最大,能够有效减小压缩误差。
本申请实施例提供了一种可能的实现方式,宏块分区模块,包括:
分区中心确定子模块,用于确定上一次迭代过程的分区中心;
像素所在分区确定子模块,用于对于每个像素,确定像素与每个上一次迭代过程的分区中心之间的像素距离,将像素划分至最小像素距离对应的上一次迭代过程的分区中心所在的分区;
其中,首次迭代过程的分区中心以任意一个颜色通道的分量的最大值、任意一个颜色通道的分量的最小值以及任意一个颜色通道分量的平均值的组合表征。
本申请实施例对宏块进行分区是一个不断迭代的过程,首先迭代过程的分区中心以任意一个颜色通道的分量的最大值,任意一个颜色通道的分量的最小值以及任意一个颜色通道分量的平均值的组合表征。
具体地,获取各像素在各颜色通道的分量,并对每个像素在各颜色通道的分量右移第一预设比特位长度,具体地,各像素在颜色通道的分量的初始长度为10bit,第一预设比特位长度为4,即右移之后还剩下6bit。
本申请实施例对各像素在各颜色通道的分量进行比特位右移,可降低计算过程中的位宽,去除各像素之间细微像素距离的影响,提高分区的精度,从而降低过驱动压缩的误差,使得分区结果更稳定可靠。
本申请实施例在对每个像素在各个颜色通道的分量进行移位之后,确定所有像素在每个颜色通道的分量的最大值、最小值以及平均值,即为Rmin,Rmean,Rmax,Gmin,Gmean,Gmax,Bmin,Bmean,Bmax,其中,R、G、B表示不同的颜色通道,由此可生成首次迭代过程的分区中心,为(Rmax,Gmean,Bmin),(Rmean,Gmin,Bmax),(Rmin,Gmax,Bmean),即首次迭代过程的分区中心以所有像素的任意一个颜色通道的分量的最大值、任意一个颜色通道的分量的最小值以及任意一个颜色通道的分量的平均值的组合表征,由此可生成首次迭代过程中的三个分区中心。
本申请实施例首次迭代过程的分区中心选用所有像素的任意一个颜色通道的分量的最大值任意一个颜色通道的分量的最小值以及任意一个颜色通道的分量的平均值表征,使得三个首次迭代过程的分区中心较为分散,能够涵盖到各个像素。
本申请实施例在确定出上一次迭代过程中的三个分区中心之后,确定每个像素与各个分区中心之间的像素距离(像素距离也称差异),假设宏块内每个像素用(ri,gi,bi)表示,每个分区中心用(rj,gj,bj),计算二者之间的像素距离的公式如下:
d=|ri-rj|+|gi-gj|+|bi-bj|,(i=0~15,j=0~2)
其中,d表示每个像素i与分区中心j之间的像素距离,ri表示宏块内某像素在第一颜色通道的分量,gi表示宏块内某像素在第二颜色通道的分量,bi表示宏块内某像素在第三颜色通道的分量;rj表示某个分区中心在第一颜色通道的分量,gj表示某个分区中心在第二颜色通道的分量,bj表示某个分区中心在第三颜色通道的分量。
本申请实施例在计算出每个像素和每个分区中心之间的像素距离之后,将该像素距离右移第二比特位长度,具体地,本申请实施例可将该像素距离右移3位,即d>>3(>>表示右移),并从右移后的像素距离中确定出最小像素距离,像素距离越小说明二者之间越相似,本申请实施例在确定出最小像素距离之后,将该像素划分至最小像素距离对应的分区中心所在的分区。
本申请实施例提供了一种可能的实现方式,像素所在分区确定子模块还包括:
平均值确定单元,用于确定同一分区的所有像素在每个颜色通道的平均值。
分区中心迭代单元,用于对上一次迭代过程的分区中心进行更新,获得当前迭代过程的分区中心,当前迭代过程的分区中心以相应分区中所有像素在各个颜色通道的平均值表征。
像素距离第一确定单元,用于确定当前迭代过程的分区中心和上一次迭代过程的分区中心之间的像素距离。
像素距离第二确定单元,用于若像素距离大于预设阈值,则计算每个像素与每个当前迭代过程的分区中心之间的像素距离;
像素所在分区划分单元,用于将每个像素划分至最小像素距离对应的当前迭代过程的分区中心所在的新分区,直至相邻两次迭代过程的分区中心之间的像素距离小于预设阈值。
本申请实施例在将各像素划分至最小像素距离对应的上一次迭代过程所在的分区之后,确定同一分区的所有像素在每个颜色通道的平均值。在实际应用中,可为每个分区中心设置分区编号,同时为每个像素设置分区索引,分区索引即为该分区中心对应的分区编号,用于表征该像素所属的分区。
假设上一次迭代过程的分区中心分别为A、B和C,其中A的分区编号为00,B的分区编号为01,C的分区编号为11,若某宏块中的像素的分区索引为00、01或11中的任意一种,则可确定该宏块只有一个分区,若某宏块中的像素的分区索引包括00、01或11中任意两种,则确定该宏块有两个分区,若某宏块中的像素的分区索引同时包括00、01以及11,则确定该宏块有三个分区。
本申请实施例在确定出各个像素所属的分区之后,确定同一分区的所有像素在每个颜色通道的平均值。
本申请实施例在确定出同一分区的所有像素在每个颜色通道的平均值之后,对上一次迭代过程的分区中心进行更新,获得当前迭代过程的分区中心,当前迭代过程的分区中心以相应分区中心在每个颜色通道的平均值表征。
本申请实施例在对上一个迭代过程的分区中心进行更新后,得到当前迭代过程的分区中心,此时需计算当前迭代过程的分区中心和上一个迭代过程的分区中心之间的像素距离,通过该像素距离来判断对各个分区中心是否趋于稳定,进而判断对宏块的分区是否趋于稳定。
若当前迭代过程的分区中心和上一次迭代过程的分区中心之间的像素距离大于预设阈值,预设阈值可以为16,可确定当前迭代过程的分区中心未趋于稳定,需再次计算每个像素和当前迭代过程中的分区中心之间的像素距离,将每个像素划分至最小像素距离对应的当前迭代过程的分区中心所在的分区,直至相邻两次迭代过程的分区中心之间的像素距离小于预设阈值。
本申请实施例在相邻两次迭代过程的分区中心之间的像素距离小于预设阈值时,确定各个分区中心趋于稳定。
如图2所示,其示例性示出了对宏块进行分区的流程示意图,包括:
步骤S201,将宏块内每个像素在各个颜色通道的分量右移第一预设比特位长度;
步骤S202,计算该宏块内所有像素在各个颜色通道的分量的最大值、最小值以及平均值,可以用Rmin,Rmean,Rmax,Gmin,Gmean,Gmax,Bmin,Bmean,Bmax表示;
步骤203,生成首次迭代过程的分区中心为c0(Rmax,Gmean,Bmin),c1(Rmean,Gmin,Bmax),c2(Rmin,Gmax,Bmean);
步骤S204,计算宏块内每个像素距离上一次迭代过程的分区中心之间的像素距离d1;
步骤S205,将像素划分至最小像素距离对应的上一次迭代过程的分区中心所在的分区,并为每个像素建立分区索引;
步骤S206,确定同一分区的所有像素在每个颜色通道的平均值;
步骤S207,将上一次迭代过的分区中心进行更新,获得当前迭代过程的分区中心,当前迭代过程的分区中心以相应分区中所有像素在各个颜色通道的平均值表征;
步骤S208,确定当前迭代过程的分区中心和上一次迭代过程的分区中心之间的像素距离d2;
步骤S209,判断像素距离d2是否大于预设阈值;若是,则重复执行步骤S204~S209;
步骤S210,若否,则输出分区图;分区图中包括各个像素的分区索引。
如图3a所示,其示例性示出了包含一个分区的宏块对应的分区图,所有的像素的分区索引都是相同的;
如图3b所示,其示例性示出了包含两个分区的宏块对应的分区图,有的像素的分区索引为1,有的像素的分区索引为0;
如图3c所示,其示例性示出了包含三个分区的宏块对应的分区图,有的像素的分区索引为00,有的像素的分区索引为10,有的像素的分区索引为11。
很明显,对于一个分区的宏块,无需将其对应的分区图压入码流;对于两个分区的宏块,每个像素的分区索引需要用0或1来表示,花费16bit压入码流,对于三个分区的宏块,每个像素的分区索引需要用00或01或11来表表示,花费32bit压入码流。
本申请实施例提供了一种可能的实现方式,分量确定模块,包括:
分量确定子模块,用于确定分区中的最大基像素值和最小基像素值,将最大基像素值和最小基像素值分别输入对应分区的各颜色通道的目标函数,获得分区在各颜色通道的第一分量和第二分量;
其中,目标函数是对分区的像素在相应颜色通道的分量,进行直线拟合获得的。
本申请实施例基像素值是指一个像素在多个颜色通道的分量的代数和,具体而言,若像素C的在各个颜色通道的分量以(r,g,b)表示,可计算像素C的基像素值x=r+g+b。
本申请实施例在确定出所有像素的基像素值之后,从该分区中所有像素的基像素值中确定出最大基像素值xmax和最小基像素值xmin。
本申请实施例目标函数包括:
R=a0*xm+b0
G=a1*xm+b1
B=a2*xm+b2
其中,R、G和B分别为各颜色通道的第一分量或第二分量,xm为x为最大基像素值或最小基像素值,具体而言,将最大基像素值xmax输入至R=a0*xm+b0,可得到该分区在R颜色通道的第一分量,将最小基像素值xmin输入至R=a0*xm+b0,可得到该分区在R颜色通道的第二分量,由此获得该分区在各个颜色通道的第一分量和第二分量。
上述目标函数中的a0、a1、a2、b0、b1以及b2是通过以下公式确定的:
a0=SUMrx*m-SUMx*SUMr,
b0=SUMxx*SUMr-SUMx*SUMrx,
a1=SUMgx*m-SUMx*SUMg,
b1=SUMbx*SUMg-SUMx*SUMgx,
a2=SUMbx*m-SUMx*SUMb,
b2=SUMxx*SUMb-SUMx*SUMbx,
其中,x表示最大基像素值或最小基像素值,r、g和b表示颜色通道,SUMr、SUMg、SUMb分别表示示每个颜色通道的分量的代数和,SUMx表示所有基像素值的代数和,SUMrx、SUMgx、SUMbx分别表示每个颜色通道的分量与基像素值乘积的代数和,SUMxx表示所有基像素的二次方的代数和。SUMr、SUMg、SUMb、SUMx、SUMrx、SUMgx、SUMbx以及SUMxx的计算公式如下:
其中,m为子区内的像素的个数,i表示第i个像素,r、g和b表示颜色通道。
本申请实施例在确定出上述SUMr、SUMg、SUMb、SUMx、SUMrx、SUMgx、SUMbx以及SUMxx之后,代入公式:
a0=SUMrx*m-SUMx*SUMr,
b0=SUMxx*SUMr-SUMx*SUMrx,
a1=SUMgx*m-SUMx*SUMg,
b1=SUMbx*SUMg-SUMx*SUMgx,
a2=SUMbx*m-SUMx*SUMb,
b2=SUMxx*SUMb-SUMx*SUMbx,
来计算出a0、b0、a1、b1、a2以及b2的值,并将这些值代入各个颜色通道的目标函数:
R=a0*xm+b0
G=a1*xm+b1
B=a2*xm+b2
,即可得到各个颜色通道对应的目标函数,再将最大基像素值xmax和最小基像素值xmin代入上述目标函数即可得出各分区在各颜色通道的第一分量和第二分量,得到该分区在各个颜色通道对应的第一分量和第二分量,分别为R1和R2,G1和G2,B1和B2,将各颜色通道的第一分量组合可得到第一分区颜色为(R1,G1,B1),将各颜色通道的第二分量组合可得到第二分区颜色为(R2,G2,B2),R1和R2为同一颜色通道的第一分量和第二分量;G1和G2为同一颜色通道的第一分量和第二分量;B1和B2为同一颜色通道的第一分量和第二分量。
本申请实施例以基像素值作为基轴进行直线拟合得到目标函数,结果稳定,可抵抗噪声,提高拟合直线的精度,且其实现过程比使用其中的一个颜色通道的分量作为基轴更加简单高效。
本申请实施例提供了一种可能的实现方式,分量确定子模块,包括:
基像素值获得单元,用于根据分区中每个像素的所有颜色通道的分量的代数和,获得相应像素的基像素值;
最大基像素值和最小基像素值确定单元,用于从分区中所有像素的基像素值中确定最大基像素值和最小基像素值。
本申请实施例基像素值是指像素在多个颜色通道的分量的代数和,具体而言,像素C在各个颜色通道的分量为(r,g,b),可计算像素C的基像素值x=r+g+b。
本申请实施例在确定出所有像素的基像素值之后,从该分区中所有像素的基像素值中确定出最大基像素值xmax和最小基像素值xmin,在此不再过多论述。
本申请实施例提供了一种可能的实现方式,颜色索引确定模块,包括:
量化数确定子模块,用于根据宏块的分区个数确定所述宏块的量化数;
目标颜色通道确定子模块,用于确定像素在对应分区的目标颜色通道;
颜色索引确定子模块,用于根据像素所属宏块的量化数、像素在所述目标颜色通道的分量以及所述目标颜色通道的第一分量和第二分量,确定所述像素在对应分区的颜色索引。
本申请实施例根据宏块的分区个数确定宏块的量化数,宏块的量化数可根据分区个数来确定,量化数为宏块内像素的个数和宏块的分区个数的比值,假设量化数为N,宏块内像素的个数为m,分区个数为q(q=1,2,3),则N=m/q。对于一个分区的宏块,可确定该宏块的量化数为16,对于两个分区的宏块,该宏块的量化数为8,对于三个分区的宏块,该宏块的量化数为4。
本申请实施例包括多个颜色通道,对于任意一个颜色通道,计算该分区在该颜色通道的第一分量和第二分量之间的差值,得到第一参数,计算像素在该颜色通道的分量和最小颜色之间的差值,得到第二参数,确定第二参数和第一参数的比值,确定最大比值所在的颜色通道,该颜色通道即为目标颜色通道。
本申请实施例在确定出目标颜色通道后,根据该像素在目标颜色通道上的分量、该像素所属宏块的量化数以及该像素的对应分区在目标颜色通道的第一分量和第二分量获得该像素的颜色索引。
可根据公式idx=(N-1)*(v-v2)/(v1-v2)来计算,其中,idx为颜色索引,v为该像素在目标颜色通道的分量,v1为该像素分区在目标颜色通道的第一分量,v2为该像素分区在目标颜色通道的第二分量,N为宏块的量化数。
将各个像素在目标颜色通道的分量、目标颜色通道的第一分量和第二分量以及宏块的量化数代入上述公式,可计算出各个像素的量化索引,可确定(v-v2)/(v1-v2)的值小于等于1,则idx<=N-1,对于1个分区的宏块,量化数N=16,则该宏块内各个像素的颜色索引最大为15,由此确定需要4bit来存储各像素的颜色索引,存储16个像素的颜色索引需64bit;对于2个分区的宏块,量化数N=18,该宏块内各个像素的颜色索引最大为7,由此确定需要3bit来存储各像素的颜色索引,存储16个像素的颜色索引需64bit;对于3个分区的宏块,量化数N=4,该宏块内各个像素的颜色索引最大为3,由此确定需要2bit来存储各像素的颜色索引,存储16个像素的颜色索引需32bit。
本申请实施例提供了一种可能的实现方式,目标颜色通道确定子模块,包括:
第一参数确定单元,用于对于任意一个颜色通道,根据像素在对应颜色通道的分量和分区在对应颜色通道的第二分量之间的差值,得到第一参数;
第二参数确定单元,用于确定分区在对应颜色通道的第一分量和分区在对应颜色通道的第二分量之间的差值,得到第二参数;
第三参数确定单元,用于根据第一参数和第二差值的比值,得到第三参数;
目标颜色通道确定单元,用于确定最大第三参数所对应的颜色通道为目标颜色通道。
本申请实施例计算出每个分区在各个颜色通道的第一分量和第二分量,每个像素在对应颜色通道的分量一定位于所属分区在对应的颜色通道的第一分量和第二分量之间,每个像素所展现出来的颜色受多个颜色通道的影响,在进行压缩时,需确定出对该像素影响最大的目标颜色通道。
对于任意一个颜色通道,计算该分区在该颜色通道的第一分量和第二分量之间的差值,得到第一参数,计算像素在该颜色通道的分量和最小颜色之间的差值,得到第二参数,确定第二参数和第一参数的比值,得到第三参数,确定最大第三参数所在的颜色通道,该颜色通道即为目标颜色通道。
假设某像素(100,80,90),即该像素在三个颜色通道的分量分别为100、80和90,该像素所属的分区在第一颜色通道的第一分量和第二分量分别为100和30,可计算(100-30)/(100-30)=1,在第二颜色通道的第一分量和第二分量分别为100和20,可计算(80-20)/(100-20)=4/5,在第三颜色通道的第一分量和第二分量分别为150和60,可计算(90-60)/(150-60)=1/3,则确定目标颜色通道为第一颜色通道。
本申请实施例提供了一种可能的实现方式,颜色索引确定模块,包括:
第一目标参数确定子模块,用于确定像素在目标颜色通道的分量与目标颜色通道的第二分量之间的差值,得到第一目标参数;
第二目标参数确定子模块,用于确定目标颜色通道的第一分量和第二分量之间的差值,得到第二目标参数;
第三目标参数确定子模块,用于确定第一目标参数和第二目标参数之间的比值,得到第三目标参数;
颜色索引确定子模块,用于根据第三目标参数和量化数确定像素在对应分区的颜色索引。
本申请实施例第一目标参数是像素在目标颜色通道的分量与目标颜色通道的第二分量之间的差值;第二目标参数是目标颜色通道的第一分量和第二分量之间的差值;第三目标参数是第一目标参数和第二目标参数之间的比值,可根据第三目标参数和量化数确定像素在对应分区的颜色索引。
具体地,延续上例,在上述实施例中已经确定颜色索引idx=(N-1)*[(v-v2)/(v1-v2)],其中v为该像素在目标颜色通道的分量,v1和v2为该像素所属分区的目标颜色通道的第一分量和第二分量,N为量化数,(v-v2)为第一目标参数,(v1-v2)为第二目标参数,[(v-v2)/(v1-v2)]为第三目标参数,(N-1)*[(v-v2)/(v1-v2)]即为该像素的颜色索引。
本申请实施例通过建立每个像素在对应的分区上的颜色索引,就无需再对各个像素在各个颜色通道的分量进行存储,相对于存储各像素在各个颜色通道的分量,存储颜色索引只需少量的比特数。
如图4所示,其示例性示出了目标图像的各个宏块的对应的分区个数的示意图,如图所示,空白无填充宏块的分区个数为1,斜线填充的宏块的分区个数为3,竖线填充的宏块的分区个数为2。
本申请实施例提供了一种图像压缩方法,如图5所示,该方法包括:
步骤S501,将目标图像划分为若干个宏块;
步骤S502,对每个宏块进行分区,不同分区的任意两个像素间的像素距离大于预设阈值;
步骤S503,对于每个分区,确定分区在各颜色通道的第一分量和第二分量;
步骤S504,对于每个像素,根据像素的对应分区的第一分量和第二分量确定像素在对应分区的颜色索引;
步骤S505,获取预设的图像压缩比例,对于任意一个宏块,根据宏块的分区个数各个分区在各个颜色通道的第一分量和第二分量以及所有像素的颜色索引对宏块进行压缩,得到宏块对应的压缩码流。
本申请实施例通过每个分区在各个颜色通道的第一分量和第二分量以及每个像素的颜色索引来表征对整个分区的所有像素在各个颜色通道的分量,计算量较小,实现过程比较简单,另外,各个像素的颜色索引分别在各自对应的目标颜色通道上的,各像素在目标颜色通道上的比重最大,能够有效减小压缩误差。
本申请实施例提供了一种可能的实现方式,对每个宏块进行分区,包括:
确定上一次迭代过程的分区中心;
对于每个像素,确定像素与每个上一次迭代过程的分区中心之间的像素距离,将像素划分至最小像素距离对应的上一次迭代过程的分区中心所在的分区;
其中,首次迭代过程的分区中心以所有像素的任意一个颜色通道的分量的最大值、任意一个颜色通道的分量的最小值以及任意一个颜色通道的分量的平均值的组合表征。
本申请实施例提供了一种可能的实现方式,将像素划分至最小像素距离对应的上一次迭代过程的分区中心所在的分区,之后还包括:
确定同一分区的所有像素在每个颜色通道的分量的平均值;
对上一次迭代过程的分区中心进行更新,获得当前迭代过程的分区中心,当前迭代过程的分区中心以相应分区中所有像素在各个颜色通道的平均值表征;
确定当前迭代过程的分区中心和上一次迭代过程的分区中心之间的像素距离;
若当前迭代过程的分区中心和上一次迭代过程的分区中心之间的像素距离大于预设阈值,则计算每个像素与每个当前迭代过程的分区中心之间的像素距离;
将每个像素划分至最小像素距离对应的当前迭代过程的分区中心所在的分区,直至相邻两次迭代过程的分区中心之间的像素距离小于预设阈值。
本申请实施例提供了一种可能的实现方式,确定分区在各颜色通道的第一分量和第二分量,包括:
确定分区中的最大基像素值和最小基像素值,将最大基像素值和最小基像素值分别输入对应分区的各颜色通道的目标函数,获得分区在各颜色通道的第一分量和第二分量;
其中,目标函数是对分区的像素在相应颜色通道的分量,进行直线拟合获得的。
本申请实施例提供了一种可能的实现方式,根据像素的对应分区的第一分量和第二分量确定像素在对应分区的颜色索引,包括:
根据宏块的分区个数确定宏块的量化数;确定像素在对应分区的目标颜色通道;
根据像素所属宏块的量化数、像素在目标颜色通道的分量以及目标颜色通道的第一分量和第二分量,确定像素在对应分区的颜色索引。
本申请实施例的装置可执行本申请实施例所提供的方法,其实现原理相类似,本申请各实施例的装置中的各模块所执行的动作是与本申请各实施例的方法中的步骤相对应的,对于装置的各模块的详细功能描述具体可以参见前文中所示的对应方法中的描述,此处不再赘述。
本申请实施例中提供了一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,该处理器执行上述计算机程序以实现图像压缩方法的步骤,与相关技术相比可实现:本申请实施例通过每个分区在各个颜色通道的第一分量和第二分量以及每个像素的颜色索引来表征对整个分区的所有像素在各个颜色通道的分量,计算量较小,实现过程比较简单,另外,各个像素的颜色索引分别在各自对应的目标颜色通道上的,各像素的分量在目标颜色通道上的比重最大,能够有效减小压缩误差。
在一个可选实施例中提供了一种电子设备,如图6所示,图6所示的电子设备6000包括:处理器6001和存储器6003。其中,处理器6001和存储器6003相连,如通过总线6002相连。可选地,电子设备6000还可以包括收发器6004,收发器6004可以用于该电子设备与其他电子设备之间的数据交互,如数据的发送和/或数据的接收等。需要说明的是,实际应用中收发器6004不限于一个,该电子设备6000的结构并不构成对本申请实施例的限定。
处理器6001可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC(Application SpecificIntegrated Circuit,专用集成电路),FPGA(Field Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器6001也可以是实现确定功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线6002可包括一通路,在上述组件之间传送信息。总线6002可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。总线6002可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器6003可以是ROM(Read Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(Random Access Memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically ErasableProgrammable Read Only Memory,电可擦可编程只读存储器)、CD-ROM(Compact DiscRead Only Memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质、其他磁存储设备、或者能够用于携带或存储计算机程序并能够由计算机读取的任何其他介质,在此不做限定。
存储器6003用于存储执行本申请实施例的计算机程序,并由处理器6001来控制执行。处理器6001用于执行存储器6003中存储的计算机程序,以实现前述方法实施例所示的步骤。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及相应内容。与现有技术相比可实现:本申请实施例通过每个分区在各个颜色通道的第一分量和第二分量以及每个像素的颜色索引来表征对整个分区的所有像素在各个颜色通道的分量,计算量较小,实现过程比较简单,另外,各个像素的颜色索引分别在各自对应的目标颜色通道上的,各像素的分量在目标颜色通道上的比重最大,能够有效减小压缩误差。
应该理解的是,虽然本申请实施例的流程图中通过箭头指示各个操作步骤,但是这些步骤的实施顺序并不受限于箭头所指示的顺序。除非本文中有明确的说明,否则在本申请实施例的一些实施场景中,各流程图中的实施步骤可以按照需求以其他的顺序执行。此外,各流程图中的部分或全部步骤基于实际的实施场景,可以包括多个子步骤或者多个阶段。这些子步骤或者阶段中的部分或全部可以在同一时刻被执行,这些子步骤或者阶段中的每个子步骤或者阶段也可以分别在不同的时刻被执行。在执行时刻不同的场景下,这些子步骤或者阶段的执行顺序可以根据需求灵活配置,本申请实施例对此不限制。
以上仅是本申请部分实施场景的可选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请的方案技术构思的前提下,采用基于本申请技术思想的其他类似实施手段,同样属于本申请实施例的保护范畴。