首页 / 专利库 / 视听技术与设备 / 块匹配运动估计 / 一种3D-HEVC深度图运动估计并行实现方法及结构

一种3D-HEVC深度图运动估计并行实现方法及结构

阅读:311发布:2020-05-12

专利汇可以提供一种3D-HEVC深度图运动估计并行实现方法及结构专利检索,专利查询,专利分析的服务。并且本 发明 提供一种3D-HEVC 深度图 运动估计 并行实现方法及结构。本发明方法基于邻接互联3×4二维处理元阵列构建用于深度图运动估计的并行结构,包括:S1、读取深度图原始 像素 值和参考像素值;S2、在并行结构中依据原始像素值和 边缘检测 算子并行进行边缘检测,确定每个SAD目标 块 为平坦区域或边缘区域;S3、在并行结构中依据每个SAD目标块为平坦区域或边缘区域,确定每个SAD目标块的运动估计搜索 算法 ,并根据运动估计搜索算法、原始像素值和参考像素值,并行地进行 块匹配 操作,获得每个SAD目标块的 运动矢量 。降低深度图编码复杂度和减少深度图运动估计的执行时间。本发明结构可以实现两种搜索算法的灵活切换。,下面是一种3D-HEVC深度图运动估计并行实现方法及结构专利的具体信息内容。

1.一种3D-HEVC深度图运动估计并行实现方法,其特征在于,基于邻接互联的3×4二维处理元阵列构建用于深度图运动估计的并行结构,包括以下步骤:
S1、基于获取的视频图像,读取深度图的原始像素值和参考像素值;
S2、在所述并行结构的所述处理元中依据原始像素值和边缘检测算子并行地进行边缘检测,确定每个SAD目标为平坦区域或边缘区域;所述SAD目标块由所述原始像素值划分获得;
S3、在所述并行结构的所述处理元中依据每个SAD目标块为平坦区域或边缘区域,确定每个SAD目标块的运动估计搜索算法,并根据所述运动估计搜索算法、所述原始像素值和所述参考像素值,并行地进行块匹配操作,获得每个SAD目标块的运动矢量
2.根据权利要求1所述的方法,其特征在于,所述读取深度图的原始像素值和参考像素值之前,还包括:
将视频的测试序列转换成所述阵列能识别的二进制数据,并存储在数据输入存储DIM中,作为原始像素值;
根据所述视频中的前一图像进行处理,并存储在数据输出存储DOM中,作为参考像素值。
3.根据权利要求2所述的方法,其特征在于,所述读取深度图的原始像素值和参考像素值,包括:
通过所述二维处理元阵列中第一行第一列的处理元PE00访问所述DIM读取相应的原始像素值;
通过所述二维处理元阵列中第二行第二列的处理元PE11访问所述DOM读取相应的参考像素值;通过所述二维处理元阵列中第二行第三列的处理元PE12访问所述DOM读取相应的参考像素值;通过所述二维处理元阵列中第三行第二列的处理元PE21访问所述DOM读取相应的参考像素值;通过所述二维处理元阵列中第三行第三列的处理元PE22访问所述DOM读取相应的参考像素值。
4.根据权利要求3所述的方法,其特征在于,在步骤S1之后步骤S2之前,包括:
处理元PE00将所述原始像素值下发到处理元PE01,PE02,PE03中;
处理元PE00将所述原始像素值下发到处理元PE11,PE12,PE21,PE22中。
5.根据权利要求4所述的方法,其特征在于,所述确定每个SAD目标块为平坦区域或边缘区域,包括:
将每个SAD目标块的边缘检测结果存储到所述二维处理元阵列中第二行第四列的处理元PE13中;
处理元PE13根据每个SAD目标块的边缘检测结果与预定阈值,确定每个SAD目标块为平坦区域或边缘区域,并将所述SAD目标块为平坦区域或边缘区域的结果下发到处理元PE11,PE12,PE21,PE22中。
6.根据权利要求1所述的方法,其特征在于,步骤S3包括:
若SAD目标块为平坦区域,确定SAD目标块的运动估计搜索算法为快速运动估计搜索算法,并根据快速运动估计搜索算法、原始像素值和参考像素值,进行块匹配操作,获得SAD目标块的运动矢量;
若SAD目标块为边缘区域,确定SAD目标块的运动估计搜索算法为全搜索算法,并根据全搜索算法、原始像素值和参考像素值,进行块匹配操作,获得SAD目标块的运动矢量。
7.根据权利要求6所述的方法,其特征在于,所述快速运动估计搜索算法为三步搜索算法。
8.根据权利要求7所述的方法,其特征在于,根据三步搜索算法、原始像素值和参考像素值,进行块匹配操作,获得SAD目标块的运动矢量,包括:
以SAD目标块的搜索窗中心点为第一中心搜索点,根据预先设定的第一步幅,计算所述第一中心搜索点及其周围8个位置分别为中心点的参考块的SAD值,选取SAD值最小的参考块的中心点作为第二中心搜索点;
根据预先设定的第二步幅,计算所述第二中心搜索点及其周围8个位置分别为中心点的参考块的SAD值,选取SAD值最小的参考块的中心点作为第三中心搜索点;
根据预先设定的第三步幅,计算所述第三中心搜索点及其周围8个位置分别为中心点的参考块的SAD值,获得SAD值最小的参考块对应的运动矢量。
9.根据权利要求6所述的方法,其特征在于,根据全搜索算法、原始像素值和参考像素值,进行块匹配操作,获得SAD目标块的运动矢量,包括:
依据原始像素值和参考像素值,计算SAD目标块的搜索窗内所有参考块的SAD值,获得SAD值最小的参考块对应的运动矢量。
10.一种3D-HEVC深度图运动估计并行实现结构,其特征在于,所述结构基于指令下发机制,包括
阵列处理模块,用于基于邻接互联的3×4二维处理元阵列构建用于深度图运动估计的并行结构;
指令存储模块,用于存储执行全搜索的指令和执行快速搜索的指令;
数据反馈模块,用于依据每个SAD目标块的边缘检测结果确定每个SAD目标块的运动估计搜索算法;
指令下发模块,用于根据数据反馈模块确定的运动估计搜索算法,从所述指令存储模块中将对应的搜索算法指令下发到阵列处理模块中处理元的指令存储,用于进行块匹配操作,获得每个SAD目标块的运动矢量。

说明书全文

一种3D-HEVC深度图运动估计并行实现方法及结构

技术领域

[0001] 本发明涉及数字视频编解码技术领域,尤其涉及一种三维高效视频编码深度图运动估计并行实现方法及结构。

背景技术

[0002] 运动估计是视频编码和视频处理中广泛使用的技术。运动估计的基本思想是由于活动图像邻近中的景物存在一定的相关性,因此可以将图像序列的每一帧分成互不重叠的,并且认为块中所有像素的位移量都相同。然后设法搜出每一个块在邻近帧中的位置,并且得出两者在空间位置的相对偏移量,得到的相对偏移量就是通常所说的运动矢量,得到运动矢量的过程就被称为运动估计。
[0003] 随着三维编码设备市场的不断发展,近年来提出并研究了新的三维编码标准。三维高效视频编码(3D-HEVC)基于著名的高效视频编码(HEVC),是目前最先进的编解码标准。3D-HEVC标准使用2D-HEVC算法来编码3D视频,深度图是由大面积的平坦区域和少部分的边缘区域构成的,而2D-HEVC的算法是针对纹理属性,没有挖掘深度图的特征,导致了编码复杂度和编码时间的增加。同时,2D-HEVC中的运动估计是针对纹理图编码开发的,在3D-HEVC的深度图运动估计中依旧沿用适合纹理图的算法,会增加深度图编码复杂度和编码时间。
[0004] 在3D-HEVC的标准实现代码HTM中,现有的深度图运动估计采用的搜索算法为TZSearch算法,复杂度高、效率低。对深度图的任何一个部分都采用TZSearch算法,导致深度图运动估计编码时间的增加。
[0005] 因此,亟需一种三维高效视频编码深度图运动估计并行实现方法及结构。

发明内容

[0006] (一)要解决的技术问题
[0007] 为了解决现有技术的上述问题,本发明提供一种3D-HEVC深度图运动估计并行实现方法,降低深度图编码复杂度和减少深度图运动估计的执行时间。
[0008] 还提供一种3D-HEVC深度图运动估计并行实现结构,可以实现两种搜索算法的灵活切换。
[0009] (二)技术方案
[0010] 为了达到上述目的,本发明采用的主要技术方案包括:
[0011] 一种3D-HEVC深度图运动估计并行实现方法,基于邻接互联的3×4二维处理元阵列构建用于深度图运动估计的并行结构,包括以下步骤:
[0012] S1、基于获取的视频图像,读取深度图的原始像素值和参考像素值。
[0013] S2、在并行结构的处理元中依据原始像素值和边缘检测算子并行地进行边缘检测,确定每个SAD目标块为平坦区域或边缘区域;SAD目标块由原始像素值划分获得。
[0014] S3、在并行结构的处理元中依据每个SAD目标块为平坦区域或边缘区域,确定每个SAD目标块的运动估计搜索算法,并根据运动估计搜索算法、原始像素值和参考像素值,并行地进行块匹配操作,获得每个SAD目标块的运动矢量。
[0015] 作为本发明方法的一种改进,读取深度图的原始像素值和参考像素值之前,还包括:将视频的测试序列转换成所述阵列能识别的二进制数据,并存储在数据输入存储DIM中,作为原始像素值;根据视频中的前一帧图像进行处理,并存储在数据输出存储DOM中,作为参考像素值。
[0016] 作为本发明方法的一种改进,读取深度图的原始像素值和参考像素值,包括:通过二维处理元阵列中第一行第一列的处理元PE00访问DIM读取相应的原始像素值;通过二维处理元阵列中第二行第二列的处理元PE11访问DOM读取相应的参考像素值;通过二维处理元阵列中第二行第三列的处理元PE12访问DOM读取相应的参考像素值;通过二维处理元阵列中第三行第二列的处理元PE21访问DOM读取相应的参考像素值;通过二维处理元阵列中第三行第三列的处理元PE22访问DOM读取相应的参考像素值。
[0017] 作为本发明方法的一种改进,在步骤S1之后步骤S2之前,包括:处理元PE00将原始像素值下发到处理元PE01,PE02,PE03中;处理元PE00将原始像素值下发到处理元PE11,PE12,PE21,PE22中。
[0018] 作为本发明方法的一种改进,确定每个SAD目标块为平坦区域或边缘区域,包括:将每个SAD目标块的边缘检测结果存储到二维处理元阵列中第二行第四列的处理元PE13中;处理元PE13根据每个SAD目标块的边缘检测结果与预定阈值,确定每个SAD目标块为平坦区域或边缘区域,并将所述SAD目标块为平坦区域或边缘区域的结果下发到处理元PE11,PE12,PE21,PE22中。
[0019] 作为本发明方法的一种改进,步骤S3包括:若SAD目标块为平坦区域,确定SAD目标块的运动估计搜索算法为快速运动估计搜索算法,并根据快速运动估计搜索算法、原始像素值和参考像素值,进行块匹配操作,获得SAD目标块的运动矢量;若SAD目标块为边缘区域,确定SAD目标块的运动估计搜索算法为全搜索算法,并根据全搜索算法、原始像素值和参考像素值,进行块匹配操作,获得SAD目标块的运动矢量。
[0020] 作为本发明方法的一种改进,快速运动估计搜索算法为三步搜索算法。
[0021] 作为本发明方法的一种改进,根据三步搜索算法和参考像素值,进行块匹配操作,获得SAD目标块的运动矢量,包括:
[0022] 以SAD目标块的搜索窗中心点为第一中心搜索点,根据预先设定的第一步幅,计算第一中心搜索点及其周围8个位置分别为中心点的参考块的SAD值,选取SAD值最小的参考块的中心点作为第二中心搜索点;根据预先设定的第二步幅,计算第二中心搜索点及其周围8个位置分别为中心点的参考块的SAD值,选取SAD值最小的参考块的中心点作为第三中心搜索点;根据预先设定的第三步幅,计算第三中心搜索点及其周围8个位置分别为中心点的参考块的SAD值,获得SAD值最小的参考块对应的运动矢量。
[0023] 作为本发明方法的一种改进,根据全搜索算法、原始像素值和参考像素值,进行块匹配操作,获得SAD目标块的运动矢量,包括:依据原始像素值和参考像素值,计算SAD目标块的搜索窗内所有参考块的SAD值,获得SAD值最小的参考块对应的运动矢量。
[0024] 一种3D-HEVC深度图运动估计并行实现结构,该结构基于指令下发机制,包括:
[0025] 阵列处理模块,用于基于邻接互联的3×4二维处理元阵列构建用于深度图运动估计的并行结构。
[0026] 指令存储模块,用于存储执行全搜索的指令和执行快速搜索的指令。
[0027] 数据反馈模块,用于依据每个SAD目标块的边缘检测结果确定每个SAD目标块的运动估计搜索算法。
[0028] 指令下发模块,用于根据数据反馈模块确定的运动估计搜索算法,从所述指令存储模块中将对应的搜索算法指令下发到阵列处理模块中处理元的指令存储,用于进行块匹配操作,获得每个SAD目标块的运动矢量。
[0029] (三)有益效果
[0030] 本发明的有益效果是:
[0031] 本发明方法通过构建并行结构,对运动估计搜索算法进行并行化实现,提高其块匹配过程的计算效率,能够满足块匹配操作的并行计算要求,缩短其编码时间。并且可以根据深度图是边缘区域或平坦区域而对运动估计搜索算法进行切换,执行适合匹配块的搜索算法,从而降低深度图编码复杂度和减少深度图运动估计的执行时间。
[0032] 本发明提供的深度图运动估计并行实现结构,该结构基于指令下发机制,实现两种运动估计搜索算法之间的灵活切换。附图说明
[0033] 本发明借助于以下附图进行描述:
[0034] 图1为本发明具体实施方式中三维高效视频编码深度图运动估计并行实现方法的流程图
[0035] 图2为本发明具体实施方式中用于运动估计的并行结构的架构图;
[0036] 图3为本发明实施例1中一帧256×256大小的数据分为256个16×16的SAD处理块的示意图;
[0037] 图4为本发明实施例1中18×18块的示意图;
[0038] 图5为本发明实施例1中18×18块的第1-8行的示意图;
[0039] 图6为本发明实施例1中18×18块的第7-14行的示意图;
[0040] 图7为本发明实施例1中18×18块的第13-18行的示意图;
[0041] 图8为本发明实施例1中SAD目标块的搜索窗示意图;
[0042] 图9为本发明实施例1中三步搜索算法运动估计示意图;
[0043] 图10为本发明实施例1中三维高效视频编码深度图运动估计并行实现结构的示意图。
[0044] 【附图标记】
[0045] 410:阵列处理模块;420:指令存储模块;430:数据反馈模块;440:指令下发模块。

具体实施方式

[0046] 为了更好的解释本发明,以便于理解,下面结合附图,通过具体实施方式,对本发明作详细描述。
[0047] 为降低深度图编码复杂度和减少编码时间,本发明依据深度图的特性,提出:对深度图中的平坦区域使用轻量级的快速运动估计搜索算法进行运动估计,比如三步搜索算法;由于深度图边缘区域比平坦区域更难预测,对深度图中的边缘区域使用全搜索算法进行运动估计。并据此本发明设计一种能够支持三维高效视频编码标准HEVC的运动估计搜索算法的体系结构,并不是套用原有的架构,而是要重新设计其架构,该架构可以满足SAD值计算的并行计算要求。
[0048] 本发明提供的三维高效视频编码深度图运动估计并行实现方法,基于邻接互联的3×4二维处理元阵列构建用于深度图运动估计的并行结构,如图1所示,包括以下步骤:
[0049] 步骤S1、基于获取的视频图像,读取深度图的原始像素值和参考像素值。
[0050] 步骤S2、在并行结构的处理元中依据原始像素值和边缘检测算子并行地进行边缘检测,确定每个块为平坦区域或边缘区域;SAD目标块由原始像素值划分获得。
[0051] 步骤S3、在并行结构的处理元中依据每个块为平坦区域或边缘区域,确定每个块的运动估计搜索算法,并根据运动估计搜索算法、原始像素值和参考像素值,并行地进行块匹配操作,获得每个块的运动矢量。
[0052] 在图1所示本发明实施例所提供的技术方案中,通过构建并行结构,对运动估计搜索算法进行并行化实现,提高其块匹配过程的计算效率,能够满足块匹配操作的并行计算要求,缩短其编码时间。并且可以根据深度图是边缘区域或平坦区域而对运动估计搜索算法进行切换,执行适合匹配块的搜索算法,从而降低深度图编码复杂度和减少深度图运动估计的执行时间。
[0053] 以下对图1所示实施例的各个步骤的具体实现进行详细阐述:
[0054] 在图1所示实施例中,基于邻接互联的3×4二维处理元阵列构建用于深度图运动估计的并行结构。
[0055] 本发明的一个实施例中,以12个处理元为例,图2为本发明一实施例中用于运动估计的并行结构的架构图,如图2所示,包括3×4的PE,即第一行分别是PE00、PE01、PE02和PE03,第二行分别是PE10、PE11、PE12和PE13,第三行分别是PE20、PE21、PE22和PE23。
[0056] 在图1所示实施例步骤S1中,读取深度图的原始像素值和参考像素值之前,还包括:
[0057] 将视频的测试序列转换成所述阵列能识别的二进制数据,并存储在数据输入存储DIM中,作为原始像素值;根据视频中的前一帧图像进行处理,并存储在数据输出存储DOM中,作为参考像素值。上述为数据准备过程。
[0058] 在图1所示实施例步骤S1中,读取深度图的原始像素值和参考像素值。
[0059] 通过二维处理元阵列中第一行第一列的处理元PE00访问DIM读取相应的原始像素值;通过二维处理元阵列中第二行第二列的处理元PE11访问DOM读取相应的参考像素值;通过二维处理元阵列中第二行第三列的处理元PE12访问DOM读取相应的参考像素值;通过二维处理元阵列中第三行第二列的处理元PE21访问DOM读取相应的参考像素值;通过二维处理元阵列中第三行第三列的处理元PE22访问DOM读取相应的参考像素值。上述为数据加载的过程。
[0060] 在图1所示实施例步骤S1之后步骤S2之前,还包括:
[0061] 数据下发的过程,即处理元PE00将原始像素值下发到处理元PE01,PE02,PE03中;处理元PE00将原始像素值下发到处理元PE11,PE12,PE21,PE22中。
[0062] 在图1所示实施例步骤S2中,在并行结构的处理元中依据原始像素值和边缘检测算子并行地进行边缘检测。
[0063] PE01,PE02和PE03依据下发的原始像素值,根据预先存储的平滤波权值和垂直滤波权值,采用Sobel边缘检测算子,并行地进行计算,获得边缘检测结果。
[0064] 在图1所示实施例步骤S2中,确定每个SAD目标块为平坦区域或边缘区域。
[0065] 将每个SAD目标块的边缘检测结果存储到所述二维处理元阵列中第二行第四列的处理元PE13中;处理元PE13根据每个SAD目标块的边缘检测结果与预定阈值,确定每个SAD目标块为平坦区域或边缘区域,并将所述SAD目标块为平坦区域或边缘区域的结果下发到处理元PE11,PE12,PE21,PE22中。
[0066] 在图1所示实施例步骤S3中,在并行结构的处理元中依据每个SAD目标块为平坦区域或边缘区域,确定每个SAD目标块的运动估计搜索算法,并根据运动估计搜索算法、原始像素值和参考像素值,并行地进行块匹配操作,获得每个SAD目标块的运动矢量。
[0067] 若SAD目标块为平坦区域,确定SAD目标块的运动估计搜索算法为快速运动估计搜索算法;优选地,快速运动估计搜索算法为三步搜索算法。块匹配操作如下:
[0068] 以SAD目标块的搜索窗中心点为第一中心搜索点,根据预先设定的第一步幅,计算第一中心搜索点及其周围8个位置分别为中心点的参考块的SAD值,选取SAD值最小的参考块的中心点作为第二中心搜索点;
[0069] 根据预先设定的第二步幅,计算第二中心搜索点及其周围8个位置分别为中心点的参考块的SAD值,选取SAD值最小的参考块的中心点作为第三中心搜索点;
[0070] 根据预先设定的第三步幅,计算第三中心搜索点及其周围8个位置分别为中心点的参考块的SAD值,获得SAD值最小的参考块对应的运动矢量。
[0071] 若SAD目标块为边缘区域,确定SAD目标块的运动估计搜索算法为全搜索算法。块匹配操作如下:
[0072] 依据参考像素值,计算SAD目标块的搜索窗内所有参考块的SAD值,获得SAD值最小的参考块对应的运动矢量。
[0073] 基于上述三维高效视频编码深度图运动估计并行实现方法,提供一具体实施例如下:
[0074] 在视频编码中,将一帧的深度图划分为多个16×16的深度图块。三维高效视频编码深度图运动估计并行实现方法如下:
[0075] 步骤A1、PE00从DIM中加载18×18的块,该18×18的块是以16×16深度图块构建的。
[0076] 步骤A1中,根据16×16深度图块是否为一帧深度图的边界,读取到PE00的18×18的深度图块有所不同。具体说明如下:
[0077] 在一具体实施例中,DIM中存储了一帧256×256大小的深度图,一帧256×256深度图可以分为256个16×16的深度图块,如图3所示,一个方格代表一个16×16的块。
[0078] 若16×16深度图块不是一帧的边界时(即图3中除去第一行、第一列、最后一行和最后一列的16×16的块),读取到PE00的18×18的块是以该16×16深度图块为中心构建的,如图4所示。例如根据图3中标号为18的16×16深度图块读取到PE00的18×18的块,其第一行为标号为2的深度图块的最后一行,第一列为标号为17的深度图块的最后一列,最后一列为标号为19的深度图块的第一列,最后一行为标号为34的深度图块的第一行。
[0079] 若16×16深度图块是一帧的边界时,读取到PE00的18×18的块是以该16×16深度图块为中心构建的,由于16×16深度图块是一帧的边界,则上下左右四个方位会有1或者2个方位的行或者列没有像素值,则用0填充这一行或者这一列。如根据图3中标号为1的16×16深度图块读取到PE00的18×18的块,其第一行和第一列都用0填充。
[0080] 步骤A2、PE00中16×16深度图块以4个8×8大小的SAD目标块,按照从左到右、从上到下的存储方式,存放到PE11、PE12、PE21和PE22中,每个PE存放一个SAD目标块,SAD目标块存放于PE的0-63号地址。
[0081] 步骤A3、PE00中18×18块的第1-8行存放到PE01的0-143号地址(如图5),第7-14行存放到PE02的0-143号地址(如图6),第13-18行存放到PE03的0-107号地址(如图7);握手信号999存放到PE01、PE02和PE03的144号地址中。
[0082] 步骤A4、PE11、PE12、PE21和PE22分别访问DOM读取对应SAD目标块的搜索窗,将搜索窗依次存放到PE11、PE12、PE21和PE22的256-739号地址;搜索窗是以SAD目标块为中心在参考帧上确定的22×22大小的像素块,如图8所示。
[0083] 步骤A5、PE01、PE02和PE03接收到PE00发出的握手信号后,依据其0-143号地址中的数据,根据预先存储的水平滤波权值和垂直滤波权值,采用Sobel边缘检测算子,并行计算深度图块中像素的梯度值,将深度图块中像素的梯度值依次存放至PE13的0-255号地址中,并且PE01将握手信号777存储到PE13的256号地址中,PE02将握手信号888存储到PE13的257号地址中,PE03将握手信号999存储到PE13的258号地址中。
[0084] PE13接收到PE01-PE03的握手信号后,依据其0-255号地址中的数据,选取每一个SAD目标块中像素的最大梯度值,判断每一个SAD目标块中像素的最大梯度值是否大于预先设定的阈值,若大于,SAD目标块为边缘区域,并向SAD目标块所在PE的254号地址中写入状态位0;否则,SAD目标块为平坦区域,并向SAD目标块所在PE的254号地址中写入状态位1。
[0085] 步骤A5中,Sobel算子是一阶微分算子,利用目标像素周围的8个像素来计算其梯度,计算如下:
[0086]
[0087]
[0088] |G|=|Gx|+|Gy|
[0089] 其中,A代表原始图像;Gx代表目标像素水平方向边缘检测的灰度像素值,Gy代表垂直方向边缘检测的灰度像素值。
[0090] 在本发明方法中,具体实现过程如下:水平滤波权值矩阵与目标像素矩阵进行卷积操作得到横向梯度值,垂直滤波权值矩阵与目标像素矩阵进行卷积操作得到纵向梯度值;依据横向梯度值和纵向梯度值,获得目标像素的梯度值。
[0091] 步骤A6、PE11、PE12、PE21和PE22分别依据其254号地址中的状态位确定PE的运动估计搜索算法,然后PE11、PE12、PE21和PE22分别依据确定的运动估计搜索算法和0-63号地址、256-739号地址中的数据,并行进行块匹配操作。
[0092] 步骤A6中,若依据254号地址中的状态位确定PE的运动估计搜索算法为全搜索算法,首先取第一个8×8的参考块,将256-263,278-285,300-307,322-329,344-351,366-373,388-396,410-417地址的像素值放入64-127号地址中,然后和0-63号地址中的像素进行逐一做差,求绝对值然后相加,获得该参考块的SAD值,将结果放入253号地址中。22×22的参考块可以取个225的参考块,下一个参考块就从257-264,279-286,301-308,323-330,
345-352,367-374,389-397,369-376地址中取参考块,以此方式,当取完一行15个参考块时,开始取第二行的参考块,地址为432-439,454-461,476-483,498-505,520-527,542-
549,564-571,586-593,取完第二行的15个参考块,下移一行,开始取第三行的15个参考块,直到取完15行的参考块,也就是一共225个参考块;每次求完一个参考块的SAD值后,与存在
253号地址中的SAD值比较,将较小的一个存入253号地址中,并且将相对应的运动矢量存入到251和252号地址中。
[0093] 步骤A6中,若依据254号地址中的状态位确定PE的运动估计搜索算法为三步搜索算法,包括以下步骤:
[0094] ⅰ、以搜索窗中心点(0,0)为第一中心搜索点,以4为步幅,计算第一中心搜索点及其周围8个位置分别为中心点的参考块的SAD值,选取SAD值最小的参考块的中心点作为第二中心搜索点。
[0095] 映射到PE的具体操作为:256-739号地址中存放一个22×22的参考块,190-197号地址存放第一个8×8参考块的首地址,即如图9所示(7,-8)(6,-8)(5,-8)(4,-8)(3,-8)(2,-8)(1,-8)(0,-8)坐标的像素块的地址,根据190-197中所存放的首地址加载第一个8×8块到64-127号地址中;同时更新下一个8×8块的首地址,将图9(7,-4)(6,-4)(5,-4)(4,-
4)(3,-4)(2,-4)(1,-4)(0,-4)坐标的像素块的地址存放到190-197号地址中;然后计算第一个参考块的SAD值并存入253号地址,继续从190-197号地址中加载下一个参考块进行SAD值计算;第一次计算完一个SAD值后存入到253号地址中,然后计算下一个SAD值与253号地址中的SAD值进行比较,将较小SAD值存入到253号地址中,并将对应的运动矢量,存入到
251,252号地址中,9个参考块计算完之后,就可以求得第一步搜索到的最佳参考块的位置,如(4,0)位置,并以此作为第二中心搜索点。
[0096] ⅱ、以2为步幅,计算第二中心搜索点及其周围8个位置分别为中心点的参考块的SAD值,选取SAD值最小的参考块的中心点作为第三中心搜索点。
[0097] 映射到PE的具体操作为:根据第二中心搜索点(4,0),190-197号地址存放第一个8×8参考块的首地址,即如图9所示(9,-6)(8,-6)(7,-6)(6,-6)(5,-6)(4,-6)(3,-6)(2,-6)坐标的像素块的地址,根据190-197中所存放的首地址加载第一个8×8块到64-127号地址中;同时更新下一个8×8块的首地址,将图9(9,-4)(8,-4)(7,-4)(6,-4)(5,-4)(4,-4)(3,-4)(2,-4)坐标的像素块的地址存放到190-197号地址中;然后计算第一个参考块的SAD值并存入253号地址,继续从190-197号地址中加载下一个参考块进行SAD值计算;第一次计算完一个SAD值后存入到253号地址中,然后计算下一个SAD值与253号地址中的SAD值进行比较,将较小SAD值存入到253号地址中,并将对应的运动矢量,存入到251,252号地址中,9个参考块计算完之后,就可以求得第二步搜索到的最佳参考块的位置,如(6,-2)位置,并以此作为第三中心搜索点。
[0098] ⅲ、以1为步幅,计算第三中心搜索点及其周围8个位置分别为中心点的参考块的SAD值,输出SAD值最小的参考块对应的运动矢量。
[0099] 映射到PE的具体操作为:根据第三中心搜索点(6,-2),190-197号地址存放第一个8×8参考块的首地址,即如图9所示(10,-7)(9,-7)(8,-7)(7,-7)(6,-7)(5,-7)(4,-7)(3,-
7)坐标的像素块的地址,根据190-197中所存放的首地址加载第一个8×8块到64-127号地址中;同时更新下一个8×8块的首地址,将图9(10,-6)(9,-6),(8,-6)(7,-6)(6,-6)(5,-6)(4,-6)(3,-6)坐标的像素块的地址存放到190-197号地址中;然后计算第一个参考块的SAD值并存入253号地址,继续从190-197号地址中加载下一个参考块进行SAD值计算;第一次计算完一个SAD值后存入到253号地址中,然后计算下一个SAD值与253号地址中的SAD值进行比较,将较小SAD值存入到253号地址中,并将对应的运动矢量,存入到251,252号地址中,9个参考块计算完之后,得到最佳匹配的参考块如以(7,-3)为中心点的参考块,该坐标值就是最后得到的运动矢量,该8×8块就是最佳的参考块。
[0100] 本实施例是基于8×8的块大小进行设计的,在本发明其他实施例中还可以通过设计一种可变块大小的并行化架构,从而在提高算法灵活性的同时降低算法复杂度。
[0101] 综上所述,本发明实施例提供的方法,对块匹配操作设计一种并行结构,尽可能大的提高SAD值计算的并行度,缩短编码时间。
[0102] PE11、PE12、PE21和PE22需要根据边缘检测模块的结果来确定运动估计搜索算法是全搜索算法还是快速搜索算法,但是每个PE的处理器资源有限,无法在其指令存储里同时存放两个算法的指令。
[0103] 为此本发明另一实施例提供一种用于三维高效视频编码深度图运动估计并行实现结构,如图10所示,该结构包括阵列处理模块410、指令存储模块420、数据反馈模块430和指令下发模块440。
[0104] 阵列处理模块410,用于基于邻接互联的3×4二维处理元阵列构建用于深度图运动估计的并行结构;指令存储模块420,用于存储执行全搜索的指令和执行快速搜索的指令;数据反馈模块430,用于依据每个SAD目标块的边缘检测结果确定每个块的运动估计搜索算法;指令下发模块440,用于根据数据反馈模块确定的运动估计搜索算法,从指令存储模块中将对应的搜索算法指令下发到阵列处理模块中处理元的指令存储,用于进行块匹配操作,获得每个块的运动矢量。
[0105] 由于本公开的示例实施例的用于三维高效视频编码深度图运动估计并行实现结构的各个功能模块与上述图1所示的用于三维高效视频编码深度图运动估计并行实现方法的示例实施例的步骤对应,因此对于本公开结构实施例中未披露的细节,请参照本公开上述的用于三维高效视频编码深度图运动估计并行实现方法的实施例。
[0106] 通过在处理元阵列中引入指令下发机制,实现两种运动估计搜索算法之间的灵活切换。
[0107] 需要理解的是,以上对本发明的具体实施例进行的描述只是为了说明本发明的技术路线和特点,其目的在于让本领域内的技术人员能够了解本发明的内容并据以实施,但本发明并不限于上述特定实施方式。凡是在本发明权利要求的范围内做出的各种变化或修饰,都应涵盖在本发明的保护范围内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈