CN117676137A - 图像编码方法及计算机可读存储介质 - Google Patents

图像编码方法及计算机可读存储介质 Download PDF

Info

Publication number
CN117676137A
CN117676137A CN202311617474.6A CN202311617474A CN117676137A CN 117676137 A CN117676137 A CN 117676137A CN 202311617474 A CN202311617474 A CN 202311617474A CN 117676137 A CN117676137 A CN 117676137A
Authority
CN
China
Prior art keywords
macro block
target
macroblock
pixel points
type
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311617474.6A
Other languages
English (en)
Inventor
郭鋆昊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xian Wanxiang Electronics Technology Co Ltd
Original Assignee
Xian Wanxiang Electronics Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xian Wanxiang Electronics Technology Co Ltd filed Critical Xian Wanxiang Electronics Technology Co Ltd
Priority to CN202311617474.6A priority Critical patent/CN117676137A/zh
Publication of CN117676137A publication Critical patent/CN117676137A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本公开提供一种图像编码方法及计算机可读存储介质,将待编码图像划分为多个尺寸相同的宏块,确定多个宏块中的每个宏块的宏块类型,宏块类型包括屏幕内容类型和自然内容类型,基于自然内容编码区域和屏幕内容编码区域的特点,根据每个宏块中的所有像素点的梯度值分别在水平方向和垂直方向的分布情况以及每个宏块的宏块类型,分别确定每个宏块划分为子宏块的目标划分方式;根据目标划分方式,对待编码图像进行编码,得到编码图像。由于宏块划分方式与其纹理存在相关性,基于梯度值的分布情况进行快速的宏块划分,可以跳过不必要的宏块划分方式,降低屏幕内容帧内预测的复杂度,提高了编码效率,使得图像编码效果更好。

Description

图像编码方法及计算机可读存储介质
技术领域
本公开涉及技术领域,尤其涉及图像编码方法及计算机可读存储介质。
背景技术
宏块是视频编码技术中的待编码单元,宏块分类是视频编码技术的一种基本概念,其基本思想是通过将画面分成一个个大小不同、位置不同的块,来实行不同的压缩策略及编码技术。
当前的远程控制软件,大多底层都是基于h.264、h.265协议来实现的,这类协议本身是为了对自然视频进行编码而开发的,其宏块分类是基于帧内和帧间的预测模式来做的,它的屏幕内容帧内预测时要遍历各种预测模式和宏块划分方式,并在划分后形成的子宏块中再次遍历各预测模式和划分方式,一直循环往复。
然而,这种方式没有充分考虑到屏幕内容包含的众多特性,使得编码效果不好,编码效率较低。
发明内容
本公开实施例提供一种图像编码方法及计算机可读存储介质,能够解决现有的图像编码时编码效率较低的问题。所述技术方案如下:
根据本公开实施例的第一方面,提供一种图像编码方法,包括:
将待编码图像划分为多个宏块,所述多个宏块中的每个宏块的尺寸相同;
确定所述多个宏块中的每个宏块的宏块类型,所述宏块类型包括屏幕内容类型和自然内容类型;
根据每个宏块中的所有像素点的梯度值分别在水平方向和垂直方向的分布情况以及每个宏块的宏块类型,分别确定每个宏块划分为子宏块的目标划分方式;
根据所述目标划分方式,对所述待编码图像进行编码,得到编码图像。
在一个实施例中,所述根据每个宏块中的所有像素点的梯度值分别在水平方向和垂直方向的分布情况以及每个宏块的宏块类型,分别确定每个宏块划分为子宏块的目标划分方式,包括:
若第一目标宏块的水平梯度值等于0,则所述第一目标宏块按照水平方向划分为子宏块;
若第一目标宏块的垂直梯度值等于0,则所述第一目标宏块按照垂直方向划分为子宏块。
在一个实施例中,所述根据每个宏块中的所有像素点的梯度值分别在水平方向和垂直方向的分布情况以及每个宏块的宏块类型,分别确定每个宏块划分为子宏块的目标划分方式,包括:
若第一目标宏块的水平梯度值和所述第一目标宏块的垂直梯度值均不等于0,所述第一目标宏块的宏块类型是自然内容类型,所述第一目标宏块的总梯度值大于第一预设阈值,且所述第一目标宏块的水平梯度值大于所述第一目标宏块的垂直梯度值,则所述第一目标宏块按照垂直方向划分为子宏块;
若第一目标宏块的水平梯度值和所述第一目标宏块的垂直梯度值均不等于0,所述第一目标宏块的宏块类型是自然内容类型,所述第一目标宏块的总梯度值大于第一预设阈值,且所述第一目标宏块的水平梯度值小于所述第一目标宏块的垂直梯度值,则所述第一目标宏块按照水平方向划分为子宏块。
在一个实施例中,所述根据每个宏块中的所有像素点的梯度值分别在水平方向和垂直方向的分布情况以及每个宏块的宏块类型,分别确定每个宏块划分为子宏块的目标划分方式之前,还包括:
根据所述第一目标宏块的所有像素点的梯度值在水平方向的分布情况,分别得到每个像素点对应的水平梯度值;
根据所述第一目标宏块的所有像素点的梯度值在垂直方向的分布情况,分别得到每个像素点对应的垂直梯度值;
根据所有像素点分别对应的水平梯度值和所有像素点分别对应的垂直梯度值,得到每个宏块的水平梯度值、每个宏块的垂直梯度值和每个宏块的总梯度值。
在一个实施例中,所述根据所述第一目标宏块的所有像素点的梯度值在水平方向的分布情况,分别得到每个像素点对应的水平梯度值,包括:
根据如下公式得到每个像素点对应的水平梯度值:
Gx(i,j)=Mi,j*Gx
其中,Gx(i,j)是坐标为(i,j)的像素点的水平梯度值,Mi,j表示以坐标为(i,j)的像素点为中心的3*3像素矩阵;
所述根据所述第一目标宏块的所有像素点的梯度值在垂直方向的分布情况,分别得到每个像素点对应的垂直梯度值,包括:
根据如下公式得到每个像素点对应的垂直梯度:
Gy(i,j)=Mi,j*Gy
其中,Gy(i,j)是坐标为(i,j)的像素点的垂直梯度值,Mi,j表示以坐标为(i,j)的像素点为中心的3*3像素矩阵。
在一个实施例中,所述确定所述多个宏块中的每个宏块的宏块类型,包括:
根据每个宏块中边缘像素点的数量占像素点总数量的比值、每个宏块中像素点的亮度值的种类以及每个宏块中主像素点的数量占像素点总数量的比值,分别确定每个宏块的宏块类型;其中,主像素点是每个宏块中像素点的亮度值的种类中数量最多的N种对应的像素点。
在一个实施例中,所述根据每个宏块中边缘像素点的数量占像素点总数量的比值、每个宏块中像素点的亮度值的种类以及每个宏块中主像素点的数量占像素点总数量的比值,分别确定每个宏块的宏块类型,包括:
若第二目标宏块中像素点的亮度值的种类的数量小于第一预设阈值,所述第二目标宏块中边缘像素点的数量占像素点总数量的比值大于第二预设阈值,且所述第二目标宏块中主像素点的数量占像素点总数量的比值大于第三预设阈值,则确定所述第二目标宏块的宏块类型是屏幕内容类型;
若第二目标宏块中像素点的亮度值的种类的数量大于或等于第一预设阈值,第二目标宏块中边缘像素点的数量占像素点总数量的比值小于或等于第二预设阈值,且所述第二目标宏块中主像素点的数量占像素点总数量的比值小于或等于第三预设阈值,则确定所述第二目标宏块的宏块类型是自然内容类型。
在一个实施例中,所述根据每个宏块中边缘像素点的数量占像素点总数量的比值、每个宏块中像素点的亮度值的种类以及每个宏块中主像素点的数量占像素点总数量的比值,分别确定每个宏块的宏块类型之前,还包括:
对于每个宏块中的每个目标像素点分别进行如下处理:若所述目标像素点的亮度值与所述目标像素点对应的相邻对角线上的像素点的亮度值的差值大于第四预设阈值,确定所述目标像素点是潜在边缘像素点;
根据潜在边缘像素点的亮度值与所述潜在边缘像素点对应的相邻直线上的像素点的亮度值的差值和第五预设阈值,判断所述潜在边缘像素点是否是边缘像素点。
在一个实施例中,所述根据每个宏块中边缘像素点的数量占像素点总数量的比值、每个宏块中像素点的亮度值的种类以及每个宏块中主像素点的数量占像素点总数量的比值,分别确定每个宏块的宏块类型之前,还包括:
获取每个宏块中每种像素点的亮度值的种类中对应的像素点的数量;
确定所述数量中最多的N种中的像素点是主像素点,N为大于1的整数。
根据本公开实施例的第二方面,提供一种计算机可读存储介质,存储介质中存储有至少一条计算机指令,指令由处理器加载并执行以实现第一方面以及第一方面的任一实施例所描述的图像编码方法中所执行的步骤。
本公开实施例提供的图像编码方法及计算机可读存储介质,将待编码图像划分为多个尺寸相同的宏块,确定多个宏块中的每个宏块的宏块类型,宏块类型包括屏幕内容类型和自然内容类型,基于自然内容编码区域和屏幕内容编码区域的特点,根据每个宏块中的所有像素点的梯度值分别在水平方向和垂直方向的分布情况以及每个宏块的宏块类型,分别确定每个宏块划分为子宏块的目标划分方式;根据目标划分方式,对待编码图像进行编码,得到编码图像。由于宏块划分方式与其纹理存在相关性,基于梯度值的分布情况进行快速的宏块划分,可以跳过不必要的宏块划分方式,降低屏幕内容帧内预测的复杂度,提高了编码效率,使得图像编码效果更好。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1为本公开实施例提供的一种宏块分类示意图;
图2为本公开实施例提供的一种视频检测示意图;
图3为本公开实施例提供的一种图像编码方法的流程示意图;
图4为本公开实施例提供的一种图像划分及分类结果示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
请参见图1,图1为本公开实施例提供的一种宏块分类示意图,如图1所示,通过将画面分成一个个大小不同、位置不同的块,来实行不同的压缩及编码策略。
当前的远程控制软件,大多底层都是基于h.264、h.265协议来实现的,这类协议本身是为了对自然视频进行编码而开发的,其宏块分类是基于帧内和帧间的预测模式来做的,它的屏幕内容帧内预测时要遍历各种预测模式和宏块划分方式,并在划分后形成的子宏块中再次遍历各预测模式和划分方式,一直循环往复;并没有充分考虑到屏幕内容包含的众多特性,如有重复的局部图案、锐利的图形边缘、整体的颜色较少等特点。
除此之外,还有部分研究人员针对待编码内容作了视频检测,对于屏幕内容的视频部分,通过264、265来进行压缩,而对于其他内容,则使用计算机图像编码技术来压缩。请参见图2,图2为本公开实施例提供的一种视频检测示意图。图2中视频播放的窗口可以被检测出来,作为变化部门,但是视频检测的缺陷性也比较明显,例如图2中的变化部门除了人物的移动外,还有字幕的变化,而字幕就属于典型的计算机图像。
另外,对于比较复杂的画面,视频检测是基于时域上的画面连续变化进行的,如果遇到比较复杂的场景,如远程办公环境是两个软件的来回切换,视频检测就会失效。
为解决上述问题,本公开实施例提供的图像编码方法及计算机可读存储介质,将待编码图像划分为多个尺寸相同的宏块,确定多个宏块中的每个宏块的宏块类型,宏块类型包括屏幕内容类型和自然内容类型,基于自然内容编码区域和屏幕内容编码区域的特点,根据每个宏块中的所有像素点的梯度值分别在水平方向和垂直方向的分布情况以及每个宏块的宏块类型,分别确定每个宏块划分为子宏块的目标划分方式;根据目标划分方式,对待编码图像进行编码,得到编码图像。由于宏块划分方式与其纹理存在相关性,基于梯度值的分布情况进行快速的宏块划分,可以跳过不必要的宏块划分方式,降低屏幕内容帧内预测的复杂度,提高了编码效率,使得图像编码效果更好。
下面以具体的实施例进行详细说明本公开提供的技术方案。
请参见图3,图3为本公开实施例提供的一种图像编码方法的流程示意图,本实施例提供的图像编码方法由计算机或者服务器执行。本实施例提供的方法可以包括以下步骤。
步骤301、将待编码图像划分为多个宏块。
其中,多个宏块中的每个宏块的尺寸相同。
步骤302、确定多个宏块中的每个宏块的宏块类型。
其中,宏块类型包括屏幕内容类型和自然内容类型。
请参见图4,图4为本公开实施例提供的一种图像划分及分类结果示意图,如图4所示,将待编码图像划分为多个尺寸相同的宏块,对于每个宏块进行分类,图4中示例性的示出了两个宏块的分类结果,分别是自然内容类型,也可以称为自然内容编码单元(NaturalContent Coding Unit,简称NCCU)以及,屏幕内容类型,也可以称为屏幕内容编码单元(Screen Content Coding Unit,简称SCCU)。
步骤303、根据每个宏块中的所有像素点的梯度值分别在水平方向和垂直方向的分布情况以及每个宏块的宏块类型,分别确定每个宏块划分为子宏块的目标划分方式。
其中,目标划分方式可以是将宏块延水平方向进行划分子宏块,也可以是将宏块延垂直方向进行划分子宏块,还可以是不进行子宏块的划分等,对此本公开不做限定。
步骤304、根据目标划分方式,对待编码图像进行编码,得到编码图像。
本公开实施例中,将待编码图像划分为多个尺寸相同的宏块,确定多个宏块中的每个宏块的宏块类型,宏块类型包括屏幕内容类型和自然内容类型,基于自然内容编码区域和屏幕内容编码区域的特点,根据每个宏块中的所有像素点的梯度值分别在水平方向和垂直方向的分布情况以及每个宏块的宏块类型,分别确定每个宏块划分为子宏块的目标划分方式;根据目标划分方式,对待编码图像进行编码,得到编码图像。由于宏块划分方式与其纹理存在相关性,基于梯度值的分布情况进行快速的宏块划分,可以跳过不必要的宏块划分方式,降低屏幕内容帧内预测的复杂度,提高了编码效率,使得图像编码效果更好。
在上述实施例的基础上,进一步地,步骤303可以通过如下步骤3031实现。本实施例中,将每个宏块作为第一目标宏块,分别进行处理。
步骤3031、判断第一目标宏块的水平梯度值是否等于0。
若是,则继续执行步骤3032,若否,则继续执行步骤3033。
步骤3032、第一目标宏块按照水平方向划分为子宏块。
本实施例,如果第一目标宏块的水平梯度值等于0,说明第一目标宏块纹理在水平方向一致,则在下一级划分中可以按照水平方向的划分子宏块。
步骤3033、判断第一目标宏块的垂直梯度值是否等于0。
若是,则继续执行步骤3034,若否,则继续执行步骤3035。
步骤3034、第一目标宏块按照垂直方向划分为子宏块。
本实施例,如果第一目标宏块的垂直梯度值等于0,说明第一目标宏块纹理在垂直方向一致,则在下一级划分中跳过水平方向的划分方式,可以按照垂直方向划分子宏块。
步骤3035、判断第一目标宏块的宏块类型是否是自然内容类型。
若是,则继续执行步骤3036,若否,则继续执行步骤3037。
本实施例,由于自然内容宏块中的梯度来自于不同区域的边缘,与划分方向存在强相关性,因此接下来对自然内容宏块进行子宏块的划分方式判断。
步骤3036、判断是否第一目标宏块的总梯度值大于第一预设阈值,且第一目标宏块的水平梯度值大于第一目标宏块的垂直梯度值。
若是,则继续执行步骤3034,若否,则继续执行步骤3038。
其中,第一预设阈值是预先设置的数值,可以根据经验等确定,例如第一预设阈值可以是15。
本实施例,第一目标宏块的总梯度值大于第一预设阈值,且第一目标宏块的水平梯度值大于第一目标宏块的垂直梯度值,说明第一目标宏块纹理比较复杂,且在水平方向上相似性更高,因此,在下一级划分中跳过水平方向划分子宏块,按照垂直方向划分为子宏块。
步骤3038、判断是否第一目标宏块的总梯度值大于第一预设阈值,且第一目标宏块的水平梯度值小于第一目标宏块的垂直梯度值。
若是,则继续执行步骤3032,若否,则继续执行步骤3037。
本实施例,第一目标宏块的总梯度值大于第一预设阈值,且第一目标宏块的水平梯度值小于第一目标宏块的垂直梯度值,说明第一目标宏块纹理比较复杂,且在垂直方向上相似性更高,因此,在下一级划分中跳过垂直方向划分子宏块,按照水平方向划分为子宏块。
步骤3037、按照现有的方式进行宏块划分。
本实施例,由于宏块划分方式与其纹理存在相关性,通过水平和垂直方向的梯度值综合判断出宏块的纹理分布情况,从而进行快速的宏块划分,可以跳过不必要的宏块划分方式,降低屏幕内容帧内预测的复杂度,提高了编码效率,使得图像编码效果更好。
在上述实施例的基础上,进一步地,在步骤303之前,还可以包括如下步骤30301-步骤30303。
步骤30301、根据第一目标宏块的所有像素点的梯度值在水平方向的分布情况,分别得到每个像素点对应的水平梯度值。
可选的,根据如下公式(1)得到每个像素点对应的水平梯度值:
Gx(i,j)=Mi,j*Gx 公式(1)
其中,Gx(i,j)是坐标为(i,j)的像素点的水平梯度值,Mi,j表示以坐标为(i,j)的像素点为中心的3*3像素矩阵。
步骤30302、根据第一目标宏块的所有像素点的梯度值在垂直方向的分布情况,分别得到每个像素点对应的垂直梯度值。
可选的,根据如下公式(2)得到每个像素点对应的垂直梯度:
Gy(i,j)=Mi,j*Gy 公式(2)
其中,Gy(i,j)是坐标为(i,j)的像素点的垂直梯度值,Mi,j表示以坐标为(i,j)的像素点为中心的3*3像素矩阵。
步骤30303、根据所有像素点分别对应的水平梯度值和所有像素点分别对应的垂直梯度值,得到每个宏块的水平梯度值、每个宏块的垂直梯度值和每个宏块的总梯度值。
在一些实施例中,步骤302可以通过如下步骤3021-步骤3023实现。本实施例中,将每个宏块作为第二目标宏块,分别进行处理。
步骤3021、判断是否第二目标宏块中像素点的亮度值的种类的数量小于第一预设阈值,第二目标宏块中边缘像素点的数量占像素点总数量的比值大于第二预设阈值,且第二目标宏块中主像素点的数量占像素点总数量的比值大于第三预设阈值。
若是,则继续执行步骤3022,若否,则继续执行步骤3023。
其中,第二预设阈值是预先设置的数值,可以根据经验等确定,例如第二预设阈值可以是0.4。
其中,第三预设阈值是预先设置的数值,可以根据经验等确定,例如第二预设阈值可以是0.6。
步骤3022、确定第二目标宏块的宏块类型是屏幕内容类型。
步骤3023、确定第二目标宏块的宏块类型是自然内容类型。
本实施例中,通过判断第二目标宏块中像素点的亮度值的种类的数量小于第一预设阈值,确定第二目标宏块中像素点的亮度值并不是很丰富,通常屏幕内容类型的宏块常常颜色单一,而自然内容类型的宏块常常颜色丰富,因此亮度值的种类少说明第二目标宏块的宏块类型是屏幕内容类型。
通过判断第二目标宏块中边缘像素点的数量占像素点总数量的比值大于第二预设阈值,确定当前第二目标宏块中的边缘像素点较多,通常屏幕内容类型的宏块常常存在较多的边缘像素点,而自然内容类型的宏块边缘像素点较少,因此,亮度值的种类少说明第二目标宏块的宏块类型是屏幕内容类型。
通过判断第二目标宏块中主像素点的数量占像素点总数量的比值大于第三预设阈值,确定有N种亮度值对应的像素点占比较高,因此,亮度值的种类少说明第二目标宏块的宏块类型是屏幕内容类型。
在一些实施例中,步骤302之前还可以包括如下步骤30201和步骤30202。本实施例中,将每个宏块中的每个像素点作为目标像素点,分别进行处理。
步骤30201、对于每个宏块中的每个目标像素点分别进行如下处理:若目标像素点的亮度值与目标像素点对应的相邻对角线上的像素点的亮度值的差值大于第四预设阈值,确定目标像素点是潜在边缘像素点。
进一步地,根据如下公式(3)-公式(6)判断目标像素点是否是潜在边缘像素点。如果目标像素点满足如下公式(3)-公式(6)中的任一公式,则确定目标像素点是潜在边缘像素点。
|P(i,j)-P(i-1,j-1)|>TH1 公式(3)
|P(i,j)-P(i+1,j-1)|>TH1 公式(4)
|P(i,j)-P(i-1,j+1)|>TH1 公式(5)
|P(i,j)-P(i+1,j+1)|>TH1 公式(6)
其中,P(i,j)是坐标为(i,j)的目标像素点的亮度值。TH1是第四预设阈值。
可选的,TH1的取值可以由公式(7)决定:
TH1=64<<(bitdepth-8) 公式(7)
其中,bitdepth指编码的比特深度。
步骤30202、根据潜在边缘像素点的亮度值与潜在边缘像素点对应的相邻直线上的像素点的亮度值的差值和第五预设阈值,判断潜在边缘像素点是否是边缘像素点。
本实施例中,如果目标像素点是潜在边缘像素点,那么考虑其水平方向和竖直方向的亮度差,可以通过如下公式(8)-公式(11)并结合上述公式(3)-公式(6)综合判断潜在边缘像素点是否为边缘像素点。
|P(i,j)-P(i-1,j)|>TH2 公式(8)
|P(i,j)-P(i,j-1)|>TH2 公式(9)
|P(i,j)-P(i,j+1)|>TH2 公式(10)
|P(i,j)-P(i+1,j)|>TH2 公式(11)
可选的,TH2的取值由公式(12)决定:
其中,TH2是第五预设阈值,bitdepth指编码的比特深度,TH1是第四预设阈值。
对于满足公式(3)的潜在边缘像素点,若满足公式(8)或公式(9),则确定该潜在边缘像素点为边缘像素点。
对于满足公式(4)的潜在边缘像素点,若满足公式(9)或公式(11),则确定该潜在边缘像素点为边缘像素点。
对于满足公式(5)的潜在边缘像素点,若满足公式(8)或公式(10),则确定该潜在边缘像素点为边缘像素点。
对于满足公式(6)的潜在边缘像素点,若满足公式(10)或公式(11),则确定该潜在边缘像素点为边缘像素点。
在一些实施例中,步骤302之前还可以包括如下步骤30203和步骤30204。
步骤30203、获取每个宏块中每种像素点的亮度值的种类中对应的像素点的数量。
步骤30204、确定数量中最多的N种中的像素点是主像素点。
其中,N为大于1的整数。例如,N可以为5。
进一步地,步骤30204之后,可以通过如下公式(13)得到每个宏块中主像素点的数量占像素点总数量的比值。
其中,Pmain_pixel是每个宏块中主像素点的数量占像素点总数量的比值,numsmain_pixel表示宏块中主像素点的数量。
本实施例,利用像素梯度进行边缘检测,能够以较小的计算量极大程度的对待编码内容进行有效分类,进而提高了编码效率。
下面以具体的示例对本公开实施例的方法进行说明。
本算法只适用于尺寸大于等于8*8的宏块,将宏块类型最终分类为屏幕内容编码单元或自然内容编码单元。
下面示例性的介绍一种宏块分类方法。宏块分类方法包括以下步骤。
步骤1.计算出宏块中边缘像素点的占比Pedge_pixel,计算公式(3.1)如下:
其中,numsedge_pixel表示宏块中edge_pixel的数量。
考虑到屏幕内容边缘方向的多样性,本算法将当前像素对角线上的亮度差,作为检测的第一判别要素;将满足公式(3.2)~(3.5)的中任意一公式的点初步判断为潜在边缘像素点potential_edge_pixel。
|P(i,j)-P(i-1,j-1)|>TH1 (3.2)
|P(i,j)-P(i+1,j-1)|>TH1 (3.3)
|P(i,j)-P(i-1,j+1)|>TH1 (3.4)
|P(i,j)-P(i+1,j+1)|>TH1 (3.5)
其中,TH1的取值由式(3.6)决定:
TH1=64<<(bitdepth-8) (3.6)
其中,bitdepth指编码的比特深度。
如果当前像素点是潜在边缘像素点,那么考虑其水平方向和竖直方向的亮度差,由公式(3.7)~(3.10)判断当前像素点是否为边缘像素点edge_pixel。
|P(i,j)-P(i-1,j)|>TH2 (3.7)
|P(i,j)-P(i,j-1)|>TH2 (3.8)
|P(i,j)-P(i,j+1)|>TH2 (3.9)
|P(i,j)-P(i+1,j)|>TH2 (3.10)
其中,TH2的取值由式(3.11)决定:
对于满足式(3.2)的潜在边缘像素点,若满足式(3.7)或(3.8),那么该点为边缘像素点(edge_pixel)。
同理:
满足式(3.3)的点,若满足式(3.8)或(3.10),该点为边缘像素点。
满足式(3.4)的点,若满足式(3.7)或(3.19),该点为边缘像素点。
满足式(3.5)的点,若满足式(3.9)或(3.10),该点为边缘像素点。
步骤2.统计待编码宏块中的亮度值数量nums_color,即宏块内不同亮度值的种类。
步骤3.将待编码宏块中的全部亮度值个数从大到小排列,统计前5种亮度值的数量作为主像素点main_pixel。并按照公式(3.12)计算main_pixel的占比:
其中,numsmain_pixel表示宏块中main_pixel的数量。
步骤4.若Pedge_pixel>TH3,Pmain_pixel>TH4,nums_color<TH5,则判断当前编码单元为SCCU,否则为NCCU。根据实验经验,TH3取0.4,TH4取0.6,TH5取15。
下面示例性的介绍一种宏块划分方法。本示例的宏块划分方法可以包括如下步骤。
采用Sobel算子计算宏块中每个像素点在水平、垂直方向的梯度值;Sobel子的全方向卷积因子Gx和Gy如公式(3.13)和(3.14)所示:
坐标为(i,j)的像素点的水平梯度值Gx(i,j)和垂直梯度值Gy(i,j)的计算公式如(3.15)和(3.16)所示:
Gx(i,j)=Mi,j*Gx (3.15)
Gy(i,j)=Mi,j*Gy (3.16)
其中,Mi,j表示以坐标为(i,j)的像素点为中心的3*3像素矩阵;
依据公式(3.17)和(3.18)分别统计出宏块中所有像素点在水平方向与垂直方向上的梯度值绝对值之和Gx_total与Gy_total
宏块在水平方向和垂直方向的上的总梯度值如公式(3.19):
Gtotal=Gx_total+Gy_total(3.19)
依据宏块的梯度值信息,按如下步骤进行快速宏块划分:
步骤一、若Gx_total=0,说明宏块纹理在水平方向一致,则在下一级划分中垂直方向的划分;若Gy_total=0,说明宏块纹理在垂直方向上一致,则在下一级划分中跳过水平方向的划分;否则进行如下步骤二。
步骤二、由于NCCU中的梯度来自于不同区域的边缘,与划分方向存在强相关性,接下来只对NCCU进行基于梯度的快速划分决策。若Gtotal>TH5且Gy_total>Gx_total,说明宏块纹理比较复杂,且在水平方向上相似性更高,则在下一级划分中跳过垂直方向划分;否则进行如下步骤三。
上述过程中,TH5由公式(3.20)决定。
TH5=700<<(bitdepth-8) (3.20)
步骤三、若Gtotal>TH5且Gy_total<Gx_total,说明宏块在纹理复杂的前提下,在垂直方向上相似性更高,则在下一级划分中跳过水平方向划分。
本实施例,首先对宏块进行自然内容编码单元和屏幕内容编码单元的分类,利用像素梯度进行边缘检测,能够以较小的计算量极大程度的对待编码内容进行有效分类。然后,由于宏块划分方式与其纹理存在相关性,基于上一步得到的宏块类型,提出一种基于梯度的快速宏块划分决策,可以跳过不必要的宏块划分方式,降低屏幕内容帧内预测的复杂度。基于划分完的宏块,对待编码图像进行编码,降低屏幕内容帧内预测的复杂度,提高了编码效率,使得图像编码效果更好。
基于上述任一实施例中所描述的图像编码方法,本公开实施例还提供一种计算机可读存储介质,例如,非临时性计算机可读存储介质可以是只读存储器(英文:Read OnlyMemory,ROM)、随机存取存储器(英文:Random Access Memory,RAM)、CD-ROM、磁带、软盘和光数据存储装置等。该存储介质上存储有计算机指令,用于执行上述任一实施例中所描述的图像编码方法,此处不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。

Claims (10)

1.一种图像编码方法,其特征在于,包括:
将待编码图像划分为多个宏块,所述多个宏块中的每个宏块的尺寸相同;
确定所述多个宏块中的每个宏块的宏块类型,所述宏块类型包括屏幕内容类型和自然内容类型;
根据每个宏块中的所有像素点的梯度值分别在水平方向和垂直方向的分布情况以及每个宏块的宏块类型,分别确定每个宏块划分为子宏块的目标划分方式;
根据所述目标划分方式,对所述待编码图像进行编码,得到编码图像。
2.根据权利要求1所述的方法,其特征在于,所述根据每个宏块中的所有像素点的梯度值分别在水平方向和垂直方向的分布情况以及每个宏块的宏块类型,分别确定每个宏块划分为子宏块的目标划分方式,包括:
若第一目标宏块的水平梯度值等于0,则所述第一目标宏块按照水平方向划分为子宏块;
若第一目标宏块的垂直梯度值等于0,则所述第一目标宏块按照垂直方向划分为子宏块。
3.根据权利要求1所述的方法,其特征在于,所述根据每个宏块中的所有像素点的梯度值分别在水平方向和垂直方向的分布情况以及每个宏块的宏块类型,分别确定每个宏块划分为子宏块的目标划分方式,包括:
若第一目标宏块的水平梯度值和所述第一目标宏块的垂直梯度值均不等于0,所述第一目标宏块的宏块类型是自然内容类型,所述第一目标宏块的总梯度值大于第一预设阈值,且所述第一目标宏块的水平梯度值大于所述第一目标宏块的垂直梯度值,则所述第一目标宏块按照垂直方向划分为子宏块;
若第一目标宏块的水平梯度值和所述第一目标宏块的垂直梯度值均不等于0,所述第一目标宏块的宏块类型是自然内容类型,所述第一目标宏块的总梯度值大于第一预设阈值,且所述第一目标宏块的水平梯度值小于所述第一目标宏块的垂直梯度值,则所述第一目标宏块按照水平方向划分为子宏块。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述根据每个宏块中的所有像素点的梯度值分别在水平方向和垂直方向的分布情况以及每个宏块的宏块类型,分别确定每个宏块划分为子宏块的目标划分方式之前,还包括:
根据所述第一目标宏块的所有像素点的梯度值在水平方向的分布情况,分别得到每个像素点对应的水平梯度值;
根据所述第一目标宏块的所有像素点的梯度值在垂直方向的分布情况,分别得到每个像素点对应的垂直梯度值;
根据所有像素点分别对应的水平梯度值和所有像素点分别对应的垂直梯度值,得到每个宏块的水平梯度值、每个宏块的垂直梯度值和每个宏块的总梯度值。
5.根据权利要求4所述的方法,其特征在于,所述根据所述第一目标宏块的所有像素点的梯度值在水平方向的分布情况,分别得到每个像素点对应的水平梯度值,包括:
根据如下公式得到每个像素点对应的水平梯度值:
Gx(i,j)=Mi,j*Gx
其中,Gx(i,j)是坐标为(i,j)的像素点的水平梯度值,Mi,j表示以坐标为(i,j)的像素点为中心的3*3像素矩阵;
所述根据所述第一目标宏块的所有像素点的梯度值在垂直方向的分布情况,分别得到每个像素点对应的垂直梯度值,包括:
根据如下公式得到每个像素点对应的垂直梯度:
Gy(i,j)=Mi,j*Gy
其中,Gy(i,j)是坐标为(i,j)的像素点的垂直梯度值,Mi,j表示以坐标为(i,j)的像素点为中心的3*3像素矩阵。
6.根据权利要求1所述的方法,其特征在于,所述确定所述多个宏块中的每个宏块的宏块类型,包括:
根据每个宏块中边缘像素点的数量占像素点总数量的比值、每个宏块中像素点的亮度值的种类以及每个宏块中主像素点的数量占像素点总数量的比值,分别确定每个宏块的宏块类型;其中,主像素点是每个宏块中像素点的亮度值的种类中数量最多的N种对应的像素点。
7.根据权利要求6所述的方法,其特征在于,所述根据每个宏块中边缘像素点的数量占像素点总数量的比值、每个宏块中像素点的亮度值的种类以及每个宏块中主像素点的数量占像素点总数量的比值,分别确定每个宏块的宏块类型,包括:
若第二目标宏块中像素点的亮度值的种类的数量小于第一预设阈值,所述第二目标宏块中边缘像素点的数量占像素点总数量的比值大于第二预设阈值,且所述第二目标宏块中主像素点的数量占像素点总数量的比值大于第三预设阈值,则确定所述第二目标宏块的宏块类型是屏幕内容类型;
若第二目标宏块中像素点的亮度值的种类的数量大于或等于第一预设阈值,第二目标宏块中边缘像素点的数量占像素点总数量的比值小于或等于第二预设阈值,且所述第二目标宏块中主像素点的数量占像素点总数量的比值小于或等于第三预设阈值,则确定所述第二目标宏块的宏块类型是自然内容类型。
8.根据权利要求6所述的方法,其特征在于,所述根据每个宏块中边缘像素点的数量占像素点总数量的比值、每个宏块中像素点的亮度值的种类以及每个宏块中主像素点的数量占像素点总数量的比值,分别确定每个宏块的宏块类型之前,还包括:
对于每个宏块中的每个目标像素点分别进行如下处理:若所述目标像素点的亮度值与所述目标像素点对应的相邻对角线上的像素点的亮度值的差值大于第四预设阈值,确定所述目标像素点是潜在边缘像素点;
根据潜在边缘像素点的亮度值与所述潜在边缘像素点对应的相邻直线上的像素点的亮度值的差值和第五预设阈值,判断所述潜在边缘像素点是否是边缘像素点。
9.根据权利要求6所述的方法,其特征在于,所述根据每个宏块中边缘像素点的数量占像素点总数量的比值、每个宏块中像素点的亮度值的种类以及每个宏块中主像素点的数量占像素点总数量的比值,分别确定每个宏块的宏块类型之前,还包括:
获取每个宏块中每种像素点的亮度值的种类中对应的像素点的数量;
确定所述数量中最多的N种中的像素点是主像素点,N为大于1的整数。
10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条计算机指令,所述指令由处理器加载并执行以实现权利要求1至权利要求9任一项所述的图像编码方法中所执行的步骤。
CN202311617474.6A 2023-11-29 2023-11-29 图像编码方法及计算机可读存储介质 Pending CN117676137A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311617474.6A CN117676137A (zh) 2023-11-29 2023-11-29 图像编码方法及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311617474.6A CN117676137A (zh) 2023-11-29 2023-11-29 图像编码方法及计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN117676137A true CN117676137A (zh) 2024-03-08

Family

ID=90080117

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311617474.6A Pending CN117676137A (zh) 2023-11-29 2023-11-29 图像编码方法及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN117676137A (zh)

Similar Documents

Publication Publication Date Title
JP5714042B2 (ja) ビデオ情報処理
US6025879A (en) System for moving object detection in moving picture
CN110730343B (zh) 一种多功能视频编码帧间划分方法、系统及存储介质
CN102119401B (zh) 用于带状伪像检测的方法和设备
US9167260B2 (en) Apparatus and method for video processing
EP1419650A2 (en) method and apparatus for motion estimation between video frames
US20200304797A1 (en) Cluster refinement for texture synthesis in video coding
CN109379594B (zh) 视频编码压缩方法、装置、设备和介质
US9883200B2 (en) Method of acquiring neighboring disparity vectors for multi-texture and multi-depth video
JP2007067469A (ja) フレーム内予測符号化制御方法、フレーム内予測符号化制御装置、フレーム内予測符号化制御プログラムおよびそのプログラムを記録した記録媒体
WO2016142931A1 (en) Method and system of controlling a quality measure
KR20110126691A (ko) 블록 기반 압축 이미지 내의 블러 측정
JP2006115487A (ja) アドバンスドビデオ符号化の演算の複雑度を低減する空間領域情報の前処理
KR20060111528A (ko) 비디오 신호에서 국부적인 시각적 공간-시간 상세의 검출
US8891609B2 (en) System and method for measuring blockiness level in compressed digital video
US20100007753A1 (en) Image compression method, device, electronic camera, and program
CN117676137A (zh) 图像编码方法及计算机可读存储介质
CN111246221B (zh) 一种avs3帧内快速划分方法、系统及存储介质
CN113542864B (zh) 视频的花屏区域检测方法、装置、设备及可读存储介质
CN111246218B (zh) 基于jnd模型的cu分割预测和模式决策纹理编码方法
CN110519597B (zh) 一种基于hevc的编码方法、装置、计算设备和介质
CN113115042B (zh) 一种基于isp优化的帧内决策方法、装置、设备及介质
JP3715273B2 (ja) 画像データの平滑化処理装置、平滑化処理方法及び平滑化処理プログラム
JP3971930B2 (ja) 動画像符号化方法と装置、並びにこの方法の実行プログラムとこの方法の実行プログラムを記録した記録媒体
CN113079374B (zh) 图像编码方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication