CN116208775A - 运动估计方法、装置、计算机设备和硬件编码器 - Google Patents

运动估计方法、装置、计算机设备和硬件编码器 Download PDF

Info

Publication number
CN116208775A
CN116208775A CN202310200462.7A CN202310200462A CN116208775A CN 116208775 A CN116208775 A CN 116208775A CN 202310200462 A CN202310200462 A CN 202310200462A CN 116208775 A CN116208775 A CN 116208775A
Authority
CN
China
Prior art keywords
block
pixel
matching
encoded
search
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
CN202310200462.7A
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.)
Glenfly Tech Co Ltd
Original Assignee
Glenfly Tech 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 Glenfly Tech Co Ltd filed Critical Glenfly Tech Co Ltd
Priority to CN202310200462.7A priority Critical patent/CN116208775A/zh
Publication of CN116208775A publication Critical patent/CN116208775A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/533Motion estimation using multistep search, e.g. 2D-log search or one-at-a-time search [OTS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本申请涉及一种运动估计方法、装置、计算机设备和硬件编码器。在待编码帧对应的参考帧中确定两个搜索中心点;以整数像素为单位确定第一边长,根据两个搜索中心点和第一边长确定第一搜索区域,根据第一搜索区域中的每一个整数像素确定与待编码块对应的多个第一匹配块;绝对误差和最小的两个第一匹配块的左上顶点像素作为两个新的搜索中心点;以1/4像素为单位确定第二边长,根据两个新的搜索中心点和第二边长确定第二搜索区域,根据第二搜索区域中的每一个分数像素确定与待编码块对应的多个第二匹配块;第一匹配块和第二匹配块中取绝对误差和最小的目标匹配块。采用本方法能够增加分数像素运动估计搜索的匹配点的数量,从而提高了编码效率。

Description

运动估计方法、装置、计算机设备和硬件编码器
技术领域
本申请涉及视频编码技术领域,特别是涉及一种运动估计方法、装置、计算机设备、存储介质、计算机程序产品和硬件编码器。
背景技术
在编码器的设计中,运动估计模块是最重要的模块之一,运动估计也是视频编码过程中,极其重要的一个环节。其作用是用来得到当前块的最优匹配块,匹配度越高,编码质量就会越好,因此运动估计做的好与坏,决定了编码质量的基本走势。运动估计又分为整数像素运动估计和分数像素运动估计。其中,整数像素运动估计的参考像素均为整数像素,分数像素运动估计的参考像素均为分数像素,分数像素是由整数像素线性插值得到的,这里涉及到大量的像素插值,绝对误差和(通常称为SAD)计算,SAD比较等操作,像素插值和SAD的计算,都需要相当大的计算量,可以说是整个运动估计估计模块中计算量最大的两个部分,因此运动估计模块是整个编码器中最耗时、占用硬件资源最多的模块。因此需要权衡编码质量、编码速度、硬件资源等因素,来制定合理的运动估计算法。
然而,目前已有的编码方式,往往为了权衡编码质量、编码速度、硬件资源等因素,分数像素搜索的点数太少,导致搜索到全局最优点的概率不够高,从而导致编码效率不够好。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高编码效率的运动估计方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种运动估计方法。所述方法包括:
在待编码帧中确定待编码块,在待编码帧对应的参考帧中确定两个搜索中心点;
以整数像素为单位确定第一边长,根据两个搜索中心点和第一边长在参考帧中确定第一搜索区域,根据第一搜索区域中的每一个整数像素确定与待编码块对应的多个第一匹配块,并计算每一个第一匹配块相对待编码块的绝对误差和;
获取绝对误差和最小的两个第一匹配块,根据绝对误差和最小的两个第一匹配块的左上顶点像素,确定两个新的搜索中心点;绝对误差和用于表示匹配块相对待编码块的预测误差大小;
以1/4像素为单位确定第二边长,根据两个新的搜索中心点和第二边长在参考帧中确定第二搜索区域,根据第二搜索区域中的每一个分数像素确定与待编码块对应的多个第二匹配块,并计算每一个第二匹配块相对待编码块的绝对误差和;
从第一匹配块和第二匹配块中,获取绝对误差和最小的一个匹配块作为待编码块的目标匹配块。
在其中一个实施例中,在待编码帧对应的参考帧中确定两个搜索中心点,包括:
对待编码块进行一次整数像素运动估计,得到与待编码块对应的两个初始匹配块;
根据每一个初始匹配块的左上顶点像素,确定两个搜索中心点。
在其中一个实施例中,根据两个搜索中心点和第一边长在参考帧中确定第一搜索区域,包括:
根据第一边长分别确定每一个搜索中心点对应的上边界像素、下边界像素、左边界像素和右边界像素;第一边长包括至少一个边界长度参数;
根据每一个搜索中心点对应的上边界像素、下边界像素、左边界像素和右边界像素,确定每一个搜索中心点对应的一个子搜索区域,得到两个子搜索区域;
根据两个子搜索区域的重合程度,确定第一搜索区域。
在其中一个实施例中,根据两个子搜索区域的重合程度,确定第一搜索区域,包括:
若两个子搜索区域之间不存在重合区域,将两个子搜索区域作为第一搜索区域;
若两个子搜索区域之间存在重合区域,获取包含两个子搜索区域的最小矩形区域,将最小矩形区域作为第一搜索区域。
在其中一个实施例中,根据第一搜索区域中的每一个整数像素确定与待编码块对应的多个第一匹配块,包括:
获取待编码块的像素数量;
将第一搜索区域中的每一个整数像素分别作为一个匹配块左上顶点像素,以构建得到多个第一匹配块;其中,第一匹配块的数量与像素数量相同。
在其中一个实施例中,计算每一个第二匹配块相对待编码块的绝对误差和,包括:
根据当前第二匹配块中各分数像素记录已插值数据;已插值数据包括当前第二匹配块中各分数像素的插值计算结果,分数像素包括1/2像素和1/4像素;
将下一个第二匹配块中的分数像素与已插值数据中的分数像素进行对比,以将下一个第二匹配块中的分数像素区分为已插值分数像素和未插值分数像素;
针对下一个第二匹配块中的已插值分数像素,从当前记录的已插值数据中获取已插值分数像素对应的插值计算结果,针对下一个第二匹配块中未插值分数像素,进行插值计算得到插值计算结果,并根据未插值分数像素的插值计算结果更新已插值数据。
在其中一个实施例中,获取绝对误差和最小的一个匹配块作为待编码块的目标匹配块之后,还包括:
根据目标匹配块的左上顶点像素和待编码块的左上顶点像素,获取目标匹配块和待编码块之间的运动矢量,作为待编码块的运动估计结果。
第二方面,本申请还提供了一种硬件编码器。所述硬件编码器包括:
第一整数像素运动估计单元,用于以整数像素为单位确定第一边长,根据两个搜索中心点和第一边长在参考帧中确定第一搜索区域,根据第一搜索区域中的每一个整数像素确定与待编码块对应的多个第一匹配块;获取绝对误差和最小的两个第一匹配块,根据绝对误差和最小的两个第一匹配块的左上顶点像素,确定两个新的搜索中心点;
分数像素运动估计单元,用于以1/4像素为单位确定第二边长,根据两个新的搜索中心点和第二边长在参考帧中确定第二搜索区域,根据第二搜索区域中的每一个分数像素确定与待编码块对应的多个第二匹配块;
绝对误差和计算单元,用于计算每一个第一匹配块相对待编码块的绝对误差和,以及计算每一个第二匹配块相对待编码块的绝对误差和;绝对误差和用于表示匹配块相对待编码块的预测误差大小;
绝对误差和比较单元,用于从第一匹配块和第二匹配块中,获取绝对误差和最小的一个匹配块作为待编码块的目标匹配块。
在其中一个实施例中,硬件编码器还包括:
第二整数像素运动估计单元,用于对待编码块进行一次整数像素运动估计,得到与待编码块对应的两个初始匹配块;根据每一个初始匹配块的左上顶点像素,确定两个搜索中心点。
第三方面,本申请还提供了一种运动估计装置。所述装置包括:
第一定位模块,用于在待编码帧中确定待编码块,在待编码帧对应的参考帧中确定两个搜索中心点;
第一估计模块,用于以整数像素为单位确定第一边长,根据两个搜索中心点和第一边长在参考帧中确定第一搜索区域,根据第一搜索区域中的每一个整数像素确定与待编码块对应的多个第一匹配块,并计算每一个第一匹配块相对待编码块的绝对误差和;
第二定位模块,用于获取绝对误差和最小的两个第一匹配块,根据绝对误差和最小的两个第一匹配块的左上顶点像素,确定两个新的搜索中心点;绝对误差和用于表示匹配块相对待编码块的预测误差大小;
第二估计模块,用于以1/4像素为单位确定第二边长,根据两个新的搜索中心点和第二边长在参考帧中确定第二搜索区域,根据第二搜索区域中的每一个分数像素确定与待编码块对应的多个第二匹配块,并计算每一个第二匹配块相对待编码块的绝对误差和;
比较匹配模块,用于从第一匹配块和第二匹配块中,获取绝对误差和最小的一个匹配块作为待编码块的目标匹配块。
第四方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
在待编码帧中确定待编码块,在待编码帧对应的参考帧中确定两个搜索中心点;
以整数像素为单位确定第一边长,根据两个搜索中心点和第一边长在参考帧中确定第一搜索区域,根据第一搜索区域中的每一个整数像素确定与待编码块对应的多个第一匹配块,并计算每一个第一匹配块相对待编码块的绝对误差和;
获取绝对误差和最小的两个第一匹配块,根据绝对误差和最小的两个第一匹配块的左上顶点像素,确定两个新的搜索中心点;绝对误差和用于表示匹配块相对待编码块的预测误差大小;
以1/4像素为单位确定第二边长,根据两个新的搜索中心点和第二边长在参考帧中确定第二搜索区域,根据第二搜索区域中的每一个分数像素确定与待编码块对应的多个第二匹配块,并计算每一个第二匹配块相对待编码块的绝对误差和;
从第一匹配块和第二匹配块中,获取绝对误差和最小的一个匹配块作为待编码块的目标匹配块。
第五方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
在待编码帧中确定待编码块,在待编码帧对应的参考帧中确定两个搜索中心点;
以整数像素为单位确定第一边长,根据两个搜索中心点和第一边长在参考帧中确定第一搜索区域,根据第一搜索区域中的每一个整数像素确定与待编码块对应的多个第一匹配块,并计算每一个第一匹配块相对待编码块的绝对误差和;
获取绝对误差和最小的两个第一匹配块,根据绝对误差和最小的两个第一匹配块的左上顶点像素,确定两个新的搜索中心点;绝对误差和用于表示匹配块相对待编码块的预测误差大小;
以1/4像素为单位确定第二边长,根据两个新的搜索中心点和第二边长在参考帧中确定第二搜索区域,根据第二搜索区域中的每一个分数像素确定与待编码块对应的多个第二匹配块,并计算每一个第二匹配块相对待编码块的绝对误差和;
从第一匹配块和第二匹配块中,获取绝对误差和最小的一个匹配块作为待编码块的目标匹配块。
第六方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
在待编码帧中确定待编码块,在待编码帧对应的参考帧中确定两个搜索中心点;
以整数像素为单位确定第一边长,根据两个搜索中心点和第一边长在参考帧中确定第一搜索区域,根据第一搜索区域中的每一个整数像素确定与待编码块对应的多个第一匹配块,并计算每一个第一匹配块相对待编码块的绝对误差和;
获取绝对误差和最小的两个第一匹配块,根据绝对误差和最小的两个第一匹配块的左上顶点像素,确定两个新的搜索中心点;绝对误差和用于表示匹配块相对待编码块的预测误差大小;
以1/4像素为单位确定第二边长,根据两个新的搜索中心点和第二边长在参考帧中确定第二搜索区域,根据第二搜索区域中的每一个分数像素确定与待编码块对应的多个第二匹配块,并计算每一个第二匹配块相对待编码块的绝对误差和;
从第一匹配块和第二匹配块中,获取绝对误差和最小的一个匹配块作为待编码块的目标匹配块。
上述运动估计方法、装置、计算机设备、存储介质、计算机程序产品和硬件编码器,首先在待编码帧中确定待编码块,在待编码帧对应的参考帧中确定两个搜索中心点;然后以整数像素为单位确定第一边长,根据两个搜索中心点和第一边长在参考帧中确定第一搜索区域,根据第一搜索区域中的每一个整数像素确定与待编码块对应的多个第一匹配块,并计算每一个第一匹配块相对待编码块的绝对误差和;这样,就可以获取绝对误差和最小的两个第一匹配块,根据绝对误差和最小的两个第一匹配块的左上顶点像素,确定两个新的搜索中心点;接着以1/4像素为单位确定第二边长,根据两个新的搜索中心点和第二边长在参考帧中确定第二搜索区域,根据第二搜索区域中的每一个分数像素确定与待编码块对应的多个第二匹配块,并计算每一个第二匹配块相对待编码块的绝对误差和;这样,就能够从第一匹配块和第二匹配块中,获取绝对误差和最小的一个匹配块作为待编码块的目标匹配块。能够增加分数像素运动估计搜索的匹配点的数量,增加了搜索到全局最优点的概率,从而提高了编码效率。
附图说明
图1为一个实施例中运动估计方法的流程示意图;
图2为一个实施例中绝对误差和计算示意图;
图3为一个实施例中像素示意图;
图4为一个实施例中第二搜索区域的扫描顺序示意图;
图5为一个实施例中R00向R10扫描示意图;
图6为一个实施例中R70向R71扫描示意图;
图7为一个实施例中R71向R61扫描示意图;
图8为一个实施例中硬件编码器进的模块示意图;
图9为一个实施例中FIME和FME的算法流程示意图;
图10为一个实施例中两个无重叠的搜索区域示意图;
图11为一个实施例中最终确定的搜索区域示意图;
图12为一个实施例中两个重叠的搜索区域示意图;
图13为一个实施例中最终确定的搜索区域示意图;
图14为一个实施例中FIME与FME第一种硬件方案示意图;
图15为一个实施例中第一种硬件方案的流水线示意图;
图16为一个实施例中FIME与FME第二种硬件方案示意图;
图17为一个实施例中第二种硬件方案的流水线示意图;
图18为一个实施例中FIME与FME硬件的工作流程示意图;
图19为一个实施例中SAD计算模块的硬件示意图;
图20为一个实施例中SAD计算模块计算SAD的流程示意图;
图21为一个实施例中运动估计装置的结构框图;
图22为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1所示,提供了一种运动估计方法,本实施例以该方法应用于计算机设备进行举例说明,可以理解的是,该计算机设备具体可以是终端或服务器。其中,终端可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备、便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能医用设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。本实施例中,该方法包括以下步骤:
步骤102,在待编码帧中确定待编码块,在待编码帧对应的参考帧中确定两个搜索中心点。
其中,搜索中心点又称搜索起始点,通常视频编码的运动估计像素搜索,需要先在参考帧上确定一个搜索起始点,然后以这个搜索起始点为中心在设置的搜索区域范围内进行块匹配搜索,得到最佳运动矢量。
步骤104,以整数像素为单位确定第一边长,根据两个搜索中心点和第一边长在参考帧中确定第一搜索区域,根据第一搜索区域中的每一个整数像素确定与待编码块对应的多个第一匹配块,并计算每一个第一匹配块相对待编码块的绝对误差和。
其中,第一搜索区域中的每一个整数像素都可以称为一个参考像素,匹配块也可以称为参考块或预测块。绝对误差和通常称为SAD。得到参考像素后,以该像素为左上顶点,可以确定一个参考块,或者说匹配块,通过计算并比较当前块与匹配块之间的SAD,来得到最终的最优匹配块。如图2所示,假设当前待编码块CB的大小为MxN,RB0、RB1分别为2个候选匹配块,那么分别计算出CB与RB0、RB1之间的SAD,SAD越小,匹配块越优。SAD的计算公式如下:
Figure BDA0004108946940000061
Figure BDA0004108946940000062
可选的,第一边长可以设置为8个整数像素,那么对于每一个搜索中心点,向上、下、左、右各延伸4个整数像素,可以得到两个8×8的搜索区域,每一个搜索区域内包含64个整数像素,组合两个8×8的搜索区域得到第一搜索区域。对于第一搜索区域中的任意一个整数像素,将所选整数像素作为左上顶点,都可以确定一个与待编码块具有相同像素数量的第一匹配块,因此第一搜索区域中能够得到与整数像素数量相同的第一匹配块。
步骤106,获取绝对误差和最小的两个第一匹配块,根据绝对误差和最小的两个第一匹配块的左上顶点像素,确定两个新的搜索中心点;绝对误差和用于表示匹配块相对待编码块的预测误差大小。
可选的,获取绝对误差和最小的第一匹配块,以及绝对误差和第二小的第一匹配块,将这两个第一匹配块的左上顶点像素作为两个新的搜索中心点。
步骤108,以1/4像素为单位确定第二边长,根据两个新的搜索中心点和第二边长在参考帧中确定第二搜索区域,根据第二搜索区域中的每一个分数像素确定与待编码块对应的多个第二匹配块,并计算每一个第二匹配块相对待编码块的绝对误差和。
其中,第二搜索区域中的每一个分数像素(也就是1/4像素)都可以称为一个参考像素。整数像素是图像中实际存在的像素,而分数像素并非图像中实际存在的像素,而是虚拟像素,是利用整数像素做线性插值得到的。插值得到参考像素后,需要计算并比较SAD。像素示意图如图3所示,其中:点状背景的像素为整数像素,不需要像素插值,直接读取参考帧中的像素得到;斜条纹背景的像素为1/2精度的像素,需要像素插值得到;横条纹和竖条纹背景的像素为1/4精度的像素,需要插值得到。所谓的像素插值,其实就是对若干个相邻的像素做一个滤波,得到一个滤波后的分数像素,不同位置的分数像素,具有不同的滤波系数,如下表所示。
分数像素位置 滤波器名称 滤波器抽头系数
横条纹像素 Filter14 {-1,4,-10,58,17,-5,1,}
斜条纹像素 Filter24 {-1,4,-11,40,40,-11,4,1}
竖条纹像素 Filter34 {1,-5,17,58,-10,4,-1}
每个整数像素点对应3个2/4像素点,5个1/4像素点,8个3/4像素点,如上图中的虚线框内部的像素所示,A0,0所对应的全部分数像素的插值公式如下:
Figure BDA0004108946940000071
Figure BDA0004108946940000072
Figure BDA0004108946940000073
Figure BDA0004108946940000074
Figure BDA0004108946940000075
Figure BDA0004108946940000076
Figure BDA0004108946940000077
Figure BDA0004108946940000078
Figure BDA0004108946940000079
Figure BDA00041089469400000710
Figure BDA00041089469400000711
Figure BDA00041089469400000712
Figure BDA0004108946940000081
Figure BDA0004108946940000082
Figure BDA0004108946940000083
可选的,第二边长可以设置为8个1/4像素,那么对于每一个搜索中心点,向上、下、左、右各延伸4个1/4像素,可以得到两个8×8的搜索区域,每一个搜索区域内包含64个1/4像素,组合两个8×8的搜索区域得到第二搜索区域。对于第二搜索区域中的任意一个1/4像素,将所选1/4像素作为左上顶点,都可以确定一个与待编码块具有相同像素数量的第二匹配块,因此第二搜索区域中能够得到与1/4像素数量相同的第二匹配块。
步骤110第一匹配块和第二匹配块中,获取绝对误差和最小的一个匹配块作为待编码块的目标匹配块。
可选的,比较每一个第一匹配块和第二匹配块的SAD的大小,选择SAD最小的一个匹配块(第一匹配块或第二匹配块都可以)作为待编码块的目标匹配块。
在一个实施例中,在待编码帧对应的参考帧中确定两个搜索中心点,包括:对待编码块进行一次整数像素运动估计,得到与待编码块对应的两个初始匹配块;根据每一个初始匹配块的左上顶点像素,确定两个搜索中心点。
可选的,可以先对待编码块进行一次粗糙整数像素运动估计,选用较大的搜索区域,在较大的搜索区域中按照预设间隔选择较少数量的整数像素作为参考像素,根据少量的参考像素得到少量的匹配块,计算每个匹配块的SAD,将SAD最小的两个匹配块作为初始匹配块,将这两个初始匹配块的左上顶点像素,作为两个搜索中心点。
本实施例中,对待编码块进行一次整数像素运动估计,得到与待编码块对应的两个初始匹配块;根据每一个初始匹配块的左上顶点像素,确定两个搜索中心点。能够增加分数像素运动估计搜索的匹配点的数量,增加了搜索到全局最优点的概率,从而提高了编码效率。
在一个实施例中,根据两个搜索中心点和第一边长在参考帧中确定第一搜索区域,包括:根据第一边长分别确定每一个搜索中心点对应的上边界像素、下边界像素、左边界像素和右边界像素;第一边长包括至少一个边界长度参数;根据每一个搜索中心点对应的上边界像素、下边界像素、左边界像素和右边界像素,确定每一个搜索中心点对应的一个子搜索区域,得到两个子搜索区域;若两个子搜索区域之间不存在重合区域,将两个子搜索区域作为第一搜索区域;若两个子搜索区域之间存在重合区域,获取包含两个子搜索区域的最小矩形区域,将最小矩形区域作为第一搜索区域。
进一步的,根据第一搜索区域中的每一个整数像素确定与待编码块对应的多个第一匹配块,包括:获取待编码块的像素数量;将第一搜索区域中的每一个整数像素分别作为一个匹配块左上顶点像素,以构建得到多个第一匹配块;其中,第一匹配块的数量与像素数量相同。
可选的,第一边长可以是一个参数N,N表示N个整数像素,则每个子搜索区域就是一个N×N的矩形,包含N×N个整数像素;第一边长可以是M和N两个参数,M表示M个整数像素,N表示N个整数像素,且M和N不相等,则每个子搜索区域就是一个M×N的矩形,包含M×N个整数像素。
相应的,根据两个新的搜索中心点和第二边长在参考帧中确定第二搜索区域,包括:根据第二边长分别确定每一个新的搜索中心点对应的上边界像素、下边界像素、左边界像素和右边界像素;第二边长包括至少一个边界长度参数;根据每一个新的搜索中心点对应的上边界像素、下边界像素、左边界像素和右边界像素,确定每一个新的搜索中心点对应的一个子搜索区域,得到两个子搜索区域;若两个子搜索区域之间不存在重合区域,将两个子搜索区域作为第二搜索区域;若两个子搜索区域之间存在重合区域,获取包含两个子搜索区域的最小矩形区域,将最小矩形区域作为第二搜索区域。
进一步的,根据第二搜索区域中的每一个分数像素确定与待编码块对应的多个第二匹配块,包括:获取待编码块的像素数量;将第二搜索区域中的每一个1/4像素分别作为一个第二匹配块左上顶点像素,以构建得到多个第二匹配块;其中,第二匹配块的数量与像素数量相同。
可选的,第二边长可以是一个参数N,N表示N个1/4像素,则每个子搜索区域就是一个N×N的矩形,包含N×N个1/4像素,或者包含N×N个1/2像素;第二边长可以是M和N两个参数,M表示M个1/4像素,N表示N个1/4像素,且M和N不相等,则每个子搜索区域就是一个M×N的矩形,包含M×N个1/4像素,或者包含N×N个1/2像素。
在一种可行的实施方式中,根据第二搜索区域中的每一个分数像素确定与待编码块对应的多个第二匹配块,还包括:获取待编码块的像素数量;将第二搜索区域中的每一个1/2像素分别作为一个第二匹配块左上顶点像素,以构建得到多个第二匹配块;其中,第二匹配块的数量与像素数量相同。
可选的,第二边长可以是一个参数N,N表示N个1/2像素,则每个子搜索区域就是一个N×N的矩形,包含N×N个1/2像素;第二边长可以是M和N两个参数,M表示M个1/2像素,N表示N个1/2像素,且M和N不相等,则每个子搜索区域就是一个M×N的矩形,包含N×N个1/2像素。
本实施例中,由于增加了一个搜索中心点,能够扩大搜索区域的范围,并且将搜索区域内每一个像素都作为参考像素,增加分数像素运动估计搜索的匹配点的数量,也就增加了搜索到全局最优点的概率,从而提高了编码效率。
在一个实施例中,计算每一个第二匹配块相对待编码块的绝对误差和,包括:根据当前第二匹配块中各分数像素记录已插值数据;已插值数据包括当前第二匹配块中各分数像素的插值计算结果,分数像素包括1/2像素和1/4像素;将下一个第二匹配块中的分数像素与已插值数据中的分数像素进行对比,以将下一个第二匹配块中的分数像素区分为已插值分数像素和未插值分数像素;针对下一个第二匹配块中的已插值分数像素,从当前记录的已插值数据中获取已插值分数像素对应的插值计算结果,针对下一个第二匹配块中未插值分数像素,进行插值计算得到插值计算结果,并根据未插值分数像素的插值计算结果更新已插值数据。
可选的,由于第二搜索区域是以分数像素为单位划定的区域,第二搜索区域内包含连续的1/2像素点或1/4像素点,因此,可以采用如下方法来提高编码速度:
首先,按照行正程→行逆程→行正程→...的扫描方式来扫描第二搜索区域,以8x8的第二搜索区域为例,其参考点的扫描顺序如图4所示。
从R00向R10扫描的情况如图5所示,左图为R00参考像素对应的匹配块。扫描到R10后,点状背景的像素为可复用的部分,只需将最左边一列横条纹背景的像素丢掉,重新插值得到最右边一列竖条纹背景的像素,即可得到R10参考像素对应的匹配块。可以避免点状区域像素重复多次插值。
从R70向R71扫描的情况如图6所示,左图为R70参考像素对应的匹配块。扫描到R71后,点状区域像素为可复用的部分,只需将最上边一行横条纹区域像素丢掉,重新插值得到最下边一行竖条纹区域像素,即可得到R71参考像素对应的匹配块。可以避免点状区域重复多次插值。
从R71向R61扫描的情况如图7所示,左图为R71参考像素对应的匹配块。扫描到R61后,点状区域像素为可复用的部分,只需将最右边一列横条纹区域像素丢掉,重新插值得到最左边一列竖条纹区域像素,即可得到R61参考像素对应的匹配块。可以避免点状区域重复多次插值。
本实施例中,通过记录已经插值计算过的分数像素,并且在后续插值计算过程中直接复用已插值像素,能够避免对同一个分数像素进行多次插值计算,从而提高了编码效率,降低了硬件资源的消耗,还能提高编码器的整体性能。
在一个实施例中,获取绝对误差和最小的一个匹配块作为待编码块的目标匹配块之后,还包括:根据目标匹配块的左上顶点像素和待编码块的左上顶点像素,获取目标匹配块和待编码块之间的运动矢量,作为待编码块的运动估计结果。
其中,运动矢量又称MV,用于表征匹配块和待编码块之间的相对位移。目标匹配块也就是对待编码块进行运动估计的最优匹配块。
可选的,比较SAD是对计算出来的所有匹配块(第一匹配块和第二匹配块)的SAD进行组合和比较,得到一个SAD最小的一个最优匹配块,再根据最优匹配块的左上顶点像素和待编码块的左上顶点像素,计算最优匹配块和待编码块之间的MV,将最优匹配块和MV作为待编码块的运动估计结果。
本实施例中,根据目标匹配块的左上顶点像素和待编码块的左上顶点像素,获取目标匹配块和待编码块之间的运动矢量,作为待编码块的运动估计结果。根据最优匹配块计算得到最优匹配块和待编码块之间的运动矢量,能够提高编码效果。
在一个实施例中,一种运动估计方法,包括:
在待编码帧中确定待编码块,对待编码块进行一次整数像素运动估计,得到与待编码块对应的两个初始匹配块;根据每一个初始匹配块的左上顶点像素,确定两个搜索中心点。
以整数像素为单位确定第一边长,根据第一边长分别确定每一个搜索中心点对应的上边界像素、下边界像素、左边界像素和右边界像素;第一边长包括至少一个边界长度参数;根据每一个搜索中心点对应的上边界像素、下边界像素、左边界像素和右边界像素,确定每一个搜索中心点对应的一个子搜索区域,得到两个子搜索区域;若两个子搜索区域之间不存在重合区域,将两个子搜索区域作为第一搜索区域;若两个子搜索区域之间存在重合区域,获取包含两个子搜索区域的最小矩形区域,将最小矩形区域作为第一搜索区域。获取待编码块的像素数量;将第一搜索区域中的每一个整数像素分别作为一个匹配块左上顶点像素,以构建得到多个第一匹配块;其中,第一匹配块的数量与像素数量相同。计算每一个第一匹配块相对待编码块的绝对误差和。
获取绝对误差和最小的两个第一匹配块,根据绝对误差和最小的两个第一匹配块的左上顶点像素,确定两个新的搜索中心点;绝对误差和用于表示匹配块相对待编码块的预测误差大小。
以1/4像素为单位确定第二边长,根据第二边长分别确定每一个新的搜索中心点对应的上边界像素、下边界像素、左边界像素和右边界像素;第二边长包括至少一个边界长度参数;根据每一个新的搜索中心点对应的上边界像素、下边界像素、左边界像素和右边界像素,确定每一个新的搜索中心点对应的一个子搜索区域,得到两个子搜索区域;若两个子搜索区域之间不存在重合区域,将两个子搜索区域作为第二搜索区域;若两个子搜索区域之间存在重合区域,获取包含两个子搜索区域的最小矩形区域,将最小矩形区域作为第二搜索区域。获取待编码块的像素数量;将第二搜索区域中的每一个1/4像素分别作为一个第二匹配块左上顶点像素,以构建得到多个第二匹配块;其中,第二匹配块的数量与像素数量相同。计算每一个第二匹配块相对待编码块的绝对误差和;根据当前第二匹配块中各分数像素记录已插值数据;已插值数据包括当前第二匹配块中各分数像素的插值计算结果,分数像素包括1/2像素和1/4像素;将下一个第二匹配块中的分数像素与已插值数据中的分数像素进行对比,以将下一个第二匹配块中的分数像素区分为已插值分数像素和未插值分数像素;针对下一个第二匹配块中的已插值分数像素,从当前记录的已插值数据中获取已插值分数像素对应的插值计算结果,针对下一个第二匹配块中未插值分数像素,进行插值计算得到插值计算结果,并根据未插值分数像素的插值计算结果更新已插值数据。
从第一匹配块和第二匹配块中,获取绝对误差和最小的一个匹配块作为待编码块的目标匹配块。根据目标匹配块的左上顶点像素和待编码块的左上顶点像素,获取目标匹配块和待编码块之间的运动矢量,作为待编码块的运动估计结果。
在一个实施例中,一种运动估计方法,以应用于一种硬件编码器为例,硬件编码器包括:
第二整数像素运动估计单元,用于对待编码块进行一次整数像素运动估计,得到与待编码块对应的两个初始匹配块;根据每一个初始匹配块的左上顶点像素,确定两个搜索中心点。
第一整数像素运动估计单元,用于以整数像素为单位确定第一边长,根据第一边长分别确定每一个搜索中心点对应的上边界像素、下边界像素、左边界像素和右边界像素;第一边长包括至少一个边界长度参数;根据每一个搜索中心点对应的上边界像素、下边界像素、左边界像素和右边界像素,确定每一个搜索中心点对应的一个子搜索区域,得到两个子搜索区域;若两个子搜索区域之间不存在重合区域,将两个子搜索区域作为第一搜索区域;若两个子搜索区域之间存在重合区域,获取包含两个子搜索区域的最小矩形区域,将最小矩形区域作为第一搜索区域。获取待编码块的像素数量;将第一搜索区域中的每一个整数像素分别作为一个匹配块左上顶点像素,以构建得到多个第一匹配块;其中,第一匹配块的数量与像素数量相同。获取绝对误差和最小的两个第一匹配块,根据绝对误差和最小的两个第一匹配块的左上顶点像素,确定两个新的搜索中心点;绝对误差和用于表示匹配块相对待编码块的预测误差大小。
分数像素运动估计单元,用于以1/4像素为单位确定第二边长,根据第二边长分别确定每一个新的搜索中心点对应的上边界像素、下边界像素、左边界像素和右边界像素;第二边长包括至少一个边界长度参数;根据每一个新的搜索中心点对应的上边界像素、下边界像素、左边界像素和右边界像素,确定每一个新的搜索中心点对应的一个子搜索区域,得到两个子搜索区域;若两个子搜索区域之间不存在重合区域,将两个子搜索区域作为第二搜索区域;若两个子搜索区域之间存在重合区域,获取包含两个子搜索区域的最小矩形区域,将最小矩形区域作为第二搜索区域。获取待编码块的像素数量;将第二搜索区域中的每一个1/4像素分别作为一个第二匹配块左上顶点像素,以构建得到多个第二匹配块;其中,第二匹配块的数量与像素数量相同。
绝对误差和计算单元,用于计算每一个第一匹配块相对待编码块的绝对误差和;还用于计算每一个第二匹配块相对待编码块的绝对误差和;根据当前第二匹配块中各分数像素记录已插值数据;已插值数据包括当前第二匹配块中各分数像素的插值计算结果,分数像素包括1/2像素和1/4像素;将下一个第二匹配块中的分数像素与已插值数据中的分数像素进行对比,以将下一个第二匹配块中的分数像素区分为已插值分数像素和未插值分数像素;针对下一个第二匹配块中的已插值分数像素,从当前记录的已插值数据中获取已插值分数像素对应的插值计算结果,针对下一个第二匹配块中未插值分数像素,进行插值计算得到插值计算结果,并根据未插值分数像素的插值计算结果更新已插值数据。绝对误差和用于表示匹配块相对待编码块的预测误差大小;
绝对误差和比较单元,用于从第一匹配块和第二匹配块中,获取绝对误差和最小的一个匹配块作为待编码块的目标匹配块。根据目标匹配块的左上顶点像素和待编码块的左上顶点像素,获取目标匹配块和待编码块之间的运动矢量,作为待编码块的运动估计结果。
在一个可行的实施方式中,一种硬件编码器进行运动估计的模块示意图如图8所示。首先从内存中读取原始像素以及参考像素。对原始像素分别进行帧内预测、帧间预测,帧间预测又包含粗糙整数像素运动估计单元(CIME,Coarse Integer MotionEstimation)、精细整数像素运动估计单元(FIME,Fine Integer Motion Estimation)、分数像素运动估计单元(FME,Fraction Motion Estimation)。然后对帧内预测和帧间预测的结果进行判决,得到最终的运动估计结果。最后熵编码模块对最终的运动估计结果进行编码得到最终的编码码流。FIME的硬件结构与FME的硬件结构是统一的,而CIME则不作限定。其中,CIME相当于第二整数像素运动估计单元,FIME相当于第一整数像素运动估计单元,FME相当于分数像素运动估计单元。FIME和FME的算法流程基本相同,均如图9所示。
具体的,FIME或FME确定搜索范围的工作流程如下:
做完CIME后,会为某个编码单元(通常简称CU)的FIME确定2个搜索中心点。为了达到FME与FIME统一硬件结构的目的,做完FIME后,采取相同的方法为FME确定2个搜索中心点。不论是FIME还是FME,将第一个搜索中心点记为C0,第二个搜索中心点记为C1,另外,为了便于硬件编码器按照一定的alignment读取像素,这里C0、C1均algin到4个整数像素点。确定好两个搜索中心点后,需要确定搜索区域。对于C0,以该点为中心,向上下左右分别扩展4个像素,得到一个正方形的搜索区域。对于C1,做同样的操作,得到该中心点对应的搜索区域。为了统一FME与FIME的硬件结构,这里FME与FIME的C0、C1都是向上下左右分别扩展4个像素,唯一的区别在于:FIME向上下左右分别扩展4个整数以整数像素为单位,FME向上下左右分别扩展的4个像素以1/4像素为单位。
确定两个搜索区域后,这两个搜索区域的位置关系有两种可能,一种是二者没有重叠。
如图10所示为没有重叠的情况,横条纹区域为C0所确定的搜索区域,竖条纹区域为C1所确定的搜索区域,二者没有任何重叠区域。这种情况下,将2个搜索区域作为独立的搜索区域,并将这种搜索模式称之为8x8搜索模式。
对于FIME,每个8x8搜索区域包含了64个整数像素,如图11所示,所有点状背景像素所示;对于FME,每个8x8搜索区域同样包含了64个像素,如下图中的黑色粗线框所示,这些像素中包含4个整数像素,12个1/2像素,以及48个1/4像素。把两个8x8区域合起来看,相当于FIME共搜索了128个整数像素点;FME共搜素了8个整数像素点、24个1/2像素点,以及96个1/4像素点。
如图12所示为有重叠的情况,横条纹区域为C0所确定的搜索区域,竖条纹区域为C1所确定的搜索区域,点状区域为二者的重叠区域。在这种情况下,如果依然将两个搜索区域作为独立的搜索区域,那么点状区域会搜索两遍,不仅浪费了硬件的算力,对编码效率也没有任何提升。
为了解决上述问题,将两个8x8像素的搜索区域合并成一个12x12像素的搜索区域,并将这种搜索模式称之为12x12搜索模式,这种模式可以避免重复搜索的问题。
对于FIME,12x12搜索区域包含了144个整数像素,如下图中所有的点状背景的像素所示;对于FME,该模式同样包含了144个像素,如图13中的黑色粗线框所示,这些像素中包含9个整数像素,27个1/2像素,以及108个1/4像素。
确定好搜索范围后,需要对搜索范围内的参考像素计算SAD,由于FIME和FME具有相似的结构和算法,二者主要有如下2个区别:FIME的参考像素搜索步长1像素,或者说相邻2个参考像素之间的距离为1个像素;FME的参考像素搜索步长为1/4像素,或者说相邻2个参考像素之间的距离为1/4个像素;FIME不包含分数参考像素,而FME包含分数参考像素,因此需要做分数像素插值。
鉴于上述区别,为了达到二者可以共享相同硬件结构的目的,增加一个IsFMEflag,用来区分FIME和FME:IsFME=0表示当前进行的ME是FIME;IsFME=1表示当前进行的ME是FME。
由于FIME与FME具有相似的硬件结构,因此有2种实现方案:
第一种实现方案会花费更多的硬件资源,同时会带来更快的编码速度,即FIME与FME的硬件资源是分开的,其硬件示意图如图14所示。其中,FIME/FME分别向SAD计算模块发送SAD计算请求,即SAD Request。SAD计算模块计算出来的SAD存入SAD SRAM。SAD比较模块接受FIME/FME发过来的候选MV以及预测模式信息,同时从SAD SRAM中读取对应的SAD值,并比较SAD值的大小,最终得到最优的MV以及预测模式。对应的流水线示意图如图15所示。由于FIME与FME的硬件资源是分开的,因此二者可以做到CU level的并行编码。
另一种实现方案会花费更少的硬件资源,但是编码速度也会受到影响,即FIME与FME的共享相同的硬件资源,其硬件示意图如图16所示。图中各个模块的作用与第一种实现方案相同,此处不再赘述。其流水线示意图如图17所示。由于FIME与FME的硬件资源是共享的,同一个CU的FIME与FME做完之后,才能开始下一个CU的FIME、FME。
上述两种硬件结构,其工作流程均如图18所示。首先从处理顺序上看,先做某个CU的FIME,再做该CU的FME。确定好搜索区域和搜索mode后,根据搜索mode来决定要发送几次SAD计算请求给SAD计算模块。如果是8x8 MV mode,则发送2次SAD request给SAD计算模块。如果是12x12MV mode,则发送1次SAD request给SAD计算模块。SAD request中包含IsFMEflag。如果IsFME=0,则SAD计算模块直接计算SAD。如果IsFME=1,则SAD计算模块先进行像素插值,再计算SAD。由于SAD计算与SAD比较的处理速度有差异,因此,SAD计算模块的结算结果先存入SAD SRAM。SAD比较模块则从SAD SRAM中读取SAD值,进行比较,从而得到最终的最优匹配块和MV。
具体的,SAD计算模块的硬件示意图19所示。其中:参考像素cache用来存储若干个连续CTU的参考像素,这些CTU内部的任何一个CU的参考像素一定可以在该cache中拿到。原始像素SRAM用来存储若干个连续CTU的原始像素。像素插值模块用来对参考像素进行插值,得到对应的分数像素,只有当IsFME flag=1时,才需要进行插值。参考像素SRAM用来缓存当前CU的参考像素。SAD计算模块用来计算参考像素与原始像素之间的差值,并求和,得到CU某个MV对应的SAD值。
如图20所示,具体计算SAD的过程如下:
(1)首先将如下M列参考像素加载到参考像素SRAM(如果R是分数像素,则要先经过插值运算之后,再存入参考像素SRAM)
R0,0~R0,M-1
R1,0~R1,M-1
……
RM-1,0~RM-1,M-1
那么R0,0点对应的SAD值
Figure BDA0004108946940000151
(2)将一列参考像素RM,0~RM,M-1加载到参考像素SRAM,那么参考点R1,0点对应的SAD值
Figure BDA0004108946940000152
……
(3)将一列参考像素RM+6,0~RM+6,M-1加载到参考像素SRAM,那么参考点R7,0点对应的SAD值
Figure BDA0004108946940000153
(4)将一行参考像素R7,M~RM+6,M加载到参考像素SRAM,那么参考点R7,1点对应的SAD值
Figure BDA0004108946940000154
(5)将一列参考像素R6,1~R6,M加载到参考像素SRAM,那么参考点R7,1点对应的SAD值
Figure BDA0004108946940000155
……
(6)将一列参考像素R0,1~R0,M加载到参考像素SRAM,那么参考点R0,1点对应的SAD值
Figure BDA0004108946940000156
(7)将一行参考像素R0,M+1~RM-1,M+1加载到参考像素SRAM,那么参考点R0,2点对应的SAD值
Figure BDA0004108946940000157
(8)重复上述规则,直到计算出所有匹配点的SAD值。
本实施例中,由于分数像素所搜索的点数大大增加,因此编码效率提升明显。如果对编码速度不敏感,FIME和FME可复用相同的硬件资源,节省硬件资源。如果对编速度敏感,FIME和FME可以将相似的硬件资源例化2份,从而节省硬件的设计时间。本实施例对H264和HEVC编码器均适用,只是不同的视频编码标准在细节处理上有所不同。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的运动估计方法的运动估计装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个运动估计装置实施例中的具体限定可以参见上文中对于运动估计方法的限定,在此不再赘述。
在一个实施例中,如图21所示,提供了一种运动估计装置2100,包括:第一定位模块2101、第一估计模块2102、第二定位模块2103、第二估计模块2104和比较匹配模块2105,其中:
第一定位模块2101,用于在待编码帧中确定待编码块,在待编码帧对应的参考帧中确定两个搜索中心点;
第一估计模块2102,用于以整数像素为单位确定第一边长,根据两个搜索中心点和第一边长在参考帧中确定第一搜索区域,根据第一搜索区域中的每一个整数像素确定与待编码块对应的多个第一匹配块,并计算每一个第一匹配块相对待编码块的绝对误差和;
第二定位模块2103,用于获取绝对误差和最小的两个第一匹配块,根据绝对误差和最小的两个第一匹配块的左上顶点像素,确定两个新的搜索中心点;绝对误差和用于表示匹配块相对待编码块的预测误差大小;
第二估计模块2104,用于以1/4像素为单位确定第二边长,根据两个新的搜索中心点和第二边长在参考帧中确定第二搜索区域,根据第二搜索区域中的每一个分数像素确定与待编码块对应的多个第二匹配块,并计算每一个第二匹配块相对待编码块的绝对误差和;
比较匹配模块2105,用于从第一匹配块和第二匹配块中,获取绝对误差和最小的一个匹配块作为待编码块的目标匹配块。
在一个实施例中,第一定位模块2101还用于对待编码块进行一次整数像素运动估计,得到与待编码块对应的两个初始匹配块;根据每一个初始匹配块的左上顶点像素,确定两个搜索中心点。
在一个实施例中,第一估计模块2102还用于根据第一边长分别确定每一个搜索中心点对应的上边界像素、下边界像素、左边界像素和右边界像素;第一边长包括至少一个边界长度参数;根据每一个搜索中心点对应的上边界像素、下边界像素、左边界像素和右边界像素,确定每一个搜索中心点对应的一个子搜索区域,得到两个子搜索区域;根据两个子搜索区域的重合程度,确定第一搜索区域。
在一个实施例中,第一估计模块2102还用于若两个子搜索区域之间不存在重合区域,将两个子搜索区域作为第一搜索区域;若两个子搜索区域之间存在重合区域,获取包含两个子搜索区域的最小矩形区域,将最小矩形区域作为第一搜索区域。
在一个实施例中,第一估计模块2102还用于获取待编码块的像素数量;将第一搜索区域中的每一个整数像素分别作为一个匹配块左上顶点像素,以构建得到多个第一匹配块;其中,第一匹配块的数量与像素数量相同。
在一个实施例中,第二估计模块2104还用于根据当前第二匹配块中各分数像素记录已插值数据;已插值数据包括当前第二匹配块中各分数像素的插值计算结果,分数像素包括1/2像素和1/4像素;将下一个第二匹配块中的分数像素与已插值数据中的分数像素进行对比,以将下一个第二匹配块中的分数像素区分为已插值分数像素和未插值分数像素;针对下一个第二匹配块中的已插值分数像素,从当前记录的已插值数据中获取已插值分数像素对应的插值计算结果,针对下一个第二匹配块中未插值分数像素,进行插值计算得到插值计算结果,并根据未插值分数像素的插值计算结果更新已插值数据。
在一个实施例中,比较匹配模块2105还用于根据目标匹配块的左上顶点像素和待编码块的左上顶点像素,获取目标匹配块和待编码块之间的运动矢量,作为待编码块的运动估计结果。
上述运动估计装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图22所示。该计算机设备包括处理器、存储器、输入/输出接口、通信接口、显示单元和输入装置。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口、显示单元和输入装置通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种运动估计方法。该计算机设备的显示单元用于形成视觉可见的画面,可以是显示屏、投影装置或虚拟现实成像装置。显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图22中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

Claims (13)

1.一种运动估计方法,其特征在于,所述方法包括:
在待编码帧中确定待编码块,在所述待编码帧对应的参考帧中确定两个搜索中心点;
以整数像素为单位确定第一边长,根据所述两个搜索中心点和所述第一边长在所述参考帧中确定第一搜索区域,根据所述第一搜索区域中的每一个整数像素确定与所述待编码块对应的多个第一匹配块,并计算每一个第一匹配块相对所述待编码块的绝对误差和;
获取绝对误差和最小的两个第一匹配块,根据绝对误差和最小的两个第一匹配块的左上顶点像素,确定两个新的搜索中心点;所述绝对误差和用于表示匹配块相对待编码块的预测误差大小;
以1/4像素为单位确定第二边长,根据所述两个新的搜索中心点和所述第二边长在所述参考帧中确定第二搜索区域,根据所述第二搜索区域中的每一个分数像素确定与所述待编码块对应的多个第二匹配块,并计算每一个第二匹配块相对所述待编码块的绝对误差和;
从所述第一匹配块和所述第二匹配块中,获取绝对误差和最小的一个匹配块作为所述待编码块的目标匹配块。
2.根据权利要求1所述的方法,其特征在于,所述在所述待编码帧对应的参考帧中确定两个搜索中心点,包括:
对所述待编码块进行一次整数像素运动估计,得到与所述待编码块对应的两个初始匹配块;
根据每一个初始匹配块的左上顶点像素,确定两个搜索中心点。
3.根据权利要求1所述的方法,其特征在于,所述根据所述两个搜索中心点和所述第一边长在所述参考帧中确定第一搜索区域,包括:
根据所述第一边长分别确定每一个搜索中心点对应的上边界像素、下边界像素、左边界像素和右边界像素;所述第一边长包括至少一个边界长度参数;
根据每一个搜索中心点对应的上边界像素、下边界像素、左边界像素和右边界像素,确定每一个搜索中心点对应的一个子搜索区域,得到两个子搜索区域;
根据两个子搜索区域的重合程度,确定所述第一搜索区域。
4.根据权利要求3所述的方法,其特征在于,所述根据两个子搜索区域的重合程度,确定所述第一搜索区域,包括:
若两个子搜索区域之间不存在重合区域,将两个子搜索区域作为所述第一搜索区域;
若两个子搜索区域之间存在重合区域,获取包含两个子搜索区域的最小矩形区域,将所述最小矩形区域作为所述第一搜索区域。
5.根据权利要求1所述的方法,其特征在于,所述根据所述第一搜索区域中的每一个整数像素确定与所述待编码块对应的多个第一匹配块,包括:
获取所述待编码块的像素数量;
将所述第一搜索区域中的每一个整数像素分别作为一个匹配块左上顶点像素,以构建得到多个第一匹配块;其中,第一匹配块的数量与所述像素数量相同。
6.根据权利要求1所述的方法,其特征在于,所述计算每一个第二匹配块相对所述待编码块的绝对误差和,包括:
根据当前第二匹配块中各分数像素记录已插值数据;所述已插值数据包括当前第二匹配块中各分数像素的插值计算结果,所述分数像素包括1/2像素和1/4像素;
将下一个第二匹配块中的分数像素与所述已插值数据中的分数像素进行对比,以将下一个第二匹配块中的分数像素区分为已插值分数像素和未插值分数像素;
针对下一个第二匹配块中的已插值分数像素,从当前记录的已插值数据中获取所述已插值分数像素对应的插值计算结果,针对下一个第二匹配块中未插值分数像素,进行插值计算得到插值计算结果,并根据所述未插值分数像素的插值计算结果更新所述已插值数据。
7.根据权利要求1所述的方法,其特征在于,所述获取绝对误差和最小的一个匹配块作为所述待编码块的目标匹配块之后,还包括:
根据所述目标匹配块的左上顶点像素和所述待编码块的左上顶点像素,获取所述目标匹配块和所述待编码块之间的运动矢量,作为所述待编码块的运动估计结果。
8.一种硬件编码器,其特征在于,所述硬件编码器包括:
第一整数像素运动估计单元,用于以整数像素为单位确定第一边长,根据所述两个搜索中心点和所述第一边长在所述参考帧中确定第一搜索区域,根据所述第一搜索区域中的每一个整数像素确定与所述待编码块对应的多个第一匹配块;获取绝对误差和最小的两个第一匹配块,根据绝对误差和最小的两个第一匹配块的左上顶点像素,确定两个新的搜索中心点;
分数像素运动估计单元,用于以1/4像素为单位确定第二边长,根据所述两个新的搜索中心点和所述第二边长在所述参考帧中确定第二搜索区域,根据所述第二搜索区域中的每一个分数像素确定与所述待编码块对应的多个第二匹配块;
绝对误差和计算单元,用于计算每一个第一匹配块相对所述待编码块的绝对误差和,以及计算每一个第二匹配块相对所述待编码块的绝对误差和;所述绝对误差和用于表示匹配块相对待编码块的预测误差大小;
绝对误差和比较单元,用于从所述第一匹配块和所述第二匹配块中,获取绝对误差和最小的一个匹配块作为所述待编码块的目标匹配块。
9.根据权利要求8所述的硬件编码器,其特征在于,所述硬件编码器还包括:
第二整数像素运动估计单元,用于对所述待编码块进行一次整数像素运动估计,得到与所述待编码块对应的两个初始匹配块;根据每一个初始匹配块的左上顶点像素,确定两个搜索中心点。
10.一种运动估计装置,其特征在于,所述装置包括:
第一定位模块,用于在待编码帧中确定待编码块,在所述待编码帧对应的参考帧中确定两个搜索中心点;
第一估计模块,用于以整数像素为单位确定第一边长,根据所述两个搜索中心点和所述第一边长在所述参考帧中确定第一搜索区域,根据所述第一搜索区域中的每一个整数像素确定与所述待编码块对应的多个第一匹配块,并计算每一个第一匹配块相对所述待编码块的绝对误差和;
第二定位模块,用于获取绝对误差和最小的两个第一匹配块,根据绝对误差和最小的两个第一匹配块的左上顶点像素,确定两个新的搜索中心点;所述绝对误差和用于表示匹配块相对待编码块的预测误差大小;
第二估计模块,用于以1/4像素为单位确定第二边长,根据所述两个新的搜索中心点和所述第二边长在所述参考帧中确定第二搜索区域,根据所述第二搜索区域中的每一个分数像素确定与所述待编码块对应的多个第二匹配块,并计算每一个第二匹配块相对所述待编码块的绝对误差和;
比较匹配模块,用于从所述第一匹配块和所述第二匹配块中,获取绝对误差和最小的一个匹配块作为所述待编码块的目标匹配块。
11.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
13.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
CN202310200462.7A 2023-03-03 2023-03-03 运动估计方法、装置、计算机设备和硬件编码器 Pending CN116208775A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310200462.7A CN116208775A (zh) 2023-03-03 2023-03-03 运动估计方法、装置、计算机设备和硬件编码器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310200462.7A CN116208775A (zh) 2023-03-03 2023-03-03 运动估计方法、装置、计算机设备和硬件编码器

Publications (1)

Publication Number Publication Date
CN116208775A true CN116208775A (zh) 2023-06-02

Family

ID=86514468

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310200462.7A Pending CN116208775A (zh) 2023-03-03 2023-03-03 运动估计方法、装置、计算机设备和硬件编码器

Country Status (1)

Country Link
CN (1) CN116208775A (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020172287A1 (en) * 2001-05-07 2002-11-21 Lg Electronics Inc. Motion vector searching method using plural search areas
CN101299818A (zh) * 2008-06-04 2008-11-05 浙江大学 基于整像素搜索结果的n级亚像素搜索方法及其装置
CN109660799A (zh) * 2017-10-12 2019-04-19 北京金山云网络技术有限公司 视频编码中的运动估计方法、装置、电子设备及存储介质
CN110557642A (zh) * 2018-06-04 2019-12-10 华为技术有限公司 一种视频帧编码运动搜索方法及图像编码器
CN112514392A (zh) * 2020-02-18 2021-03-16 深圳市大疆创新科技有限公司 视频编码的方法与装置
CN113454997A (zh) * 2020-09-23 2021-09-28 深圳市大疆创新科技有限公司 视频编码装置、方法、计算机存储介质和可移动平台
CN114449294A (zh) * 2022-02-15 2022-05-06 深圳市爱协生科技有限公司 运动估计方法、装置、设备、存储介质和计算机程序产品
CN114501022A (zh) * 2020-10-23 2022-05-13 腾讯科技(深圳)有限公司 一种数据处理方法、装置、计算机设备及存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020172287A1 (en) * 2001-05-07 2002-11-21 Lg Electronics Inc. Motion vector searching method using plural search areas
CN101299818A (zh) * 2008-06-04 2008-11-05 浙江大学 基于整像素搜索结果的n级亚像素搜索方法及其装置
CN109660799A (zh) * 2017-10-12 2019-04-19 北京金山云网络技术有限公司 视频编码中的运动估计方法、装置、电子设备及存储介质
CN110557642A (zh) * 2018-06-04 2019-12-10 华为技术有限公司 一种视频帧编码运动搜索方法及图像编码器
CN112514392A (zh) * 2020-02-18 2021-03-16 深圳市大疆创新科技有限公司 视频编码的方法与装置
CN113454997A (zh) * 2020-09-23 2021-09-28 深圳市大疆创新科技有限公司 视频编码装置、方法、计算机存储介质和可移动平台
CN114501022A (zh) * 2020-10-23 2022-05-13 腾讯科技(深圳)有限公司 一种数据处理方法、装置、计算机设备及存储介质
CN114449294A (zh) * 2022-02-15 2022-05-06 深圳市爱协生科技有限公司 运动估计方法、装置、设备、存储介质和计算机程序产品

Similar Documents

Publication Publication Date Title
US10771809B2 (en) Picture prediction method and picture prediction apparatus
CN110557631B (zh) 图像预测方法和相关设备
BR122020015442B1 (pt) Método realizado por um aparelho de codificação de vídeo
US9118927B2 (en) Sub-pixel interpolation and its application in motion compensated encoding of a video signal
JP2007142521A (ja) 動きベクトル算出装置および動きベクトル算出方法
JP4793070B2 (ja) 動きベクトル探索方法及び装置
US9706220B2 (en) Video encoding method and decoding method and apparatuses
KR100580194B1 (ko) 비트 정밀도를 낮춘 부화소 움직임 추정방법 및 장치
JP5938935B2 (ja) 動画像符号化装置及び動画像符号化方法
CN116208775A (zh) 运动估计方法、装置、计算机设备和硬件编码器
US6380987B1 (en) Motion vector detection circuit enabling high-speed search of motion vector
CN114449294A (zh) 运动估计方法、装置、设备、存储介质和计算机程序产品
US20230239461A1 (en) Inter coding for adaptive resolution video coding
CN116156174B (zh) 数据编码处理方法、装置、计算机设备和存储介质
CN114666600B (zh) 基于不规则模板的数据编码方法、装置、电子设备及介质
CN116132688B (zh) 像素补偿数据编码方法、解码方法、装置和计算机设备
CN112055207B (zh) 时域运动矢量预测方法、设备及存储介质
CN116527908A (zh) 运动场估计方法、装置、计算机设备和存储介质
CN115802039A (zh) 一种帧间编码方法、装置、电子设备及计算机可读介质
CN116320443A (zh) 视频图像处理方法、装置、计算机设备和存储介质
KR20170134487A (ko) 효율적인 저-복잡도 비디오 압축
CN117812269A (zh) 基于整像素精度搜索的仿射运动估计方法、装置及介质
CN115412727A (zh) 编码方法、解码方法及其装置
CN113489994A (zh) 一种运动估计方法、装置、电子设备及介质
CN117714684A (zh) 帧内预测模式选取方法、装置、计算机设备和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination