图像的编码方法和装置
技术领域
本发明涉及图像处理领域,具体而言,涉及一种图像的编码方法和装置。
背景技术
在目前的视频编解码领域中,基于屏幕内容的视频图像分块技术获得了极高的研究热度。其实际做法是将一帧图像按照其内容的不同,划分为不同的类型。然后,根据不同类型块的特点,对其进行相对应的编解码操作。在通常的编码流程中,由于文字编码器以及图片编码器算法的不稳定性,分为文字块以及图片块的宏块在不同场景下呈现不同的编码效率,优劣难以区分。
例如:文字编码器在对识别为文字块的宏块进行编码时,对于可能将部分非纯文字块但识别划分为文字块的宏块将有极低的效率,这使其文字编码器的性能呈现忽好忽劣的性能;对识别为图片块的宏块使用图片编码器也会使其产生不稳定的编码效率,比如当图片上出现横线与图片共存如各占一半时,就会表现出不同的编码效率。
针对现有技术中在对图像进行编码时,由于难以选择对应的编码器导致编码效果低下的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种图像的编码方法和装置,以至少解决现有技术中在对图像进行编码时,由于难以选择对应的编码器导致编码效果低下的技术问题。
根据本发明实施例的一个方面,提供了一种图像的编码方法,包括:将待编码图像进行分块,并确定每个块所属的分类,其中,分类包括:图片块、文字块以及其他块;为任意一个或多个分类匹配至少两种候选编码器,至少两种候选编码器分别与分类的子分类对应;从至少两种候选编码器中确定块对应的目标编码器;使用目标编码器对块编码。
进一步地,获取每个候选编码器的编码效率;确定编码效率最高的候选编码器为目标编码器。
进一步地,获取每个候选编码器的编码参数,其中,每个候选编码器的编码参数包括:编码码流大小参数和编码性能参数;确定编码性能参数与编码码流大小参数之比为编码参数确定每个候选编码器的编码效率。
进一步地,获取每个候选编码器的编码参数,其中,每个候选编码器的编码参数包括:编码码流大小参数和编码性能参数;依次比较两个候选编码器的编码参数,并根据比较结果从参与比较的两个候选编码器中选择一个候选编码器;将选择的候选编码器与下一个候选编码器进行比较,直至所有的候选编码器都进行了比较,确定最终选择的候选编码器为目标编码器。
进一步地,在第一码流小于第二码流的情况下,如果第一编码性能大于或等于第二编码性能,则选择第一候选编码器,其中,第一码流和第一编码性能为参与比较的两个候选编码器中的第一候选编码器的编码参数,第二码流和第二编码性能为参与比较的两个候选编码器中的第二候选编码器的编码参数;在第一码流小于第二码流的情况下,如果第一编码性能小于第二编码性能,则判断第一码流与第二码流的比值是否小于第一预设值,在比值小于第一预设值的情况下选择第一候选编码器;在第一码流大于第二码流的情况下,如果第一编码性能小于或等于第二编码性能,则选择第二候选编码器;在第一码流大于第二码流的情况下,如果第一编码性能大于第二编码性能,则判断第二码流与第一码流的比值是否小于第二预设值,在比值小于第二预设值的情况下选择第一候选编码器。
进一步地,图片块对应的候选编码器包括:图表型图片编码器、和/或图片型图像编码器。
进一步地,文字块对应的候选编码器包括:汉字型图片编码器、和/或字母型图像编码器。
根据本发明实施例的另一方面,还提供了一种图像的编码装置,包括:确定模块,用于将待编码图像进行分块,并确定每个块所属的分类,其中,分类包括:图片块、文字块以及其他块;匹配模块,用于为任意一个或多个分类匹配至少两种候选编码器,至少两种候选编码器分别与分类的子分类对应;确定模块,用于从至少两种候选编码器中确定块对应的目标编码器;编码模块,用于使用目标编码器对块编码。
根据本发明实施例的另一方面,还提供了一种存储介质,存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行所述的图像的编码方法。
根据本发明实施例的另一方面,还提供了一种处理器,处理器用于运行程序,其中,所述程序运行时执行所述的图像的编码方法。
在本发明实施例中,将待编码图像进行分块,并确定每个块所属的分类,为任意一个或多个分类匹配至少两种候选编码器,至少两种候选编码器分别与所述分类的子分类对应,从所述至少两种候选编码器中确定块对应的目标编码器,使用目标编码器对所述块编码。上述方案为分类后的块匹配多种候选编码器,并从候选编码器选择目标编码器,选择得到的目标编码器即为该块的最优编码器,使用目标编码器对当前块进行编码,从而能够解决现有技术中在对图像进行编码时,由于难以选择对应的编码器导致编码效果低下的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的图像的编码方法的流程图;
图2是根据本申请实施例的一种可选的编码方法的流程图;以及
图3是根据本发明实施例的图像的编码装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本发明实施例,提供了一种图像的编码方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本发明实施例的图像的编码方法的流程图,如图1所示,该方法包括如下步骤:
步骤S102,将待编码图像进行分块,并确定每个块所属的分类,其中,所述分类包括:图片块、文字块以及其他块。
具体的,上述待编码图像可以是视频流中的一帧图像,对待编码图像进行分块可以是按照当前帧图像中文字和图像的特性确定块所属的分类。在确定每个块所属的分类之后,可以对不同类别的块进行不同的标记。
在一种可选的实施例中,可以将待编码图像分为8*8的宏块,并确定每个块所属的分类。
步骤S104,为任意一个或多个分类匹配至少两种候选编码器,至少两种候选编码器分别与所述分类的子分类对应。
在上述步骤中,可以先确定分类中是否存在子分类,在分类存在子分类的情况下,为每个子分类匹配对应的候选编码器。
在一种可选的实施例中,以图片块为例,图片块的分类还可以继续进行分类,得到两种子分类,两种子分类分别为图片型和图表型,因此,可以为图片块匹配的候选编码器包括:图片型编码器和图表型编码器。
在另一种可选的实施例中,以文字块为例,文字块的分类也可以继续进行分类,得到两种子分类,两种子分类分别为汉字型和字母型,因此,可以为文字块匹配的候选编码器包括:汉字型图像编码器和字母型图像编码器
步骤S106,从所述至少两种候选编码器中确定块对应的目标编码器。
对于一个块,在为块匹配了多种候选编码器之后,需要从多种候选编码器中选择一个目标编码器对该块来进行编码。目标编码器的需要对块具有较高的压缩比,即目标编码器编码后的码流较小且具有较好的编码效果。
以文字块的候选编码器为汉字型图像编码器和字母型图像编码器为例,对于当前需要编码的块,如果该块中的汉字较多,则使用汉字型图像编码器会具有更好的编码效果,如果该块中的字母较多,则使用字母型图像编码器具有更好的编码效果。但由于每个文字块中的,汉字或字母的分布比例并不一定相同,因此如果直接对图像中的文字块使用汉字型编码器或直接对图像中的文字块使用字母型编码器都不能达到最优的编码效果,因此,需要根据块本身来选择其对应目标编码器。
具体的,可以设置一个用于选择目标编码器的指标,例如;编码效率,确定每个候选编码器对当前块进行编码时的编码效率,从而选择目标编码器。
步骤S108,使用目标编码器对所述块编码。
在上述步骤中,由于目标编码器是与当前块最匹配的候选编码器,因此使用目标编码器对块进行编码,能够达到更高的编码效率。
在实际应用中,识别宏块后的结果将不能再更改,而识别的准确程度也将影响编码压缩的性能,因此,上述方案将识别结果进行可控处理,也即,根据识别结果,对其进行一对多(一个分类结果对应多种候选编码器)的映射,从而在宏块每次确定分类后,用相对应的多种候选编码器都进行编码处理,出现同一个宏块的两种处理方式,并在这两个结果中,进行择优选取,以此实现了自适应编码的方法,进而来达到降低压缩效率,保护编码性能的目的。
由上可知,本申请上述实施例将待编码图像进行分块,并确定每个块所属的分类,为任意一个或多个分类匹配至少两种候选编码器,至少两种候选编码器分别与所述分类的子分类对应,从所述至少两种候选编码器中确定块对应的目标编码器,使用目标编码器对所述块编码。上述方案为分类后的块匹配多种候选编码器,并从候选编码器选择目标编码器,选择得到的目标编码器即为该块的最优编码器,使用目标编码器对当前块进行编码,从而能够解决现有技术中在对图像进行编码时,由于难以选择对应的编码器导致编码效果低下的技术问题。
可选的,根据本申请上述实施例,从所述至少两种候选编码器中确定块对应的目标编码器,包括:
步骤S1061,获取所述每个候选编码器的编码效率。
具体的,上述编码效率可以用于表征候选编码器对块进行编码时的
步骤S1063,确定编码效率最高的候选编码器为目标编码器。
在上述步骤中,以编码效率作为选择目标编码器的指标,从而根据编码效率确定与当前块最匹配的目标编码器。
可选的,根据本申请上述实施例,获取所述每个候选编码器的编码效率,包括:
步骤S10611,获取所述每个候选编码器的编码参数,其中,所述每个候选编码器的编码参数包括:编码码流大小参数和编码性能参数。
具体的,编码码流大小能够指示在传输时所占用的带宽,码流越小,所占用的带宽越小,因此在编码过程中希望编码后的编码码流较小;而编码性能参数可以是用于评价图像质量的PSNR,可以通过计算候选编码器的峰值信噪比获得,因此在编码过程中希望具有较高的编码性能。
步骤S10613,确定所述编码性能参数与所述编码码流大小参数之比为所述编码参数确定所述每个候选编码器的编码效率。
在上述步骤中,将编码性能参数与编码码流大小之比作为编码效率,即通过编码参数得到了用于确定目标编码器的指标,在这一指标为编码效率的情况下,编码效率越大,说明编码后的码流越小,或编码性能越高,即能够应用较小的码流达到较高的编码性能。
可选的,根据本申请上述实施例,从所述至少两种候选编码器中确定块对应的目标编码器,包括:
步骤S1065,获取每个候选编码器的编码参数,其中,每个候选编码器的编码参数包括:编码码流大小参数和编码性能参数。
具体的,上述编码参数与步骤S10611中的编码参数具有相同意义。
步骤S1067,依次比较两个候选编码器的编码参数,并根据比较结果从参与比较的两个候选编码器中选择一个候选编码器。
在上述步骤中,编码参数包括编码码流大小参数和编码性能参数,在进行比较时,需要将两个参数都进行比较。对于编码码流大小和编码性能的比较结果相反的候选编码器,选择编码码流大小较小,编码性能较大的编码器;而对于编码码流大小和编码性能的比较结果相同的候选编码器,则需要确定对于编码性能较高的候选编码器的编码码流大小与编码性能较低的候选编码器的编码码流大小之比,从而根据比值进行选择。
步骤S1069,将选择的候选编码器与下一个候选编码器进行比较,直至所有的所述候选编码器都进行了比较,确定最终选择的候选编码器为所述目标编码器。
在分类具有两个候选编码器的情况下,经过一次比较即可得到目标编码器,在具有n个候选编码器的情况下,需要经过n-1次比较能够得到目标编码器。
可选的,根据本申请上述实施例,所述每个候选编码器的编码参数包括:依次比较两个候选编码器的编码参数,并根据比较结果从参与比较的两个候选编码器中选择一个候选编码器,包括:
步骤S10671,在第一码流小于第二码流的情况下,如果第一编码性能大于或等于第二编码性能,则选择第一候选编码器,其中,所述第一码流和所述第一编码性能为参与比较的两个候选编码器中第一候选编码器的编码参数,所述第二码流和所述第二编码性能为参与比较的两个候选编码器中第二候选编码器的编码参数。
在上述步骤中,在第一码流小于第二码流的情况下,如果第一编码性能大于或等于第二编码性能,说明第一候选编码器能够使用较小的码流得到较高或相等的编码性能,为了节约带宽,选择第一候选编码器。
步骤S10673,在所述第一码流小于所述第二码流的情况下,如果所述第一编码性能小于所述第二编码性能,则判断第一码流与所述第二码流的比值是否小于第一预设值,在比值小于第一预设值的情况下选择所述第一候选编码器。
在上述步骤中,第一码流小于第二码流,同时第一编码性能小于第二编码性能,因此可以确定第二候选编码器使用较大的码流得到了较好的编码性能,为了选择其中一个候选编码器,需要确定的是,第二候选编码器对应的码流是否与第一候选编码器对应的码流相差较大,如果相差较大,则没有必要使用较大的码流来换取编码性能的提升,如果相差较小,则可以选择第二候选编码器。
为了确定是否有必要选择码流较大的第二候选编码器,可以通过判断第一码流与所述第二码流的比值是否小于第一预设值来确定,具体的,由于第一码流小于第二码流,因此第一码流与第二码流的比值处于区间(0,1),可以设置上述第一预设值为(1/1.5),当比值小于第一预设值时,说明第一码流与第二码流的差距较大,则不使用较大的码流来换取编码性能提升,选择第一候选编码器;当比值大于或等于第一预设值时,说明第一码流与第二码流的差距较小,可以选择第二候选编码器
步骤S10675,在所述第一码流大于所述第二码流的情况下,如果所述第一编码性能小于或等于所述第二编码性能,则选择所述第二候选编码器。
在上述步骤中,在第一码流大于第二码流的情况下,如果第一编码性能小于或等于第二编码性能,说明第二候选编码器能够使用较小的码流得到较高或相等的编码性能,为了节约带宽,则选择第二候选编码器。
步骤S10677,在所述第一码流大于所述第二码流的情况下,如果所述第一编码性能大于所述第二编码性能,则判断所述第二码流与所述第一码流的比值是否小于第二预设值,在所述比值小于第二预设值的情况下选择所述第一候选编码器。
上述步骤S10677与步骤S10673的原理相同,由于第一码流大于第二码流,因此第二码流与第一码流的比值也属于区间(0,1),同样可以设置第二预设值为(1/1.5)。
可选的,根据本申请上述实施例,所述图片块对应的候选编码器包括:图表型图片编码器、和/或图片型图像编码器。
可选的,根据本申请上述实施例,所述文字块对应的候选编码器包括:汉字型图片编码器、和/或字母型图像编码器。
图2是根据本申请实施例的一种可选的编码方法的流程图,结合图2所示,在该示例中以文字块为例,对上述实施例提供的编码方法进行详细说明;
步骤S21,生成m*n的块。在上述步骤中,获取屏幕视频中的一帧W×H,并将其分成m×n的块。
步骤S22,判定块的类型。在上述步骤中,可以利用文字以及图片的特性将块分为文字块,图片块和其他块,尺寸为(W/m)×(H/n)。如果块类型为文字块,则进入步骤S23,如果块类型为图片块,则进入步骤S26,如果块类型为其他块,则进入步骤S29。
在该示例中,对于第i个宏块,若其结果已经划分为文字块,那么利用汉字型文字编码器以及字母型文字编码器作为候选编码器对该宏块进行压缩编码处理。下面对如何对选择目标编码进行说明:
步骤S23,选择编码方式。在选择编码方式为汉字型图像编码时进入步骤S24,在选择的编码方式为字母型图像编码时进入步骤S25。
获得两个不同的候选编码器的性能比较值,如编码码流大小S以及编码性能P。编码码流大小可以通过文字编码器的编码结果直接获得,编码性能可以计算候选编码器的峰值信噪比进行计算获得,即评价图像质量的PSNR。
根据上述步骤,若第一编码器1和第二编码器2分别表示为汉字型候选编码器以及字母型候选编码器,那么可分别获得该文字宏块的编码码流大小参数Si1与Si2,同时也可获得编码性能参数Pi1与Pi2。
当Si1<Si2时,若Pi1>Pi2,则选取候选编码器1作为目标编码器对该块进行最终的编码处理;若Pi1=Pi2,则仍选取候选编码器1作为目标编码器对该块进行最终的编码处理;若Pi1<Pi2时候,如果(Si1/Si2)<(1/1.5),则选取候选编码器1,否则,选取候选编码器2。
当Si1>Si2时,若Pi1>Pi2,如果(Si2/Si1)<(1/1.5),则选取候选编码器2,否则,选取候选编码器1;若Pi1=Pi2,则选取候选编码器2作为目标编码器对该块进行最终的编码处理;若Pi1<Pi2时,则选取候选编码器2作为目标编码器对该块进行最终的编码处理。
步骤S24,调用汉字型图像编码器对块进行编码。
步骤S25,调用字母型图像编码器对块进行编码。
步骤S26,选择编码方式,在上述步骤中,对于图片块可以使用与步骤S23类似的方式选择块的编码方式。
步骤S27,调用图片型图像编码器。
步骤S28,调用图表型图像编码器。
步骤S29,调用其他图像编码器。
步骤S210,通过块对应的编码器进行编码。
实施例2
根据本发明实施例,提供了一种图像的编码装置的实施例,图3是根据本发明实施例的图像的编码装置的示意图,如图3所示,
确定模块30,用于将待编码图像进行分块,并确定每个块所属的分类,其中,分类包括:图片块、文字块以及其他块。
匹配模块32,用于为任意一个或多个分类匹配至少两种候选编码器,至少两种候选编码器分别与分类的子分类对应。
确定模块34,用于从至少两种候选编码器中确定块对应的目标编码器。
编码模块36,用于使用目标编码器对块编码。
由上可知,本申请上述实施例通过确定模块将待编码图像进行分块,并确定每个块所属的分类,通过匹配模块为任意一个或多个分类匹配至少两种候选编码器,至少两种候选编码器分别与所述分类的子分类对应,根据确定模块从所述至少两种候选编码器中确定块对应的目标编码器,通过编码模块使用目标编码器对所述块编码。上述方案为分类后的块匹配多种候选编码器,并从候选编码器选择目标编码器,选择得到的目标编码器即为该块的最优编码器,使用目标编码器对当前块进行编码,从而能够解决现有技术中在对图像进行编码时,由于难以选择对应的编码器导致编码效果低下的技术问题。
实施例3
根据本发明实施例,提供了一种存储介质,存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行实施例1中所述的图像的编码方法。
实施例4
根据本发明实施例,提供了一种处理器,处理器用于运行程序,其中,所述程序运行时执行实施例1中所述的图像的编码方法。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。