具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整的描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部。基于所描述的本公开实施例,本领域普通技术人员在无需创造性劳动的前提下获得的所有其他实施例都属于本公开保护的范围。在以下描述中,一些具体实施例仅用于描述目的,而不应该理解为对本公开有任何限制,而只是本公开实施例的示例。在可能导致对本公开的理解造成混淆时,将省略常规结构或构造。
除非另外定义,本公开实施例使用的技术术语或科学术语应当是本领域技术人员所理解的通常意义。本公开实施例中使用的“第一”、“第二”以及类似词语并不表示任何顺序、数量或重要性,而只是用于区分不同的组成部分。
下面,将参照附图详细描述根据本公开的各个实施例。需要注意的是,在附图中,将相同的附图标记赋予基本上具有相同或类似结构和功能的组成部分,并且将省略关于它们的重复描述。
图1示出了根据本公开实施例的图像压缩装置的结构示意图。
如图1所示,图像压缩装置100包括划分模块110、第一确定模块120、第二确定模块130和第三确定模块140。
在本公开实施例中,划分模块110将目标图像划分为多个图像块,图像块包括多个像素。例如,目标图像为视频中的任一帧图像,目标图像为待压缩的图像。例如,图像块可以为宏块(macroblock),图像块是目标图像中具有相同尺寸的非重叠宏块,每个图像块彼此独立,图像块与图像块之间不存在依赖关系,可以分别采用各自最佳适配的压缩算法对每个图像块进行单独压缩,从而得到每个图像块的具有最佳压缩质量的压缩码流。
例如,划分模块110可以将目标图像划分为连续且不重合的多个图像块,每个图像块可以包括4×4个像素或者2×8个像素,本公开对图像块的尺寸不做限定。每个像素对应一个像素值,每个像素可以包括三个颜色通道,例如红色(Red,R)通道、绿色(Green,G)通道和蓝色(Blue,B)通道,因此每个像素值包括与三个颜色通道对应的三个通道像素值,即每个颜色通道对应一个通道像素值。每个图像块可以为一个4×4的RGB宏块。例如,假设每个像素中每个颜色通道的数据量为10bit,每个图像块的数据量为4×4×3×10bit=480bit,因此,每个原始数据的数据量为480bit。
在本公开实施例中,对于多个图像块的每个图像块,第一确定模块120根据多个像素之间的相关性,确定每个图像块的有效数据。例如,有效数据包括每个颜色通道的通道有效数据和每个像素的像素有效数据。例如,分别基于在每个颜色通道内多个像素之间的相关性,去除图像数据中的冗余数据,从而得到每个颜色通道的通道有效数据。基于每个像素的多个颜色通道之间的相关性,去除图像数据中的冗余数据,从而得到像素有效数据。
例如,以整个图像块为对象,根据图像块在三个颜色通道的像素值,分别确定图像块关于三个颜色通道的相关度,从而确定在每个颜色通道内图像块的多个像素之间的相关性。在确定图像块关于三个颜色通道的相关度均满足预设条件的情况下,可以以图像块的多个像素在每个颜色通道的像素平均值作为该图像块的通道有效数据,图像块的通道有效数据包括三个颜色通道的通道有效数据。
例如,对于任一颜色通道,预设条件可以为在该颜色通道内所有像素中最大像素值与最小像素之间的差值小于或等于预设值。例如,预设值可以为10。
例如,在确定R通道的所有R通道像素值中最大R通道像素值与最小R通道像素值之间的差值小于或等于10的情况下,确定该图像块关于R通道的相关度较大。在确定图像块关于R通道的相关度较大的情况下,可以以图像块的多个像素的R通道像素值的平均值作为图像块关于R通道的通道有效数据。
例如,图像块可以包括4×4个像素,在确定图像块关于三个颜色通道的相关度均满足预设条件的情况下,可以以16个R通道像素值的平均值作为图像块的R通道有效数据,以16个G通道像素值的平均值作为图像块的G通道有效数据,以及以16个B通道像素值的平均值作为图像块的B通道有效数据。
例如,在确定图像块的三个颜色通道中存在任一颜色通道的相关度不满足预设条件时,以图像块中每个像素的三个颜色通道像素值作为图像块关于三个颜色通道的通道有效数据。
通过本公开实施例,可以分别对图像块的每个通道内的像素值进行分析,分别确定每个通道内的通道有效数据,从而利用3个通道像素值(3×1个通道像素值)作为通道有效数据来表示图像块的48(3×16)个通道像素值,去除冗余数据。
例如,以图像块的每个像素为对象,根据每个像素在三个颜色通道的像素值,分别确定每个像素关于三个颜色通道的相关度,从而确定在每个像素中三个颜色通道之间的相关性。在确定每个像素关于三个颜色通道的相关度均满足预设条件的情况下,可以以每个像素在三个颜色通道中任意一个或任意两个的通道像素值作为该图像块的像素有效数据。图像块的像素有效数据包括多个像素的像素有效数据。
例如,对于任一像素,预设条件可以为该像素的任一颜色通道与另一任意颜色通道的像素值之间的差值小于或等于预设值,预设值可以为10。
例如,在确定图像块的每个像素的R通道和G通道像素值之间的差值均小于或等于10(每个像素满足小于和等于中的任意一种)的情况下,可以认为每个像素关于R通道和G通道的相关度都较大。可以从R通道和G通道中选择任意一个颜色通道(统一选择R通道或G通道)的像素值作为图像块中每个像素的像素有效数据。
例如,可以对每个像素的三个颜色通道的像素值进行两两计算,获得任意两个颜色通道的像素值之间的相关度。
在每个像素的三个颜色通道中任一颜色通道均与另一颜色通道的像素值之间的相关度较大时,可以从每个像素的三个颜色通道中任意选择同一个颜色通道或同样两个颜色通道的像素值作为图像块的有效数据。
在三个颜色通道中仅存在两个颜色通道(同样的两个颜色通道)的像素值之间的相关度较大,三个颜色通道的另一颜色通道与该两个颜色通道的像素值之间的相关度均较小,可以从每个像素的该两个颜色通道中任意选择同一个通道颜色以及该另一颜色通道的像素值作为图像块的像素有效数据。
在三个颜色通道中任意两个颜色通道的像素值之间的相关度均较小时,以三个通道颜色的像素值作为图像块的像素有效数据。
例如,图像块可以包括4×4个像素,在确定图像块的16个像素关于R通道和G通道的相关度以及关于R通道和B通道的相关度均满足预设条件的情况下,可以选择以16个像素的R通道像素值和16个像素的B通道像素值作为图像块的像素有效数据,也可以选择以16个像素的G通道像素值和16个像素的B通道像素值作为图像块的像素有效数据,也可以选择以16个像素的G通道像素值和16个像素的R通道像素值作为图像块的像素有效数据,也可以仅选择以16个像素的R通道像素值作为图像块的像素有效数据,从而通过去除至少一个颜色通道的像素值实现去除冗余数据的效果。
例如,在确定16个像素关于R通道和G通道的相关度较小时,可以进一步获取16个像素关于R通道和B通道的相关度以及16个像素关于B通道和G通道的相关度。
在确定16个像素关于R通道和B通道的相关度较大的情况下,可以以从R通道和B通道中选择任意一个颜色通道的像素值以及G通道的像素值作为图像块的像素有效数据,从而通过去除一个颜色通道的像素值实现去除冗余数据的效果。
在确定16个像素关于G通道和B通道的相关度较大的情况下,可以以从G通道和B通道中选择任意一个颜色通道的像素值以及R通道的像素值作为图像块中16个像素的像素有效数据,从而通过去除一个颜色通道的像素值实现去除冗余数据的效果。
在确定16个像素关于R通道和G通道的相关度、关于R通道和B通道的相关度以及关于B通道和G通道的相关度均较小的情况下,即对于图像块的16个像素的任一像素,在三个颜色通道中任意两个颜色通道像素值之间的相关度均不满足预设条件时,以图像块中每个像素的三个颜色通道像素值作为图像块关于像素的像素有效数据。
通过本公开实施例,可以分别对图像块的每个像素的三个通道像素值进行分析,分别确定每个像素的像素有效数据,从而可以利用每个像素的1或2个通道像素值(16×1个通道像素值或16×2个通道像素值)作为像素有效数据来表示图像块的48(16×3)个通道像素值,去除冗余数据。
在本公开实施例中,第二确定模块130在确定有效数据的数据量大于预设数据量的情况下,利用多个压缩编码方法,分别对有效数据进行压缩,得到每个图像块的多个压缩码流。
例如,预设的压缩倍率为5倍,每个图像块对应的原始数据的数据量为480bit,因此需要将每个图像块压缩为96bit的压缩码流。在确定有效数据的数据量大于96bit的情况下,可认为对有效数据进行编码得到的压缩码流对应的压缩倍率小于5倍,这表明基于有效数据的压缩方法没有实现预设倍率的压缩。第二确定模块130利用多个压缩编码方法,分别对有效数据进一步压缩,得到多个压缩码流,以实现预设倍率的压缩。
在本公开实施例中,第三确定模块140根据每个压缩码流的压缩误差信息,从多个压缩码流中确定每个图像块的目标压缩码流。例如,目标压缩码流的压缩误差信息为多个压缩误差中的压缩误差中的最小值。
根据本公开实施例,由于目标图像的不同区域的块颜色特征可能是不相同,不同区域的像素值之间一定的差异,因此采用不同的压缩方法也可能产生不同的压缩误差。将目标图像划分为不重叠的多个图像块,分别对每个图像块进行独立地压缩处理,多个图像块之间的压缩效果也可以互相独立。根据压缩误差信息,为每个图像块选择最适配的压缩方法,从而最大程度地保证每个图像块的压缩质量。此外,在后续的解码过程中,每个压缩码流的解码过程也可以实现解耦合,从而提高解码质量。
图2示出了根据本公开实施例的图像压缩装置的结构示意图。
如图2所示,图像压缩装置200包括划分模块210、第一确定模块220、第二确定模块230、第三确定模块240和第四确定模块250。
在本公开实施例中,划分模块210、第一确定模块220、第二确定模块230和第三确定模块240分别与前文实施例的划分模块1l0、第一确定模块120、第二确定模块130和第三确定模块140类似。为了简明,本公开在此对类似的部分不再赘述。
在本公开实施例中,对于多个图像块的每个图像块,第一确定模块210获取每个图像块的多个像素中每个像素的像素值,像素值包括多个颜色通道的多个通道像素值。对于多个像素的每个像素,第一确定模块210根据每个像素的通道间差值,确定每个像素的有效数据。通道间差值为每个像素的多个颜色通道的多个通道像素值之间的差值。对于多个通道的每个通道,第一确定模块210根据多个颜色通道的每个颜色通道的通道内差值,确定每个通道的有效数据。通道内差值为多个像素的多个指定像素值之间的差值,多个指定像素值对应同一颜色通道。对于每个图像块,第一确定模块210根据像素有效数据与通道有效数据,确定每个图像块的有效数据。
在本公开实施例中,为了简化计算且降低误差,第一确定模块220可以将像素的RGB值转为YCoCg值,根据YCoCg值分析每个像素的多个通道间的相关性和每个通道内多个像素之间的相关性。Y值表示像素的亮度值,Cg值表示像素的绿色色度值,Co值表示像素的橙色色度值。例如,可以根据式(1)将RGB值转为YCoCg值:
>>表示对数值进行右移操作,以减少数值的位宽,减少噪声影响。
在本公开实施例中,对于图像块的每个像素,第一确定模块220根据每个像素的Y值、Co值和Cg值之间的差值,确定每个像素的像素有效数据。
例如,第一确定模块220确定每个像素的Y值和Co值之间的差值,在确定每个像素的Y值和Co值之间差值的绝对值均小于预设阈值的情况下,可以选择每个像素的Co值或Y值作为该像素的像素有效数据。例如,预设阈值可以为4,在确定每个像素的Y值和Co值之间差值的绝对值均小于预设阈值的情况下,可以选择每个像素的Co值作为该像素的像素有效数据。预设阈值的大小可以根据不同的压缩场景设置,本公开对预设阈值的数值不作限定。例如,第一确定模块220还需要确定每个像素的Y值和Cg值之间的差值,在确定每个像素的Y值和Cg值之间差值的绝对值均小于预设阈值的情况下,可以选择每个像素的Cg值作为该像素的像素有效数据。
在解码过程中,利用每个像素的Co值或Cg值计算Y值的重构值。
例如,在确定每个像素的Y值和Co值之间差值的绝对值不是均小于预设阈值的情况下,第一确定模块220可以以每个像素的Y值和Co值作为该像素的像素有效数据。在确定每个像素的Y值和Cg值之间差值的绝对值不是均小于预设阈值的情况下,第一确定模块220可以以每个像素的Y值和Cg作为该像素的像素有效数据。
在本公开实施例中,对于多个通道的每个通道,第一确定模块220根据多个像素的Y值、多个像素的Co值和多个像素的Cg值,确定每个通道的通道有效数据。
例如,第一确定模块220从图像块所有像素的Y值中获取最大Y值和最小Y值,确定图像块所有像素的Y值范围(最大Y值与最小Y值之间的差值)。在确定Y值范围小于或等于预设范围的情况下,可以以所有像素的Y值平均值作为Y通道的通道有效数据。例如,在确定最大Y值与最小Y值之间的差值小于或等于4的情况下,可以以所有像素的Y值平均值作为Y通道的通道有效数据。预设范围的大小可以根据不同的压缩场景设置,本公开对预设范围的数值不作限定。例如,在确定最大Co值与最小Co值之间的差值小于或等于4的情况下,可以以所有像素的Co值平均值作为Co通道的通道有效数据。例如,在确定最大Cg值与最小Cg值之间的差值小于或等于4的情况下,可以以所有像素的Cg值平均值作为Cg通道的通道有效数据。
在解码过程中,利用每个通道的像素平均值计算每个通道像素值的重构值。
例如,在确定Y值范围大于预设范围的情况下,第一确定模块220以所有像素的Y值作为Y通道的通道有效数据。在确定Co值范围大于预设范围的情况下,第一确定模块220以所有像素的Co值作为Co通道的通道有效数据。在确定Cg值范围大于预设范围的情况下,第一确定模块220以所有像素的Cg值作为Cg通道的通道有效数据。
在本公开实施例中,图像块的有效数据包括每个像素的有效数据和每个通道的有效数据。在确定图像块的有效数据的数据量小于或等于预设数据量的情况下,第四确定模块250根据有效数据,生成每个图像块的目标压缩码流。例如,在确定基于有效数据的数据量可以实现预设压缩倍率的压缩效果的情况下,无需对有效数据进行再次压缩,可以对图像块的有效数据进行编码,得到的码流为图像块的目标压缩码流。
在确定图像块的有效数据的数据量大于预设数据量的情况下,基于有效数据的数据量不能实现预设压缩倍率的压缩效果,第二确定模块230利用多个压缩编码方法,分别对每个图像块的有效数据进一步压缩,得到每个图像块的多个压缩码流。
在本公开实施例中,第三确定模块240根据每个压缩码流的压缩误差信息,从多个压缩码流中为每个图像块确定压缩误差最小的压缩码流为目标压缩码流。
例如,第三确定模块240可以确定对每个压缩码流进行解码后得到的解码图像块与对应的压缩前原图像块之间的误差,确定每个压缩码流的压缩误差信息。
例如,第三确定模块240可以根据式(2)计算每个压缩码流的压缩误差Cost:
SAD表示解码图像块中每个像素的像素值与对应的原图像块中每个像素的像素值的绝对误差和。原图像块包括M×N个像素,Pi表示原图像块的第i个像素的像素值。解码图像块也包括M×N个像素,Reci表示解码图像块的第i个像素的像素值(重构值)。MaxErr表示解码图像块中多个像素的像素值与对应的原图像块中多个像素的像素值的多个绝对误差中的最大误差值。weighting表示每个压缩码流中最大误差值MaxErr的权重值,权重值可以根据图像块像素分布预设。例如,对于像素分布简单(像素值大多相近)的图像块,最大误差值MaxErr的参考价值较大,可以设置较大的权重值,权重值可以大于0.5。对于像素分布复杂(像素值变化多样)的图像块,最大误差值MaxErr的参考价值较小,可以设置较小的权重值,权重值可以小于0.5。
在确定第二确定模块230输出的多个压缩码流实现的压缩倍率相同的情况下,第三确定模块240根据式(2)计算每个压缩码流的压缩误差Cost,并选择最小压缩误差对应的码流为图像块的目标压缩码流。
根据本公开实施例,根据图像块中每个像素的多个通道间的相关性和每个通道内多个像素之间的相关性,去除图像数据中的冗余数据,得到有效数据。在确定基于有效数据可以实现预设压缩倍率的压缩效果的情况下,可以对有效数据进行压缩编码,得到图像块的目标压缩码流,从而减少图像压缩过程的运算量。在确定基于有效数据不能实现预设压缩倍率的压缩效果的情况下,可以对每个图像块的有效数据进一步编码压缩,得到图像块的目标压缩码流,从而对每个图像块实现预设倍率的压缩,且保证图像块的压缩质量。
此外,由于每个图像块的颜色特征可能不相同,不同颜色特征可能适配不同的压缩方法。对于每个图像块,分别计算基于不同压缩方法得到的多个压缩码流的压缩误差信息,确定压缩误差最小的压缩码流为目标压缩码流,从而确定基于每个图像块颜色特征最佳适配的压缩方法得到的压缩码流为目标压缩码流,确保每个图像块的压缩质量。
图3示出了根据本公开实施例的第二确定模块的结构示意图。
如图3所示,第二确定模块330包括第一确定单元331、第二确定单元332和第三确定单元333。
在本公开实施例中,第一确定单元331利用图像块的多个像素中每个像素的预测残差,对有效数据进行压缩,得到图像块的残差压缩码流。
例如,第一确定单元331利用图像块中像素的空间邻域相关性,基于有效数据中每个像素的像素值和不同方向相邻像素的像素值,对每个像素进行不同方向的预测,并选择预测残差最小的方向作为目标预测方向。第一确定单元331还根据目标预测方向下的像素的预测残差复杂度,利用相应的量化参数,对每个像素的预测残差进行量化,并对量化后的预测残差进行编码,得到图像块的残差压缩码流。
第一确定单元331基于预测残差的压缩方法与大部分自然场景的图像块适配。
在本公开实施例中,第二确定单元332从图像块的多个像素中确定至少一个备选像素,根据至少一个备选像素的像素值,确定多个像素中每个像素的索引值,并利用每个像素的索引值和至少一个备选像素的像素值对有效数据进行压缩,得到图像块的索引压缩码流。
例如,第二确定单元332可以对有效数据中每个像素的像素值进行比较,确定图像块的码表,码表包括备选像素的像素值与每个像素的索引值之间的对应关系。码表的深度指示索引值的数量,码表中多个像素具有相同的索引值。第二确定单元332根据图像块的颜色种类可以调整码表的深度,以调整索引值的数量,还可以根据码表的参数利用相应的量化参数,对码表中备选像素的像素值进行量化,并对调整后的索引值和量化后的像素值进行编码,得到图像块的索引压缩码流。
例如,从图像块的多个像素中选择一个像素设为第一个备选像素,以该备选像素的像素值为参考像素值,将其他像素的像素值依次与该参考像素值进行比较。在像素的像素值与该参考像素值相近时,可以为该像素与第一个备选像素设置相同的索引值,并将第一个备选像素的像素值记为该像素的像素值。在像素的像素值与该参考像素值相差较大时,可以将该像素设为第二个备选像素,并与前一个备选像素设置不同的索引值。此时以第一个备选像素和第二备选像素的像素值为两个参考像素值,并对剩余的像素重复上述操作。通过上述方法可以对多个像素进行聚类,使得像素值相近的像素聚集成一个类簇,每个类簇具有一个索引值。每个备选像素的像素值可以为一个聚类中心,每个类簇中的像素被记为相同的像素值,即每个类簇的像素的像素值与聚类中心对应的备选像素的像素值相同。每个类簇对应的索引值和像素值可以记录在码表中。
通过第二确定单元332执行的压缩方法,可以利用较少的像素值表示图像块中多个像素的像素值,从而对多个像素的像素值进行压缩,减少数据量。此外,在码表中记录的类簇的数量较多的情况下,可以对每个类簇的像素值进行量化,使得像素值的数据量降低,从而可以提高压缩倍率。
基于码表的压缩方法与颜色种类较少的图像块适配。在确定图像块的颜色种类较少且邻域间相关性较差的情况下,使用基于码表的压缩方法进行编码,可以提高压缩质量。
在本公开实施例中,第三确定单元333根据有效数据中图像块的多个像素中每个像素的像素值,对图像块进行分区,得到每个像素的分区信息,并利用分区信息对有效数据进行压缩,得到图像块的分区压缩码流。
例如,第三确定单元333可以对有效数据中每个像素的亮度信息(Y值)和色度信息(Co值和Cg值)分别单独处理。第二确定单元332可以设置多个Y值权重值,并确定每个像素对应的Y值权重。第二确定单元332根据图像块内每个像素的Co值和Cg值,将图像块划分为多个子分区,并利用每个子分区的中心点表征对应子分区内像素的像素值。第三确定单元333对每个像素对应的Y值权重和每个像素对应的分区中心点进行编码,得到图像块的分区压缩码流。
第三确定单元333基于Y值权重和分区中心点的压缩方法与纹理复杂且像素值相关性较强的图像块适配。
根据本公开实施例,采用与不同颜色特征适配的多种压缩方法,对每个图像块的有效数据进行压缩,可以分别为每个图像块确定最适配的压缩方法,从而实现多个图像块之间解耦合,保证对不同图像块的压缩质量。
本公开提供了一种第一确定单元确定残差压缩码流的实施例,结合图4A和图4B对确定残差压缩码流进一步示意性说明。图4A示出了根据本公开实施例的像素的预测方向的示意图。图4B示出了根据本公开实施例的子图像块的示意图。
在本公开实施例中,第一确定单元从多个预设预测方向中确定目标预测方向。对于所述每个图像块,第一确定单元根据有效数据中图像块的每个像素的像素值和位于目标预测方向的相邻像素的像素值,确定每个像素的预测残差。
如图4A所示,图像块的像素P的预测方向包括左(left)、上左(up left)、上(up)和上右(up right)。位于像素P左侧的相邻像素为R0,位于像素P上左侧的相邻像素为R1,位于像素P上侧的相邻像素为R2,位于像素上右侧的相邻像素为R3。在不同方式的预测方法中,利用对应方向的相邻像素的像素值为对应的预测值,计算像素P在不同方向的预测残差。
例如,第一确定单元可以根据式(3)计算像素P在不同预测方向的预测残差Dist:
Dist=|P-Rx| (3)
P为像素P的像素值,Rx为像素P对应预测方向上相邻像素的像素值。例如,R0为相邻像素R0的像素值,R1为相邻像素R1的像素值,R2为相邻像素R2的像素值,R3为相邻像素R3的像素值。
例如,通过计算图像块的每个像素在不同预测方向的预测残差,确定不同预测方向上所有像素的预测残差之和,确定预测残差之和最小的预测方向为目标预测方向。例如,第一确定单元可以根据SAD=SUM(Dist)分别不同预测方向上所有像素的预测残差之和。
例如,第一确定单元可以根据式(3)计算图像块每个像素在目标预测方向的预测残差。
在本公开实施例中,第一确定单元还根据量化参数对每个像素的预测残差进行量化,得到每个像素的量化残差,根据图像块的每个像素的量化残差进行压缩编码,生成图像块的残差压缩码流。
例如,在确定图像块所有像素在目标预测方向的预测残差之和小于或等于第一阈值的情况下,可以利用第一量化参数组对每个像素的预测残差进行量化。在确定图像块所有像素在目标预测方向的预测残差之和大于第一阈值且小于或等于第二阈值的情况下,可以利用第二量化参数组对每个像素的预测残差进行量化。在确定图像块所有像素在目标预测方向的预测残差之和大于第二阈值的情况下,可以利用第三量化参数组对每个像素的预测残差进行量化。
例如,在确定图像块所有像素在目标预测方向的预测残差之和小于或等于32的情况下,第一确定单元利用量化参数Qp10、量化参数Qp11、量化参数Qp12和量化参数Qp13对每个像素的预测残差进行量化,得到每个像素的量化残差。例如,量化参数Qp10、量化参数Qp11、量化参数Qp12和量化参数Qp13可以分别为0、1、2和3。在确定图像块所有像素在目标预测方向的预测残差之和大于32且小于或等于64的情况下,第一确定单元利用量化参数Qp20、量化参数Qp21、量化参数Qp22和量化参数Qp23对每个像素的预测残差进行量化,得到每个像素的量化残差。例如,量化参数Qp20、量化参数Qp21、量化参数Qp22和量化参数Qp23可以分别为5、6、7和8。在确定图像块所有像素在目标预测方向的预测残差之和大于64的情况下,第一确定单元利用量化参数Qp对每个像素的预测残差进行量化,得到每个像素的量化残差。例如,量化参数Qp可以为10。
例如,利用量化参数Qp23对每个像素的预测残差进行量化,将所有像素的预测残差的分布范围划分为8个子范围,形成8个量化索引,利用8个量化索引对每个像素的预测残差进行量化。
第一确定单元对每个像素的量化残差进行编码,得到图像块的残差压缩码流。例如,第一确定单元可以利用哥伦布-赖斯(Golomb-Rice)编码方法对量化残差和目标预测方向(占2bit)进行压缩编码,得到残差压缩码流。
在本公开实施例中,通过对像素的预测残差进行量化后,基于量化残差进行压缩,可以减少压缩数据的数据量。由于相邻像素之间存在一定相关性,相邻像素的量化残差之间也存在一定的相关性。利用相邻像素的量化残差之间的相关性可以进一步消除量化残差之间的冗余数据。
例如,第一确定单元还可以将图像块划分为多个子图像块,子图像块包括多个像素,根据子图像块的多个像素中每个像素的量化残差,确定每个子图像块的第一编码参数和第二编码参数。第一确定单元还根据第一编码参数,优化每个像素的量化残差,得到每个像素的编码残差,并根据子图像块中每个像素的编码残差和第二编码参数,生成子图像块的残差压缩码流。此时图像块的残差压缩码流包括多个子图像块的残差压缩码流。
例如,第一确定单元还可以利用图像模式(pattern mode)编码方式进一步消除量化残差之间的冗余数据。如图4B所示,将4×4的图像块划分4个2×2的子图像块,每个子图像块不重合。2×2的子图像块中4个像素的量化残差分别为res0、res1、res2和res3。第一确定单元可以根据式(4)计算每个子图像块的第一编码参数refer和第二编码参数rem:
第一编码参数refer表示对子图像块中4个像素的量化残差之和与预设参数3相除的商进行向下取整的数值。第二编码参数rem表示对子图像块中4个像素的量化残差之和与预设参数3相除的余数。
第一确定单元还可以根据式(5)计算子图像块的每个像素的编码残差:
rres0为量化残差分别为res0对应的编码残差,rres1为量化残差分别为res1对应的编码残差,rres2为量化残差分别为res2对应的编码残差,rres3为量化残差分别为res3对应的编码残差。
第一确定单元对rres0、rres1、rres2和rres3进行Golomb-Rice编码,得到编码码流,将第二编码参数rem以2bits的数据量写入编码码流,得到残差压缩码流。
本公开还提供实施例对残差压缩码流解码过程进行示意性说明。
例如,根据式(4)和式(5),对rres0、rres1、rres2、rres3、rem和refer之间的关系进行推导,得到式(6):
refer=rem-(rres0+rres1+rres2+rres3) (6)
解码器根据rres0、rres1、rres2、rres3、rem和式(6)计算得到refer,利用式(5)计算量化残差分别为res0、res1、res2和res3,再对res0、res1、res2和res3进行反量化,利用与压缩编码过程相同的预测值,计算图像块每个像素的重构像素值。
根据本公开实施例,第一确定单元可以基于不同的预测方向对图像块的像素值进行预测编码,并确定预测误差最小的预测方向作为目标预测方向。根据图像块的像素值分布自适应选择预测方向,可以减小预测编码的误差。此外,为了减小量化残差的编码数据量,第一确定单元还可以进一步对量化残差进行编码,实现较高的压缩倍率。
需要说明的是,在对量化残差进一步编码时,需要对基于所有子图像块的编码残差编码的残差压缩码流的数据量与基于量化残差编码的残差压缩码流的数据量进行对比。在确定基于所有子图像块的编码残差编码的残差压缩码流的数据量大于基于量化残差编码的残差压缩码流的数据量的情况下,选择基于量化残差编码的残差压缩码流作为输出结果。
在本公开实施例中,在确定对图像块的独立性要求较低的情况下,第一确定单元还可以利用相邻图像块的信息作为参考,例如利用相邻图像块的像素的重构值作为预测值,对图像块进行压缩,可以提高预测压缩的正确度,减少预测误差。
本公开提供了一种第二确定单元确定索引压缩码流的实施例。
在本公开实施例中,图像块包括I个像素,I为正整数,第二确定单元从有效数据中图像块的1个像素中确定第i像素为第i备选像素和确定第i备选像素的第i索引值,i=1,2,…,I-1。在确定第i+1像素的像素值与第i备选像素的像素之间的差值小于或等于预设范围的情况下,第二确定单元确定第i+1像素的索引值为第i索引值。在确定第i+1像素的像素值与第i备选像素的像素之间的差值大于预设范围的情况下,第二确定单元确定第i+1像素为第i+1备选像素和确定第i+1备选像素的第i+1索引值。
在确定第i+2像素的像素值与第i备选像素的像素之间的差值小于或等于预设阈值的情况下,确定第i+2像素的索引值为第i索引值;在确定第i+2像素的像素值与第i备选像素的像素之间的差值大于预设阈值的情况下,确定第i+2像素与第i+1备选像素的像素之间的差值;以及在确定第i+2像素的像素值与第i+1备选像素的像素之间的差值小于或等于预设阈值的情况下,确定第i+2像素的索引值为第i+1索引值。
通过上述方法,根据有效数据中多个像素的像素值分布,在多个像素的像素值分布范围较大时,可以从多个像素中确定多个备选像素。
结合图5对确定像素的索引值的过程进一步示意性说明。图5示出了根据本公开实施例的确定像素的索引值的示意图。
如图5所示,图像块510包括16个像素(P1~P16),第二确定单元将像素P1的像素值p1输入容器container 520作为第1备选像素P1,第二确定单元在码表530中记录像素P1的像素值为p1,并定义像素P1的索引值为0。第二确定单元比较第1备选像素P1的像素值p1和像素P2的像素值p2,在确定第1备选像素P1的像素值p1和像素P2的像素值p2之间的差值(绝对值)小于或等于预设阈值(例如5)的情况下,第二确定单元在码表530中将第1备选像素P1的索引值0和像素值p1记为像素值p2的索引值和像素值。
第二确定单元比较第1备选像素P1的像素值p1和像素P3的像素值p3,在确定第1备选像素P1的像素值p1和像素P3的像素值p3之间的差值大于预设阈值的情况下,第二确定单元将像素P3输入容器520,并将像素P3作为第2备选像素P3,在码表530中记录像素P3的像素值为p3,并定义像素P3的索引值为1。
第二确定单元比较第1备选像素Pl的像素值p1和像素P4的像素值p4,在确定第1备选像素P1的像素值p1和像素P4的像素值p4之间的差值大于预设阈值的情况下,比较第2备选像素P3的像素值p3和像素P4的像素值p4。在确定第2备选像素P3的像素值p3和像素P4的像素值p4之间的差值小于或等于预设阈值的情况下,第二确定单元在码表530中将第2备选像素P3的索引值1和像素值p3记为像素值p4的索引值和像素值。
根据此规律,依次将图像块510的每个像素的像素值与容器520内的多个备选像素的像素值进行依次比较,并在码表530中依次记录每个像素的像素值和索引值。在确定像素的像素值与容器520中备选像素的像素值之间的差值小于或等于预设阈值的情况下,在码表530中将备选像素的像素值和索引值记为该像素的像素值和索引值。在确定像素的像素值与容器520中至少一个备选像素的像素值之间的差值均大于预设阈值的情况下,将该像素作为容器520中的新备选像素,将该像素的像素值记录在码表530中,并定义新的索引值。
在本公开实施例中,在确定容器520中备选像素的数量大于预设数量的情况下,第二确定单元对每个备选像素的像素值进行量化,得到量化像素值,并根据量化像素值和每个像素的索引值,生成图像块的索引压缩码流。在确定容器520中备选像素的数量小于或等于预设数量的情况下,第二确定单元对码表530中每个备选像素的像素值进行编码,得到索引压缩码流。
例如,为实现对图像块进行预设倍率的压缩,容器520的最大深度为8,因此容器520能够容纳的备选像素的最大数量为8个,因此预设数量可以为8。
例如,在容器520已存在7个备选像素且像素P14的像素值p14与容器520中7个备选像素的像素值之间的差值均大于预设阈值的情况下,第二确定单元将像素P14输入容器520,并将像素P14的像素值p14记录在码表530中,并定义新的索引值7。在此种情况下,容器520内备选像素的数量达到8个,容器520中不能再新增备选像素。
当容器520包括的备选像素的像素值不能表示像素P15和像素P16的像素值时,第二确定单元可以调整容器520的最大深度,将容器520的最大深度增加到10。此时,在确定像素P15的像素值p15与容器520中8个备选像素的像素值之间的差值均大于预设阈值的情况下,第二确定单元在容器520中将像素P15作为第9备选像素P15,在码表530中记录像素P15的像素值为p15,并定义像素P15的索引值为8。在确定像素P16的像素值p16与容器520中9个备选像素的像素值之间的差值均大于预设阈值的情况下,第二确定单元在容器520中将像素P16作为第10备选像素P16,在码表530中记录像素P16的像素值为p16,并定义像素P15的索引值为9。
在确定码表530内不同索引值的数量超过8个情况下,可以对基码表530内备选像素的像素值进行压缩。例如,第二确定单元可以对码表内像素值进行量化,得到备选像素的量化像素,使得对备选像素的量化像素和每个像素的索引值进行编码可以对图像块实现预设压缩倍率的压缩。例如,在确定容器520的最大深度为10的情况下,第二确定单元可以利用量化参数2对码表内备选像素的像素值进行量化。
根据本公开实施例,根据不同的压缩倍率,可以对容器的最大深度进行调整。在容器的当前最大深度大于预设压缩倍率对应的最大深度的情况下,可以根据适当的量化参数对码表内的像素值进行量化,以减少压缩码流的数据量。在满足预设压缩倍率的情况下,可以适当调大容器的最大深度,以提高压缩数据的压缩精度。
本公开提供了一种第三确定单元确定分区压缩码流的实施例。
在本公开实施例中,像素的像素值包括第一通道像素值和第二通道像素值,第三确定单元根据有效数据,确定图像块的每个像素的双通道像素值以及确定图像块的多个像素的多个双通道像素值的平均值,双通道像素值为第一通道像素值与第二通道像素值之和。根据每个像素的双通道像素值与平均值之间的差值,第三确定单元确定每个像素的分区索引值,并根据每个像素的分区索引值,将图像块划分为多个子分区。
对于多个子分区的每个子分区,第三确定单元确定每个子分区的多个像素的多个双通道像素值的分区平均值;根据每个子分区的每个像素的双通道像素值与对应平均值之间的差值,从多个子分区中确定待划分子分区,在多个子分区中,待划分子分区的多个像素的双通道像素值与对应分区平均值之间的多个差值之和最大;对于待划分子分区的多个像素,根据每个像素的双通道像素值与平均值之间的差值,对待划分子分区进行多次划分,直至图像块包括预设数量子分区;以及根据预设数量子分区中每个子分区的分区平均值与图像块中每个像素的双通道像素值,从预设数量子分区中确定每个像素的目标子分区和目标分区索引值,目标分区索引值指示目标子分区。
结合图6对划分子分区的过程进一步示意性说明。图6示出了根据本公开实施例的图像块划分子分区的示意图。
第三确定单元根据每个像素的Co值和Cg值,计算每个像素的Co值和Cg值的双通道像素值以及所有像素的双通道像素值的平均值。根据平均值,确定图像块的每个像素的分区索引值。例如,在确定像素的Co值和Cg值的双通道像素值大于或等于所有像素的双通道像素值平均值的情况下,第三确定单元确定该像素的分区索引值为1。在确定像素的Co值和Cg值的双通道像素值小于所有像素的双通道像素值平均值的情况下,第三确定单元确定该像素的分区索引值为0。如图6所示,图像块的二分区图包括子分区0和子分区1。
例如,第三确定单元分别计算子分区0和子分区1的多个像素的多个双通道像素值的分区平均值,每个子分区的分区平均值可以为对应子分区的中心点像素。第三确定单元分别计算每个子分区的中心点像素的双通道像素值与对应子分区内每个像素的双通道像素值的差值,在确定子分区1的差值之和大于子分区0的差值之和的情况下,第三确定单元确定子分区1为待划分子分区。
第三确定单元根据子分区1内每个像素的双通道像素值与中心点像素的像素值之间的差值,将子分区1划分为两个子分区,得到三分区图。例如,在确定子分区1内像素的双通道像素值大于或等于中心点像素的像素值的情况下,第三确定单元确定该像素的分区索引值为2。在确定像素的双通道像素值小于中心点像素的像素值的情况下,第三确定单元确定该像素的分区索引值为1。如图6所示,图像块的三分区图包括子分区0、子分区1和子分区2。
对于三分区图的子分区0、子分区1和子分区2,第三确定单元可以从子分区0、子分区1和子分区2中确定待划分子分区,并对待划分子分区进一步划分。确定待划分子分区和对待划分子分区划分的过程与前文描述的过程类似,为了简明,本公开在此处不再赘述。例如,如图6所示,将子分区0划分为两个子分区,得到四分区图,图像块的四分区图包括子分区0、子分区1、子分区2和子分区3。
在本公开实施例中,根据实际的分区需求可将图像块划分为预设数量的子分区。本公开对子分区的预设数量不做限定。例如,第三确定单元还可以对图像块进行5次划分,得到6个子分区。
在完成对图像块的划分的情况下,第三确定单元根据每个子分区的中心点像素的像素值与图像块中每个像素的双通道像素值,分别计算每个像素与每个子分区的中心点像素的像素值之间的欧氏距离,并确定具有最小欧氏距离的中心点像素所在的子分区为像素的目标子分区,并以目标子分区的分区索引值为该像素的目标分区索引值。例如,在图像块包括4个子分区的情况下,分别计算每个像素的像素值与4个中心点像素的像素值之间的欧氏距离,得到4个欧氏距离。位于子分区1的像素的像素值与子分区3的中心点像素的像素值的欧氏距离最小,如图6所示,第三确定单元可以将子分区1内的该像素的索引修改为分区索引值3。
在本公开实施例中,像素的像素值还包括第三通道像素值,第三确定单元根据有效数据,从图像块的多个像素的第三通道像素值中确定最大值和最小值,并确定多个线性插值像素,线性插值像素的第三通道像素值在最大值与最小值之间的范围内。第三确定单元从多个线性插值像素中分别确定每个像素的匹配像素。
例如,第三确定单元确定图像块内所有像素的Y值中的最大值和最小值,以最大值和最小值作为端点数据,在端点数据的数值范围内进行均匀的线性插值,并计算每个线性插值的权重系数。线性插值的数值为线性插值像素的Y值,线性插值的数量可以根据实际的需求确定。例如,对于4×4的图像块,线性插值的数量可以为8个。第三确定单元将图像块的每个像素的Y值与线性插值像素的Y值进行匹配,例如分别计算每个像素的Y值与8个线性插值像素的Y值之间的欧氏距离,并选择欧氏距离最小的线性插值像素为该像素的匹配像素。
在本公开实施例中,第三确定单元根据每个像素的目标分区索引值、目标子分区的分区平均值、匹配像素的权重、第三通道值的最大值和最小值,生成图像块的分区压缩码流。
例如,第三确定单元对图像块的像素亮度信息(Y值)和色度信息(Co值和Cg值)分别单独处理。基于Y值确定图像块的每个像素的匹配像素的Y值和权重系数,匹配像素的权重系数为该线性差值像素的权重系数。基于Co值和Cg值确定图像块的每个像素的目标分区索引值和目标子分区的中心像素的双通道像素值(分区平均值)。
第三确定单元对图像块中多个像素的第三通道值的最大值以及最小值、每个像素的匹配像素的权重系数、目标分区索引值和目标子分区的中心像素的双通道像素值进行编码,得到图像块的分区压缩码流。
在本公开实施例中,在确定对图像块的独立性要求较低的情况下,第三确定单元还可以利用相邻图像块的线性插值像素和分区的中心点像素作为参考,对图像块进行压缩,可以减少数据量,提升压缩效果。
根据本公开实施例,第三确定单元利用线性插值像素和分区的中心点像素来表示图像块的多个像素的像素值,实现对多个像素的像素值的压缩,可以保证对纹理复杂且像素值相关性较强的图像块的压缩质量。
本公开还提供一种适于实现图像压缩装置的电子设备的实施例。
电子设备可以包括根据本公开任一实施例的图像压缩装置。例如,电子设备可以包括图像压缩装置100。
根据本公开的实施例,图像压缩装置100中的任意多个模块可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,图像压缩装置100中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上***、基板上的***、封装上的***、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者图像压缩装置100中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图7示出了根据本公开实施例的图像压缩方法的流程图。
如图7所示,该实施例的图像压缩方法包括操作S710~操作S740。
在操作S710,将目标图像划分为多个图像块,图像块包括多个像素。
在本公开实施例中,操作S710由划分模块110执行,与上述划分模块110执行的操作相对应,为了简明此处不再赘述。
在操作S720,对于多个图像块的每个图像块,根据多个像素之间的相关性,确定每个图像块的有效数据。
在本公开实施例中,操作S720由第一确定模块120执行,与上述第一确定模块120执行的操作相对应,为了简明此处不再赘述。
在操作S730,在确定有效数据的数据量大于预设数据量的情况下,利用多个压缩编码方法,分别对有效数据进行压缩,得到每个图像块的多个压缩码流。
在本公开实施例中,操作S730由第二确定模块130执行,与上述第二确定模块130执行的操作相对应,为了简明此处不再赘述。
在操作S740,根据每个压缩码流的压缩误差信息,从多个压缩码流中确定每个图像块的目标压缩码流。
在本公开实施例中,操作S740由第三确定模块140执行,与上述第三确定模块140执行的操作相对应,为了简明此处不再赘述。
图8示意性示出了根据本公开实施例的适于实现图像压缩方法的电子设备的方框图。
如图8所示,根据本公开实施例的电子设备800包括处理器801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。处理器801例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC))等等。处理器801还可以包括用于缓存用途的板载存储器。处理器801可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 803中,存储有电子设备800操作所需的各种程序和数据。处理器801、ROM802以及RAM 803通过总线804彼此相连。处理器801通过执行ROM 802和/或RAM 803中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,程序也可以存储在除ROM802和RAM 803以外的一个或多个存储器中。处理器801也可以通过执行存储在一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,电子设备800还可以包括输入/输出(I/O)接口805,输入/输出(I/O)接口805也连接至总线804。电子设备800还可以包括连接至I/O接口805的以下部件中的一项或多项:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分808经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/***中所包含的;也可以是单独存在,而未装配入该设备/装置/***中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 802和/或RAM 803和/或ROM 802和RAM 803以外的一个或多个存储器。
本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。当计算机程序产品在计算机***中运行时,该程序代码用于使计算机***实现本公开实施例所提供的图像压缩方法。
在该计算机程序被处理器801执行时执行本公开实施例的***/装置中限定的上述功能。根据本公开的实施例,上文描述的***、装置、模块、单元等可以通过计算机程序模块来实现。
在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分809被下载和安装,和/或从可拆卸介质811被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被处理器801执行时,执行本公开实施例的***中限定的上述功能。根据本公开的实施例,上文描述的***、设备、装置、模块、单元等可以通过计算机程序模块来实现。
根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如Java,C++,python,“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。