一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

图像处理方法、集成电路、装置、可移动平台及存储介质与流程

2022-03-05 00:37:34 来源:中国专利 TAG:


1.本技术涉及图像处理技术领域,尤其涉及一种图像处理方法、集成电路、装置、可移动平台及存储介质。


背景技术:

2.双目立体匹配技术利用不同视点对同一场景进行取景后所获得的两幅图像进行对应点匹配,从而获得对应点视差,进而可以计算得到像素的深度信息。此技术可以应用于可移动平台(例如,无人机和无人车)的避障以及三维重建等领域。一般来说,计算深度信息的过程包括:匹配代价计算、代价聚合、视差计算和优化、视差精细化。其中,对于代价聚合的步骤来说,耗时较长,处理帧率较低。因此,有必要提出一种改进的方案。


技术实现要素:

3.本技术实施例提供一种图像处理方法、集成电路、装置、可移动平台及存储介质,用以解决现有技术中对于代价聚合的步骤来说,对像素的处理顺序要求较高,导致对实现方式的限制较大的问题。
4.第一方面,本技术实施例提供一种图像处理方法,对应不同视点的两幅图像中的目标图像被划分为部分区域重叠的多个区块,所述多个区块中的第一区块的重叠区域包括所述第一区块中与第一方向对应的第一重叠区域;所述方法包括:
5.获取位于所述第一区块中像素的匹配代价;
6.基于所述第一区块的所述第一重叠区域和所述第一区块的待聚合区域中像素的匹配代价,计算得到位于所述第一区块的所述待聚合区域中的多个第一像素在所述第一方向上的第一代价聚合结果。
7.第二方面,本技术实施例提供一种图像处理装置,对应不同视点的两幅图像中的目标图像被划分为部分区域重叠的多个区块,所述多个区块中的第一区块的重叠区域包括所述第一区块中与第一方向对应的第一重叠区域;所述装置包括存储器和处理器;
8.所述存储器,用于存储程序代码;
9.所述处理器,调用所述程序代码,当程序代码被执行时,用于执行以下操作:
10.获取位于所述第一区块中像素的匹配代价;
11.基于所述第一区块的所述第一重叠区域和所述第一区块的待聚合区域中像素的匹配代价,计算得到位于所述第一区块的所述待聚合区域中的多个第一像素在所述第一方向上的第一代价聚合结果。
12.第三方面,本技术实施例提供一种集成电路,对应不同视点的两幅图像中的目标图像被划分为部分区域重叠的多个区块,所述多个区块中的第一区块的重叠区域包括所述第一区块中与第一方向对应的第一重叠区域;所述电路包括:计算单元;所述计算单元用于:
13.获取位于所述第一区块中像素的匹配代价;
14.基于所述第一区块的所述第一重叠区域和所述第一区块的待聚合区域中像素的匹配代价,计算得到位于所述第一区块的所述待聚合区域中的多个第一像素在所述第一方向上的第一代价聚合结果。
15.第四方面,本技术实施例提供一种图像处理装置,包括:第三方面任一项所述的集成电路。
16.第五方面,本技术实施例提供一种可移动平台,所述可移动平台包括机身、设置于所述机身上的动力系统、拍摄装置和第二方面或第四方面任一项所述的图像处理装置;
17.所述动力系统,用于为所述可移动平台提供动力;
18.所述拍摄装置,用于在所述可移动平台飞行过程中进行拍摄,以获得对应不同视点的两幅图像。
19.第六方面,本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包含至少一段代码,所述至少一段代码可由计算机执行,以控制所述计算机执行如第一方面所述的方法。
20.第七方面,本技术实施例提供一种计算机程序,当所述计算机程序被计算机执行时,用于实现如第一方面任一项所述的方法。
21.本技术实施例提供一种图像处理方法、集成电路、装置、可移动平台及存储介质,降低了对于处理顺序的要求,从而减少了对于代价聚合的实现方式的限制。
附图说明
22.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
23.图1为本技术实施例提供的图像处理方法的应用场景示意图;
24.图2为本技术一实施例提供的16个代价聚合方向示意图;
25.图3为本技术一实施例提供的8个代价聚合方向示意图;
26.图4a为本技术一实施例提供的图像处理方法的流程示意图;
27.图4b为本技术一实施例提供的目标图像的区块划分的示意图;
28.图5为本技术另一实施例提供的图像处理方法的流程示意图;
29.图6为本技术一实施例提供的第一重叠区域为上部分区域的原理的示意图;
30.图7为本技术一实施例提供的第一重叠区域为左部分区域的原理的示意图;
31.图8为本技术一实施例提供的第一重叠区域为下部分区域的原理的示意图;
32.图9为本技术一实施例提供的第一重叠区域为右部分区域的原理的示意图;
33.图10为本技术一实施例提供的区块的示意图;
34.图11为本技术另一实施例提供的区块的示意图;
35.图12a为本技术另一实施例提供的目标图像的区块划分的示意图;
36.图12b为本技术又一实施例提供的目标图像的区块划分的示意图;
37.图13为本技术又一实施例提供的区块的示意图;
38.图14为本技术一实施例提供的部分像素包括上边缘像素的原理的示意图;
39.图15为本技术一实施例提供的部分像素包括左边缘像素的原理的示意图;
40.图16为本技术一实施例提供的部分像素包括下边缘像素的原理的示意图;
41.图17为本技术一实施例提供的部分像素包括右边缘像素的原理的示意图;
42.图18为本技术一实施例提供的第二区块的待聚合区域的部分像素的示意图;
43.图19为本技术一实施例提供的基于部分像素的单方向代价聚合结果恢复其他像素的单方向代价聚合结果的示意图;
44.图20为本技术一实施例提供的目标图像中各区块的待聚合区域中部分像素的示意图;
45.图21为本技术一实施例提供的目标图像中各区块对应目标区块的待聚合区域中部分边缘像素的示意图;
46.图22为本技术又一实施例提供的图像处理方法的流程示意图;
47.图23为本技术又一实施例提供的图像处理方法的流程示意图;
48.图24为本技术一实施例提供的第一、第二组计算单元对于区块的处理顺序示意图;
49.图25为本技术又一实施例提供的图像处理方法的流程示意图;
50.图26为本技术一实施例提供的从内部存储器中读取第一代价聚合结果的示意图;
51.图27a为本技术一实施例提供的连续多个时钟周期内第一代价聚合结果的存取示意图;
52.图27b为本技术另一实施例提供的连续多个时钟周期内第一代价聚合结果的存取示意图;
53.图28为本技术又一实施例提供的连续多个时钟周期内第一代价聚合结果的存取示意图;
54.图29为本技术一实施例提供的第一、第二组计算单元对于区块的处理顺序示意图;
55.图30为本技术一实施例提供的图像处理装置的结构示意图;
56.图31为本技术一实施例提供的可移动平台的结构示意图。
具体实施方式
57.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
58.本技术实施例提供的图像处理方法可以应用于如图1所示的图像处理系统10,图像处理系统10包括拍摄装置11和图像处理装置12。
59.拍摄装置11可以拍摄得到对应不同视点的两幅图像,拍摄装置11例如可以为双目摄像头,当然,在其他实施例中,拍摄装置11还可以为其他类型装置(例如,包含多个摄像头的装置),本技术对此不做限定。
60.图像处理装置12可以从拍摄装置11获得对应不同视点的两幅图像,并针对两幅图像中的目标图像采用本技术实施例提供的图像处理方法进行处理。其中,图像处理装置12
可以包括集成电路(integrated circuit,ic),该集成电路例如可以为专用集成电路(application specific integrated circuit,asic)、中央处理器(central processing unit,cpu)等。
61.可选的,拍摄装置11和图像处理装置12可以集成于同一设备,该设备例如可以为可移动平台。示例性的,所述可移动平台包括无人飞行器、云台、无人车、移动终端中的至少一种。当然,在其他实施例中该设备还可以为其他形式,本技术对此不做限定。
62.或者,可选的,拍摄装置11和图像处理装置12可以设置于不同的设备,例如,拍摄装置11可以设置于可移动平台中,图像处理装置12可以设置于用于控制可移动平台的控制终端中,当然,在其他实施例中,拍摄装置11和图像处理装置12还可以分别设置于其他设备中,本技术对此不做限定。
63.本技术实施例提供的图像处理方法是应用于利用立体匹配技术计算图像深度信息的代价聚合阶段,所述目标图像即为两幅图像中需要计算深度信息的图像。其中,计算图像深度信息的主要过程包括:
64.1、计算匹配代价(matching cost)。其中,匹配代价也称为匹配代价值。
65.2、代价聚合(cost aggregation)。
66.3、视差计算和优化(disparity computation/optimization)。
67.4、视差精细化(disparity refinement)。
68.其中,匹配代价表示两个像素之间的相似度。代价聚合是用于利用整个场景对应的图像中的所有像素对每一个单一像素施加影响,来获得一个较匹配代价更加精确的结果。视差计算和优化和视差精细化用于对计算结果进行校验以及进行亚像素处理等。通过上面列举的图像深度信息的计算过程,可以计算出目标图像的深度信息,然后根据三角测量原理可以进一步得到某一物体到拍摄装置之间的距离。此距离即为深度信息。本技术实施例具体针对进行代价聚合的方法进行改进,下面将介绍代价聚合的数学原理。
69.在数学上,代价聚合的过程可以看作是求取一个全局能量最小值:
[0070][0071]
其中,c(p,d
p
)为某一像素的匹配代价,p为图像中的任一像素。p1t[|d
p-dq|=1]为相邻像素中视差变化范围较小时的惩罚项,t[|d
p-dq|=1]表示相邻像素d
p
和dq之间的视差差值为1,np范围为像素p的相邻区域。p2t[|d
p-dq>1|]为相邻像素中视差变化范围较大(即,视差差值大于1)时的惩罚项。代价聚合过程涉及的计算复杂度较高,是一个多项式复杂程度的非确定性问题(non-deterministic polynomial,np)问题。
[0072]
为了降低代价聚合过程的计算复杂度,可以仅使用某些方向上的像素进行代价聚合。如图2和图3所示,依次是16个方向和8个方向示意图,图中的p为图像中某一像素。除了可以从16个方向进行代价聚合之外,还可以从8个方向进行代价聚合,或者也可以从其他数目的方向进行代价聚合,对此本技术实施例不做限定。
[0073]
对于图像中的某一像素p,在某一方向上的代价聚合可以通过下面的公式实现:
[0074]
[0075]
其中,多项式中的第一项c(p,d)为像素p的匹配代价。第二项为函数min()中的4项数据中的最小值,该4项数据包括lr(p-r,d)、lr(p-r,d-1) p1、lr(p-r,d 1) p1和minilr(p-r,i) p2。lr(p-r,d)表示像素p在r方向上的上一个像素在视差d下的代价聚合结果。lr(p-r,d-1)表示像素p在r方向上的上一个像素在视差d-1下的代价聚合结果。lr(p-r,d 1)表示像素p在r方向上的上一个像素在视差d 1下的代价聚合结果。minilr(p-r,i)表示像素p在r方向上的上一个像素在视差i下的最小代价聚合结果,其中,i的取值范围为0到最大视差值之间的任一数值。p1和p2为惩罚系数,与像素p的距离越远,惩罚系数越大。第三项minklr(p-r,k)的作用是防止lr(p,d)饱和,即防止随着迭代lr(p,d)的增长过大。
[0076]
通过上面的公式2,可以计算某一像素p在某一方向上的代价聚合结果(即,单方向代价聚合结果),重复使用该公式,可以得到某一像素p在所有方向上分别对应的代价聚合结果,进而将某一像素p在所有方向上分别对应的代价聚合结果进行相加,即可得到某一像素p的最终代价聚合结果。对于某一像素p来说,最小的最终代价聚合结果对应的视差d为最终的视差取值。
[0077]
通过上面的公式2可以看出,随着惩罚项的不断累加,在r方向上与某一像素p距离较远的其他像素对该像素p在r方向上的代价聚合结果的影响比较弱。基于此,本技术提出一种新的计算代价聚合结果的方法,通过整张目标图像被划分为部分区域重叠的多个区块,多个区块中的第一区块的重叠区域包括目标重叠区域,所述目标重叠区域包括与第一方向对应的第一重叠区域,基于第一区块的第一重叠区域和待聚合区域中像素的匹配代价,计算得到第一区块中的像素在第一方向上的代价聚合结果,实现了基于第一区块中像素的匹配代价计算得到位于第一区块的待聚合区域中像素在第一方向上的第一代价聚合结果,使得不同区块之间第一代价聚合结果的计算之间是相互独立的,代价聚合可以不再限制不同区块之间像素的处理顺序,降低了对于处理顺序的要求,从而减少了对于代价聚合的实现方式的限制。其中,第一区块重叠区域是指第一区块中与其他区块相互重叠的区域,第一区块的待聚合区域是指第一区块中需要计算代价聚合结果的区域,第一区块的目标重叠区域是指第一区块中不需要计算代价聚合结果但是可以用于计算待聚合区域的代价聚合的参考区域。
[0078]
下面结合附图,对本技术的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
[0079]
图4a为本技术一实施例提供的图像处理方法的流程示意图,本实施例的执行主体可以为图像处理装置12。如图4a所示,本实施例的方法可以包括:
[0080]
步骤41,获取位于所述多个区块中的第一区块中像素的匹配代价。
[0081]
本步骤中,所述多个区块是通过对目标图像划分得到的部分区域重叠的多个区块,所述第一区块可以为所述多个区块中的包括目标重叠区域的任意一个区块。以目标图像被划分为如图4b所示的3个区块为例,参考图4b,区块1和区块2包括目标重叠区域,其中,区块1的目标重叠区域为区块1中最右侧的区域1,且区块2中最左侧的区域2与区块1的区域1重叠。区块2的目标重叠区域为区块2中最右侧的区域3,且区块3中最左侧的区域4与区块2的区域3重叠。需要说明的是,图4b中的目标重叠区域仅为举例。
[0082]
所述第一区块与其他区块之间的重叠区域可以包括目标重叠区域和其他重叠区域。其中,第一区块的重叠区域是指第一区块中与其他区块相互重叠的区域。例如,在图4b
中,区块2的重叠区域包括区域2和区域3。所述第一区块的目标重叠区域是指所述第一区块中用于计算得到第一区块的待聚合区域中多个像素(为了便于描述,以下记为第一像素)的代价聚合结果的重叠区域。例如,在图4b中,区块2的两个重叠区域中的区域3。第一区块的待聚合区域是指第一区块中需要计算代价聚合结果的区域。第一区块的待聚合区域具体可以是第一区块中除目标重叠区域之外的其他区域,待聚合区域包括非重叠区域和其他重叠区域。例如,在图4b中,区块2的待聚合区域包括区块2的区域2和区域5,其中区域2为区块2的其他重叠区域,区域5为区块2的非重叠区域。需要说明的是,第一区块的其他重叠区域可以用于计算其他区块的代价聚合结果,例如在图4b中,区块2的区域2与区块1的区域1重叠的,区块2的区域2可以用于计算区块1的代价聚合结果。当然,区块1的区域1也可以用于计算区块1的代价聚合结果。
[0083]
可以理解的是,所述第一区块的目标重叠区域在所述第一区块中的位置,与聚合所使用的方向(为了便于描述,以下记为第一方向)相对应,所述第一区块的目标重叠区域包括所述第一区块中与第一方向对应的第一重叠区域,可以理解的是,所述第一区块中的第一重叠区域是指用于计算所述第一区块的待聚合区域中的多个第一像素在第一方向上的第一代价聚合结果的重叠区域。
[0084]
其中,所述第一方向可以是需要进行代价聚合的所有方向中的部分方向或全部方向,例如可以为图3中的l0_pd至l3_pd四个方向,或者,例如可以为图3中的l4_pd至l7_pd四个方向,当然,在其他实施例中,第一方向还可以为其他形式,本技术对此不做限定。
[0085]
第一代价聚合结果是指像素的匹配代价在第一方向上代价聚合的结果。可以理解的是,在第一方向为多个预设方向情况下,第一代价聚合结果可以为多个第一方向(即,多个预设方向)中各方向上代价聚合的结果之和。
[0086]
示例性的,可以计算获得位于第一区块中像素的匹配代价,或者,可以通过从存储器中读取的方式获得位于第一区块中像素的匹配代价,当然,在其他实施例中,也可以通过其他方式获得第一区块中像素的匹配代价,本技术对此不做限定。
[0087]
可以理解的是,位于第一区块中像素的匹配代价包括位于所述第一区块的第一重叠区域中像素的匹配代价以及位于所述第一区块的待聚合区域中像素的匹配代价。在一个实施方式中,在第一区块对应的代价聚合的计算过程中,第一重叠区域中的像素的匹配代价仅用于计算待聚合区域的像素的匹配代价,而不存储在第一区块对应的代价聚合的计算过程计算得到的第一重叠区域中的像素的匹配代价。
[0088]
步骤42,基于所述第一区块的第一重叠区域和所述第一区块的待聚合区域中像素的匹配代价,计算得到位于所述第一区块的待聚合区域中的多个第一像素在第一方向上的第一代价聚合结果。
[0089]
本步骤中,可以将第一区块视为一个子图像,进而可以针对该子图像基于前述的公式2计算得到位于第一区块的待聚合区域中的多个像素在第一方向上的第一代价聚合结果。具体的,可以从所述第一区块的第一重叠区域中的边缘像素开始,沿着第一方向依次计算位于第一区块的第一重叠区域和待聚合区域中像素的匹配代价在第一方向上的第一代价聚合结果,以得到位于第一区块的待聚合区域中的多个第一像素在第一方向上的第一代价聚合结果。
[0090]
本技术实施例提供的图像处理方法,通过整张目标图像被划分为部分区域重叠的
多个区块,多个区块中的第一区块的重叠区域包括与第一方向对应的第一重叠区域,基于第一区块的第一重叠区域和/或待聚合区域中像素的匹配代价,计算得到第一区块中的像素在第一方向上的代价聚合结果,实现了基于第一区块中像素的匹配代价计算得到位于第一区块的待聚合区域中像素在第一方向上的第一代价聚合结果,使得不同区块之间第一代价聚合结果的计算之间是相互独立的,代价聚合可以不再限制不同区块之间像素的处理顺序,与针对整张目标图像沿着第一方向依次确定整张图像中各像素的代价聚合结果,对像素的处理顺序要求较高相比,降低了对于处理顺序的要求,从而减少了对于代价聚合的实现方式的限制。
[0091]
图5为本技术另一实施例提供的图像处理方法的流程示意图,本实施例在图4a所示实施例的基础上,主要描述了一种第一方向是需要进行代价聚合的所有方向中的部分方向情况下的一种可选实现方式。如图5所示,本实施例的方法可以包括:
[0092]
步骤51,获取位于所述多个区块中的第一区块中像素的匹配代价。
[0093]
需要说明的是,步骤51与步骤41类似,在此不再赘述。
[0094]
步骤52,基于所述第一区块的第一重叠区域和所述第一区块的待聚合区域中像素的匹配代价,计算得到位于所述第一区块的待聚合区域中的多个第一像素在第一方向上的第一代价聚合结果。
[0095]
在一个实施例中,所述第一方向包括向下方向,所述第一重叠区域包括所述第一区块的上部分区域。其中,所述向下方向可以为垂直向下方向或者斜向下方向。以图3所示的8个方向为例,垂直向下方向可以为图3中的l1_pd方向,斜向下方向可以为图3中的l0_pd方向和l2_pd方向。
[0096]
如图6所示,在第一方向包括向下方向情况下,第一区块的第一重叠区域具体可以为黑粗虚线框框出的第一区块的上部分区域,第一区块的待聚合区域具体可以为黑粗实线框框出的第一区块中与上述上部分区域相邻的区域。参考图6,以第一方向包括l1_pd方向为例,针对第一区块中的某一列像素,可以沿着l1_pd方向从像素a0开始,依次计算出像素a1、a2、a3、a4、a5、
……
a18在l1_pd方向上的代价聚合结果,以得到这些像素在第一方向上的第一代价聚合结果。
[0097]
继续参考图6,以第一方向包括l2_pd方向为例,针对第一区块中的某一排l2_pd方向的像素,可以沿着l2_pd方向从像素b0开始,依次计算出像素b1、b2、b3、b4、b5、b6在l2_pd方向上的代价聚合结果,以得到这些像素在第一方向上的第一代价聚合结果。
[0098]
需要说明的是,在一个实施方式中,图6所示的第一区块是多个区块中不包含目标图像上边缘像素的区块,图6所示的第一区块例如可以是图12b中的区块4-区块9。
[0099]
在另一个实施例中,所述第一方向包括向右方向,所述第一重叠区域包括所述第一区块的左部分区域。其中,所述向右方向可以包括水平向右方向和斜向右方向。以图3所示的8个方向为例,水平向右方向例如可以为图3中的l3_pd方向,斜向右方向例如可以为图3中的l2_pd方向和l4_pd方向。
[0100]
如图7所示,在第一方向包括向右方向情况下,第一区块的第一重叠区域具体可以为黑粗虚线框框出的第一区块的左部分区域,第一区块的待聚合区域具体可以为黑粗实线框框出的与第一区块上述左部分区域相邻的区域。参考图7,以第一方向包括l3_pd方向为例,针对第一区块中的某一行像素,可以沿着l3_pd方向从像素c0开始,依次计算出像素c1、
c2、c3、c4、c5、
……
c18在l3_pd方向上的代价聚合结果,以得到这些像素在第一方向上的第一代价聚合结果。
[0101]
继续参考图7,以第一方向包括l2_pd方向为例,针对第一区块中的某一排l2_pd方向的像素,可以沿着l2_pd方向从像素d0开始,依次计算出像素d1、d2、d3、d4、d5、d7在l2_pd方向上的代价聚合结果,以得到这些像素在第一方向上的第一代价聚合结果。
[0102]
需要说明的是,在一个实施方式中,图7所示的第一区块是多个区块中不包含目标图像左边缘像素的区块,图7所示的第一区块例如可以是图12b中的区块2、区块3、区块5、区块6、区块8或区块9。
[0103]
在又一个实施例中,所述第一方向包括向上方向,所述第一重叠区域包括所述第一区块的下部分区域。其中,所述向上方向可以包括垂直向上方向和斜向上方向。以图3所示的8个方向为例,垂直向上方向例如可以为图3中的l5_pd方向,斜向上方向例如可以为图3中的l4_pd方向和l6_pd方向。
[0104]
如图8所示,在第一方向包括向上方向情况下,第一区块的第一重叠区域具体可以为黑粗虚线框框出的第一区块的下部分区域,第一区块的待聚合区域具体可以为黑粗实线框框出的与第一区块上述下部分区域相邻的区域。参考图8,以第一方向包括l5_pd方向为例,针对第一区块中的某一列像素,可以沿着l5_pd方向从像素e0开始,依次计算出像素e1、e2、e3、e4、e5、
……
e18在l5_pd方向上的代价聚合结果,以得到这些像素在第一方向上的第一代价聚合结果。
[0105]
继续参考图8,以第一方向包括l4_pd方向为例,针对第一区块中的某一排l4_pd方向的像素,可以沿着l4_pd方向从像素f0开始,依次计算出像素f1、f2、f3、f4、f5、f7在l4_pd方向上的代价聚合结果,以得到这些像素在第一方向上的第一代价聚合结果。
[0106]
需要说明的是,在一个实施方式中,图8所示的第一区块是多个区块中不包含目标图像下边缘像素的区块,图8所示的第一区块例如可以是图12b中的区块1-区块6。
[0107]
在又一个实施例中,所述第一方向包括向左方向,所述第一重叠区域包括所述第一区块的右部分区域。其中,所述向左方向可以包括水平向左方向和斜向左方向。以图3所示的8个方向为例,水平向左方向例如可以为图3中的l7_pd方向,斜向左方向例如可以为图3中的l0_pd方向和l6_pd方向。
[0108]
如图9所示,在第一方向包括向左方向情况下,第一区块的第一重叠区域具体可以为黑粗虚线框框出的第一区块的右部分区域,第一区块的待聚合区域具体可以为黑粗实线框框出的与第一区块上述右部分区域相邻的区域。参考图9,以第一方向包括l7_pd方向为例,针对第一区块中的某一行像素,可以沿着l7_pd方向从像素g0开始,依次计算出像素g1、g2、g3、g4、g5、
……
g18在l7_pd方向上的代价聚合结果,以得到这些像素在第一方向上的第一代价聚合结果。
[0109]
继续参考图9,以第一方向包括l6_pd方向为例,针对第一区块中的某一排l6_pd方向的像素,可以沿着l6_pd方向从像素h0开始,依次计算出像素h1、h2、h3、h4、h5在l6_pd方向上的代价聚合结果,以得到这些像素在第一方向上的第一代价聚合结果。
[0110]
需要说明的是,在一个实施方式中,图9所示的第一区块是多个区块中不包含目标图像右边缘像素的区块,图9所示的第一区块例如可以是图12b中的区块1、区块2、区块4、区块5、区块7或区块8。
[0111]
需要说明的是,图6-图9中一个小方格表示一个像素。
[0112]
需要说明的是,图6-图9中第一重叠区域所占行数或列数仅为举例。可以理解的是,第一重叠区域所占行数或列数越多,计算量越大,计算得到的第一代价聚合结果越精确。第一重叠区域所占行数或列数,可以根据需求灵活实现。
[0113]
基于前述图6至图9的分析可知,以第一方向为图3中左上部分的l0_pd至l3_pd为例,如图10所示,第一区块的第一重叠区域具体可以为黑粗虚线框框出的第一区块的左部分区域和上部分区域,第一区块的待聚合区域具体可以为黑粗实线框框出的与第一区块左部分区域和上部分区域相邻的区域。
[0114]
基于前述图6至图9的分析可知,以第一方向为图3中左上部分的l4_pd至l7_pd为例,如图11所示,第一区块的第一重叠区域具体可以为黑粗虚线框框出的第一区块的右部分区域和下部分区域,第一区块的待聚合区域具体可以为黑粗实线框框出的与第一区块右部分区域和下部分区域相邻的区域。
[0115]
在图11的基础上,以目标图像为32
×
32像素的图像,且目标图像被划分为部分区域重叠的4个区块为例,所得到的4个区块可以如图12a所示。参考图12a,4个区块分别为区块1至区块4,其中第一区块可以为4个区块中的区块1-区块3。需要说明的是,由于图12a中区块4的右边缘和下边缘的像素是目标图像的边缘像素,在第一方向为l4_pd至l7_pd时,区块4中像素的代价聚合结果并不会受到其他区块中像素的影响,因此区块4中不包括第一重叠区域。
[0116]
需要说明的是,图12a中以将目标图像等分为待聚合区域的大小均为16
×
16像素的4个区块为例,并且为了简化附图,图12a中仅示出区块1的第一重叠区域的。其中,区块1对应黑粗实线框框出的区域即为区块1的待聚合区域,其大小为16
×
16像素,区块1的待聚合区域的右侧以及下方由黑粗虚线框框出的区域为区块1的第一重叠区域。区块1的大小为(16 3)
×
(16 3)像素。其中,上式中第一个括号中的3用于表示区块1的待聚合区域右侧的第一重叠区域中像素的列数(图中的第一小方格代表一个像素),第二个括号中的3用于表示区块1的待聚合区域下方的第一重叠区域中像素的行数(图中的第一小方格代表一个像素)。类似的,区块2的待聚合区域的大小为16
×
16像素,区块2的大小为16
×
(16 3)像素,其中括号中的3用于表示区块2的下方的第一重叠区域中像素的行数。区块3的待聚合区域的大小为16
×
16像素,区块3的大小为(16 3)
×
16像素,其中括号中的3用于表示区块3的右侧的第一重叠区域中像素的列数。
[0117]
在图11的基础上,以目标图像为48
×
48像素的图像,且目标图像被划分为部分区域重叠的9个区块为例,所得到的9个区块可以如图12b所示。参考图12b,9个区块分别为区块1至区块9,其中第一区块可以为9个区块中的区块1-区块8。需要说明的是,由于图12b中区块9的右边缘和下边缘的像素是目标图像的边缘像素,在第一方向为l4_pd至l7_pd时,区块9中像素的代价聚合结果并不会受到其他区块中像素的影响,因此区块9中不包括第一重叠区域。在一实施方式中,利用多个预设值来计算区块9的代价聚合结果。
[0118]
需要说明的是,图12b中以将目标图像等分为待聚合区域的大小均为16
×
16像素的9个区块为例,并且为了简化附图,图12b中仅示出区块1的第一重叠区域的。其中,区块1对应黑粗实线框框出的区域即为区块1的待聚合区域,其大小为16
×
16像素,区块1的待聚合区域的右侧以及下方由黑粗虚线框框出的区域为区块1的第一重叠区域,区块1的大小为
(16 3)
×
(16 3)像素,其中第一个括号中的3用于表示区块1的待聚合区域右侧的第一重叠区域中像素的列数(图中的第一小方格代表一个像素),第二个括号中的3用于表示区块1的待聚合区域下方的第一重叠区域中像素的行数(图中的第一小方格代表一个像素)。类似的,区块2的待聚合区域的大小为16
×
16像素,区块2的大小为(16 3)
×
(16 3)像素,其中第一个3用于表示区块2的待聚合区域右侧的第一重叠区域中像素的列数,第二个括号中的3用于表示区块2的待聚合区域下方的第一重叠区域中像素的行数。区块3的待聚合区域的大小为16
×
16像素,区块3的大小为16
×
(16 3)像素,其中括号中的3用于表示区块3的下方的第一重叠区域中像素的行数。区块4的待聚合区域的大小为16
×
16像素,区块4的大小为(16 3)
×
(16 3)像素,其中第一个括号中的3用于表示区块4的待聚合区域右侧的第一重叠区域中像素的列数,第二个括号中的3用于表示区块4的待聚合区域下方的第一重叠区域中像素的行数。区块5的待聚合区域的大小为16
×
16像素,区块5的大小为(16 3)
×
(16 3)像素,其中第一个括号中的3用于表示区块5的待聚合区域右侧的第一重叠区域中像素的列数,第二个括号中的3用于表示区块5的待聚合区域下方的第一重叠区域中像素的行数。区块6的待聚合区域的大小为16
×
16像素,区块6的大小为16
×
(16 3)像素,其中括号中的3用于表示区块6的下方的第一重叠区域中像素的行数。区块7的待聚合区域的大小为16
×
16像素,区块7的大小为(16 3)
×
16像素,其中括号中的3用于表示区块7的右侧的第一重叠区域中像素的列数。区块8的待聚合区域的大小为16
×
16像素,区块8的大小为(16 3)
×
16像素,其中括号中的3用于表示区块8的右侧的第一重叠区域中像素的列数。
[0119]
步骤53,计算得到位于所述多个区块中第二区块的待聚合区域中的多个第二像素在第二方向上的第二代价聚合结果。
[0120]
本步骤中,所述第二区块可以为所述多个区块中的包括目标重叠区域的任意一个区块。所述第二区块与所述第一区块可以为同一区块,或者,所述第二区块与所述第一区块可以为不同区块。需要说明的是,步骤53与步骤52之间可以没有先后顺序限制。
[0121]
类似于第一区块,所述第二区块与其他区块之间的重叠区域可以包括目标重叠区域和其他重叠区域。其中,所述第二区块的目标重叠区域可以是指所述第二区块中用于计算得到第二区块的待聚合区域中多个像素(为了便于描述,以下记为第二像素)的代价聚合结果的重叠区域。所述第二区块的其他重叠区域可以是指所述第二区块中用于计算得到与所述第二区块相邻的其他区块的待聚合区域中多个像素的代价聚合结果的重叠区域。所述第二区块可以为图12a中4个区块中的区块1-区块4中的任何一个。
[0122]
所述第二方向是指需要进行代价聚合的所有方向中与第一方向不同的部分方向。可选的,为了简化实现,第一方向和第二方向可以对应相反,例如第一方向为图3中的l0_pd至l3_pd四个方向,第二方向可以为图3中的l4_pd至l7_pd四个方向,又例如,第一方向可以为图3中的l4_pd至l7_pd四个方向,第二方向可以为图3中l0_pd至l3_pd四个方向。当然,在其他实施例中,第一方向还可以为其他形式,本技术对此不做限定。
[0123]
第二代价聚合结果是指像素的匹配代价在第二方向上代价聚合的结果。可以理解的是,在第二方向为多个预设方向情况下,第二代价聚合结果可以为多个第二方向(即,多个预设方向)中各方向上代价聚合的结果之和。
[0124]
在一个实施例中,所述第二区块的目标重叠区域可以包括所述第二区块中与第二方向对应的第二重叠区域。基于此,所述计算得到位于所述第二区块的待聚合区域中的多
个第二像素在第二方向上的第二代价聚合结果,具体可以包括:基于所述第二区块的第二重叠区域和所述第二区块的待聚合区域中像素的匹配代价,计算得到位于所述第二区块的待聚合区域中的多个第二像素在所述第二方向上的第二代价聚合结果。即,针对区块中待聚合区域中的多个第二像素在第二方向上的第二代价聚合结果的方式,也可以采用类似于步骤42或步骤52所述的计算多个像素在第一方向上的第一代价聚合结果的方式。具体方式参见前述实施例的相关描述,在此不再赘述。
[0125]
对应于图12b,假设第二区块为图12b中的区块5,且第一方向为l0_pd至l3_pd四个方向,第二方向为l4_pd至l7_pd,则区块5包括的像素可以如图13所示。参考图13,区块5的第一重叠区域具体可以为黑粗虚线框框出的区块5的右部分区域和下部分区域,区块5的第二重叠区域具体可以为黑粗虚线框框出的区块5的左部分区域和上部分区域,区块5的待聚合区域具体可以为黑粗实线框框出的第一区块中间的区域。
[0126]
本技术实施例提供的图像处理方法,通过基于第一区块的第一重叠区域和待聚合区域中像素的匹配代价,计算得到第一区块的待聚合区域中的像素在第一方向上的代价聚合结果,计算得到位于第二区块的待聚合区域中的多个第二像素在第二方向上的第二代价聚合结果,实现了针对目标图像中的区块在不同方向上的代价聚合,从而能够获得像素的最终代价聚合结果(即如下的第三代价聚合结果)。
[0127]
在另一个实施例中,所述第二方向为多个预设方向情况下,所述计算得到位于所述第二区块的待聚合区域中的多个第二像素在第二方向上的第二代价聚合结果,具体可以包括:
[0128]
从存储器中读取所述多个第二像素中部分像素在所述多个预设方向中的至少一个所述预设方向上的单方向代价聚合结果,并基于所述部分像素的所述单方向代价聚合结果计算得到所述多个第二像素中其他像素的第二代价聚合结果,所述部分像素的单方向代价聚合结果是通过先前处理获得并存储在所述存储器中。
[0129]
其中,所述单方向代价聚合结果是指在单个方向上的代价聚合结果。以至少一个所述预设方向为l0_pd方向和l1_pd方向为例,可以从存储器中读取多个第二像素中部分像素在l0_pd方向上的代价聚合结果,以及,从存储器中读取多个第二像素中部分像素在l1_pd方向上的代价聚合结果。其中,l0_pd方向和l1_pd方向分别为不同的单个方向上的代价聚合结果。
[0130]
所述先前处理可以基于前述公式2完成。以图3所示的8个方向为例,假设第二方向包括图3中的左上部分的4个方向,即l0_pd至l3_pd,可以基于前述公式2给出的计算某一像素p在r方向上的单方向代价聚合结果,计算目标图像中所有像素分别在l0_pd至l3_pd方向上分别的单方向代价聚合结果,并将部分像素的l0_pd至l3_pd中至少一个方向的单方向代价聚合结果存储在存储器中。
[0131]
可以看出,在先前处理过程中,第二区块的待聚合区域中所有像素在各第二方向上的单方向代价聚合结果均能够计算获得,只是选取了其中部分像素在至少一个第二方向上的单方向代价聚合结果进行保存。之后,可以基于存储器中保存的第二区块的待聚合区域中部分像素在至少一个第二方向上的单方向代价聚合结果,恢复得到第二区块的待聚合区域中其他像素在各个第二方向(例如,预设方向)上的单方向代价聚合结果,以基于第二区块的待聚合区域中其他像素在各个第二方向(例如,预设方向)上的单方向代价聚合结果
计算得到第二区块的待聚合区域中其他像素的第二代价聚合结果。
[0132]
在一个实施例中,为了尽可能的减少对于集成电路的内部存储器的占用,所述存储器可以为所述集成电路的外部存储器。当然,在其他实施例中,所述存储器还可以为其他存储器,本技术对此不做限定。
[0133]
这里,介绍一下可以基于位于第二区块的待聚合区域中的多个第二像素中部分像素的第二代价聚合结果,计算得到位于第二区块的待聚合区域中的多个第二像素中其他像素的第二代价聚合结果的理论依据。
[0134]
通过公式2可以看出,对于图像中任一像素在单一方向上的代价聚合结果来说,其由两部分来决定。具体来说,该代价聚合结果包括该像素的匹配代价以及在该方向上的上一个像素的代价聚合结果。基于此,以方向l0_pd方向为例,可以将公式2重写为公式3来描述代价聚合的过程:
[0135]
l0_pdi=f(ci,l0_pd
i-1
)(公式3)
[0136]
其中,i为图像中的当前像素,ci表示当前像素i的匹配代价,l0_pd
i-1
表示在l0_pd方向上的上一个像素i-1的代价聚合结果,l0_pdi表示l0_pd方向的当前像素i的代价聚合结果。
[0137]
通过公式3可以看出,某一像素p在某一方向上的代价聚合结果可以基于该像素p在该方向上的上一个像素的代价聚合结果确定,由此能够基于位于第二区块的待聚合区域中的多个第二像素中部分像素的第二代价聚合结果,计算得到位于第二区块的待聚合区域中的多个第二像素中其他像素的第二代价聚合结果。例如,当多个第二像素中的至少一个像素为其他像素在某一方向上的上一个像素时,可以依据该至少一个像素的第二代价聚合结果,来计算其他像素的第二代价聚合结果。
[0138]
当将图3中左上部分的l0_pd至l3_pd中的任何一个方向作为第二方向时,像素在第二方向上的第二代价聚合结果可以表示为:
[0139][0140]
在一个实施例中,第二方向可以为多个预设方向,当该多个预设方向包括向下方向时,所述部分像素可以包括所述第二区块的待聚合区域中位于上边缘的像素。其中,所述向下方向可以包括垂直向下方向和斜向下方向。以图3所示的8个方向为例,垂直向下方向例如可以为图3中的l1_pd方向,斜向下方向例如可以为图3中的l0_pd方向和l2_pd方向。
[0141]
参考图14,在第二方向包括l1_pd方向情况下,像素i在l1_pd方向上的代价聚合结果可以基于像素i在l1_pd方向上的上一像素(即像素i3)在l1_pd方向上的代价聚合结果确定,像素i3在l1_pd方向上的代价聚合结果可以基于像素i3在l1_pd方向上的上一像素(即像素i2)在l1_pd方向上的代价聚合结果确定,像素i2在l1_pd方向上的代价聚合结果可以基于像素i2在l1_pd方向上的上一像素(即像素i1)在l1_pd向上的代价聚合结果确定,而像素i1在l1_pd方向上的代价聚合结果可以基于像素i1在l1_pd方向上的上一像素(即区块上边缘的像素i00)在l1_pd方向上的代价聚合结果确定。可以看出,第二区块的待聚合区域上边缘的像素在垂直向下方向上的代价聚合结果可以用于确定其他像素在垂直向下方向上的代价聚合结果。因此,在一实施方式中,存储第二区块的待聚合区域上边缘行(例如,像素
i00所在的行)的像素在l1_pd方向上的代价聚合结果,以用于确定其他像素在l1_pd方向上的代价聚合结果。其中,其他像素位于第一区块的内部。也就是说,其他像素不位于区块的边缘。
[0142]
继续参考图14,在第二方向包括l2_pd方向情况下,某一像素i在l2_pd方向上的代价聚合结果可以基于像素i在l2_pd方向上的上一像素(即像素i6)在l2_pd方向上的代价聚合结果确定,像素i6在l2_pd方向上的代价聚合结果可以基于像素i6在l2_pd方向上的上一像素(即像素i5)在l2_pd方向上的代价聚合结果确定,像素i5在l2_pd方向上的代价聚合结果可以基于像素i5在l2_pd方向上的上一像素(即像素i4)在l2_pd向上的代价聚合结果确定,而像素i4在l2_pd方向上的代价聚合结果可以基于像素i4在l2_pd方向上的上一像素(即区块上边缘的像素i01)在l2_pd方向上的代价聚合结果确定。可以看出,第二区块的待聚合区域上边缘的像素在斜向下方向上的代价聚合结果可以用于确定其他像素在斜向下方向上的代价聚合结果。因此,在一实施方式中,存储第二区块的待聚合区域上边缘行(例如,像素i01所在的行)的像素在l2_pd方向上的代价聚合结果,以用于确定其他像素在l2_pd方向上的代价聚合结果。其中,其他像素位于第一区块的内部。也就是说,其他像素不位于区块的边缘。
[0143]
基于与l2_pd方向类似的原理,针对l0_pd方向,在一实施方式中,存储第二区块的待聚合区域上边缘行的像素在l0_pd方向上的代价聚合结果,以用于确定其他像素在l0_pd方向上的代价聚合结果。其中,其他像素位于第一区块的内部。也就是说,其他像素不位于区块的边缘。
[0144]
在另一个实施例中,第二方向可以为多个预设方向,当该多个预设方向包括向右方向时,所述部分像素可以包括所述第二区块的待聚合区域中位于左边缘的像素。其中,所述向右方向可以包括水平向右方向和斜向右方向。以图3所示的8个方向为例,水平向右方向例如可以为图3中的l3_pd方向,斜向右方向例如可以为图3中的l2_pd方向和l4_pd方向。
[0145]
参考图15,在第二方向包括l3_pd方向情况下,像素j在l3_pd方向上的代价聚合结果可以基于像素j在l3_pd方向上的上一像素(即像素j3)在l3_pd方向上的代价聚合结果确定,像素j3在l3_pd方向上的代价聚合结果可以基于像素j3在l3_pd方向上的上一像素(即像素j2)在l3_pd方向上的代价聚合结果确定,像素j2在l3_pd方向上的代价聚合结果可以基于像素j2在l3_pd方向上的上一像素(即像素j1)在l3_pd向上的代价聚合结果确定,而像素j1在l3_pd方向上的代价聚合结果可以基于像素j1在l3_pd方向上的上一像素(即区块左边缘的像素j00)在l3_pd方向上的代价聚合结果确定。可以看出,第二区块的待聚合区域左边缘的像素在水平向右方向上的代价聚合结果可以用于确定其他像素在水平向右方向上的代价聚合结果。因此,在一实施方式中,存储第二区块的待聚合区域左边缘行(例如,像素j00所在的行)的像素在l3_pd方向上的代价聚合结果,以用于确定其他像素在l3_pd方向上的代价聚合结果。其中,其他像素位于第一区块的内部。也就是说,其他像素不位于区块的边缘。
[0146]
继续参考图15,在第二方向包括l2_pd方向情况下,某一像素j在l2_pd方向上的代价聚合结果可以基于像素j在l2_pd方向上的上一像素(即像素j6)在l2_pd方向上的代价聚合结果确定,像素j6在l2_pd方向上的代价聚合结果可以基于像素j6在l2_pd方向上的上一像素(即像素j5)在l2_pd方向上的代价聚合结果确定,像素j5在l2_pd方向上的代价聚合结
果可以基于像素j5在l2_pd方向上的上一像素(即像素j4)在l2_pd向上的代价聚合结果确定,而像素j4在l2_pd方向上的代价聚合结果可以基于像素j4在l2_pd方向上的上一像素(即区块左边缘的像素j01)在l2_pd方向上的代价聚合结果确定。可以看出,第二区块的待聚合区域左边缘的像素在斜向右方向上的代价聚合结果可以用于确定其他像素在斜向右方向上的代价聚合结果。因此,在一实施方式中,存储第二区块的待聚合区域左边缘行(例如,像素j01所在的行)的像素在l2_pd方向上的代价聚合结果,以用于确定其他像素在l2_pd方向上的代价聚合结果。其中,其他像素位于第一区块的内部。也就是说,其他像素不位于区块的边缘。
[0147]
基于与l2_pd方向类似的原理,针对l4_pd方向,在一实施方式中,存储第二区块的待聚合区域左边缘行的像素在l4_pd方向上的代价聚合结果,以用于确定其他像素在l4_pd方向上的代价聚合结果。其中,其他像素位于第一区块的内部。也就是说,其他像素不位于区块的边缘。
[0148]
在又一个实施例中,第二方向可以为多个预设方向,当该多个预设方向包括向上方向时,所述部分像素可以包括所述第二区块的待聚合区域中位于下边缘的像素。其中,所述向上方向可以包括垂直向上方向和斜向上方向。以图3所示的8个方向为例,垂直向上方向例如可以为图3中的l5_pd方向,斜向上方向例如可以为图3中的l4_pd方向和l6_pd方向。
[0149]
参考图16,在第二方向包括l5_pd方向情况下,像素k在l5_pd方向上的代价聚合结果可以基于像素k在l5_pd方向上的上一像素(即像素k3)在l5_pd方向上的代价聚合结果确定,像素k3在l5_pd方向上的代价聚合结果可以基于像素k3在l5_pd方向上的上一像素(即像素k2)在l5_pd方向上的代价聚合结果确定,像素k2在l5_pd方向上的代价聚合结果可以基于像素k2在l5_pd方向上的上一像素(即像素k1)在l5_pd向上的代价聚合结果确定,而像素k1在l5_pd方向上的代价聚合结果可以基于像素k1在l5_pd方向上的上一像素(即区块下边缘的像素k00)在l5_pd方向上的代价聚合结果确定。可以看出,第二区块的待聚合区域下边缘的像素在垂直向上方向上的代价聚合结果可以用于确定其他像素在垂直向上方向上的代价聚合结果。因此,在一实施方式中,存储第二区块的待聚合区域下边缘行(例如,像素k00所在的行)的像素在l5_pd方向上的代价聚合结果,以用于确定其他像素在l5_pd方向上的代价聚合结果。其中,其他像素位于第一区块的内部。也就是说,其他像素不位于区块的边缘。
[0150]
继续参考图16,在第二方向包括l4_pd方向情况下,像素k在l4_pd方向上的代价聚合结果可以基于像素k在l4_pd方向上的上一像素(即像素k6)在l4_pd方向上的代价聚合结果确定,像素k6在l4_pd方向上的代价聚合结果可以基于像素k6在l4_pd方向上的上一像素(即像素k5)在l4_pd方向上的代价聚合结果确定,像素k5在l4_pd方向上的代价聚合结果可以基于像素k5在l4_pd方向上的上一像素(即像素k4)在l4_pd向上的代价聚合结果确定,而像素k4在l4_pd方向上的代价聚合结果可以基于像素k4在l4_pd方向上的上一像素(即区块下边缘的像素k01)在l4_pd方向上的代价聚合结果确定。可以看出,第二区块的待聚合区域下边缘的像素在斜向上方向上的代价聚合结果可以用于确定其他像素在斜向上方向上的代价聚合结果。因此,在一实施方式中,存储第二区块的待聚合区域下边缘行(例如,像素k01所在的行)的像素在l4_pd方向上的代价聚合结果,以用于确定其他像素在l4_pd方向上的代价聚合结果。其中,其他像素位于第一区块的内部。也就是说,其他像素不位于区块的
边缘。
[0151]
基于与l4_pd方向类似的原理,针对l6_pd方向,在一实施方式中,存储第二区块的待聚合区域下边缘行的像素在l6_pd方向上的代价聚合结果,以用于确定其他像素在l6_pd方向上的代价聚合结果。其中,其他像素位于第一区块的内部。也就是说,其他像素不位于区块的边缘。
[0152]
在又一个实施例中,第二方向可以为多个预设方向,当该多个预设方向包括向左方向时,所述部分像素包括所述第二区块的待聚合区域中位于右边缘的像素。其中,所述向左方向可以包括水平向左方向和斜向左方向。以图3所示的8个方向为例,水平向左方向例如可以为图3中的l7_pd方向,斜向左方向例如可以为图3中的l0_pd方向和l6_pd方向。
[0153]
参考图17,在第二方向包括l7_pd方向情况下,某一像素l在l7_pd方向上的代价聚合结果可以基于像素l在l7_pd方向上的上一像素(即像素l3)在l7_pd方向上的代价聚合结果确定,像素l3在l7_pd方向上的代价聚合结果可以基于像素l3在l7_pd方向上的上一像素(即像素l2)在l7_pd方向上的代价聚合结果确定,像素l2在l7_pd方向上的代价聚合结果可以基于像素l2在l7_pd方向上的上一像素(即像素l1)在l7_pd向上的代价聚合结果确定,而像素l1在l7_pd方向上的代价聚合结果可以基于像素l1在l7_pd方向上的上一像素(即区块右边缘的像素l00)在l7_pd方向上的代价聚合结果确定。可以看出,第二区块的待聚合区域右边缘的像素在水平向左方向上的代价聚合结果可以用于确定其他像素在水平向左方向上的代价聚合结果。因此,在一实施方式中,存储第二区块的待聚合区域右边缘行(例如,像素l00所在的行)的像素在l7_pd方向上的代价聚合结果,以用于确定其他像素在l7_pd方向上的代价聚合结果。其中,其他像素位于第一区块的内部。也就是说,其他像素不位于区块的边缘。
[0154]
继续参考图17,在第二方向包括l6_pd方向情况下,某一像素l在l6_pd方向上的代价聚合结果可以基于像素l在l6_pd方向上的上一像素(即像素l6)在l6_pd方向上的代价聚合结果确定,像素l6在l6_pd方向上的代价聚合结果可以基于像素l6在l6_pd方向上的上一像素(即像素l5)在l6_pd方向上的代价聚合结果确定,像素l5在l6_pd方向上的代价聚合结果可以基于像素l5在l6_pd方向上的上一像素(即像素l4)在l6_pd向上的代价聚合结果确定,而像素l4在l6_pd方向上的代价聚合结果可以基于像素l4在l6_pd方向上的上一像素(即区块右边缘的像素l01)在l6_pd方向上的代价聚合结果确定。可以看出,第二区块的待聚合区域右边缘的像素在斜向左方向上的代价聚合结果可以用于确定其他像素在斜向左方向上的代价聚合结果。因此,在一实施方式中,存储第二区块的待聚合区域右边缘行(例如,像素l01所在的行)的像素在l6_pd方向上的代价聚合结果,以用于确定其他像素在l6_pd方向上的代价聚合结果。其中,其他像素位于第一区块的内部。也就是说,其他像素不位于区块的边缘。
[0155]
基于与l7_pd方向类似的原理,针对l0_pd方向,在一实施方式中,存储第二区块的待聚合区域右边缘行的像素在l0_pd方向上的代价聚合结果,以用于确定其他像素在l0_pd方向上的代价聚合结果。其中,其他像素位于第一区块的内部。也就是说,其他像素不位于区块的边缘。
[0156]
基于前述图14至图17的分析可知,以第二方向为图3中左上部分的l0_pd至l3_pd为例,如图18所示,第二区块的待聚合区域中用于恢复其他像素的单方向代价聚合结果的
部分像素具体可以包括黑色框表示的位于第二区块的待聚合区域上边缘的像素,以及灰色框表示的位于第二区块的待聚合区域左边缘的像素。第二区块的待聚合区域中的其他像素具体可以为白色框表示的像素。需要说明的是,图18中像素点不同的填充色,表示在存储器中需要存储的代价聚合结果对应的方向不同。针对图18中黑色框位置的像素即第二区块的待聚合区域上边缘的像素,存储设备中需要存储分别在l0_pd、l1_pd、l2_pd三个方向上的代价聚合结果;针对图18中灰色框位置的像素即第二区块的待聚合区域左边缘的像素,存储设备中需要存储分别在l2_pd、l3_pd两个方向上的代价聚合结果。针对图18中灰色框与黑色框交叠位置的像素(即像素1801),存储设备中需要存储分别存储在l0_pd、l1_pd、l2_pd和l3_pd四个方向上的代价聚合结果。其中,灰色框与黑色框交叠位置的像素为同时位于上边缘和左边缘的像素。
[0157]
本技术实施例中,可以采用逐行或者逐点的方式来确定第二区块的待聚合区域中其他像素在各第二方向上的单方向代价聚合结果。需要说明的是,在一个实施方式中,当第二方向为l0_pd~l7_pd时,可以采用与上述方式相似的方式来获得位于区块内部的像素在第二方向上的代价聚合结果。为求简洁,不再赘述。
[0158]
对应于图18,在采用逐行的方式时可以根据第二区块的待聚合区域中上边缘和左边缘的像素在至少一个第二方向上的单方向代价聚合结果,并行按照逐行和列的方式确定第二区块的待聚合区域中其他像素在各第二方向上的单方向代价聚合结果。
[0159]
在实际应用中,参考图19,可以由第1行(1901)中的像素在l0_pd、l1_pd、l2_pd方向上分别的单方向代价匹配结果和第2行(1902)中像素的匹配代价(也即前文所述的matching cost),分别计算第2行中的像素在l0_pd、l1_pd、l2_pd方向上分别的单方向匹配代价结果。还可以通过第1列中的像素在l3_pd方向上的单方向代价聚合结果和第2列中像素的匹配代价,计算第2列中像素在l3_pd方向上的单方向代价聚合结果。
[0160]
l0_pd至l3_pd不同方向上的单方向代价聚合结果的计算过程之间是相互独立的,因此可以并行计算不同方向上的单方向代价聚合结果。例如,一个时钟周期内可以完成第2行中的像素分别在l0_pd、l1_pd、l2_pd方向上的单方向代价聚合结果以及第2列中的像素在l3_pd方向上的单方向代价聚合结果的恢复,对于图19所示的第二区块的待聚合区域来说,仅较少的时间即可完成第二区块的待聚合区域中其他像素在各个第二方向上的单方向代价聚合结果的恢复计算。对于逐行恢复其他像素的单方向代价聚合结果的方式来说,计算速度较快。
[0161]
值得说明的是,以图19所示的第二区块的待聚合区域为例,假设每个单方向代价匹配结果的数据量为16比特,那么可以在集成电路的内部存储器中开辟4块16
×
16
×
16比特的存储空间,用于存储第二区块的待聚合区域中第二像素在l0_pd-l3_pd方向上的单方向代价匹配结果,其中4块16
×
16
×
16比特的存储空间对应于l0_pd-l3_pd 4个方向。
[0162]
对应于图18,在采用逐点的方式时可以根据第二区块的待聚合区域中上边缘和左边缘的像素在至少一个第二方向上的单方向代价聚合结果,按照逐点的方式确定第二区块的待聚合区域中其他像素在各第二方向上的单方向代价聚合结果。
[0163]
在实际应用中,参考图19,假设第二区块的待聚合区域左上角的像素的位置为(0,0),可以先由位置(1,0)的像素在l3_pd方向上的单方向代价匹配结果计算出位置(1,1)的像素在l3_pd方向上的单方向代价匹配结果,通过位置(0,1)的像素分别在l0_pd、l1_pd、
l2_pd方向上的单方向代价匹配结果计算出位置(1,1)的像素分别在l0_pd、l1_pd、l2_pd方向上的单方向代价匹配结果。在计算出位置(1,1)的像素分别在l0_pd至l3_pd方向上的单方向代价匹配结果之后,可以将它们相加。
[0164]
可以理解的是,在计算出位置(1,1)的像素在l0_pd至l3_pd方向上的单方向代价匹配结果的相加结果之后,可以将该相加结果存储到集成电路的内部存储器中。通过这样的方式,最后能够计算出第二区块待聚合区域中部分像素和其他像素在l0_pd至l3_pd方向上的单方向代价匹配结果的相加结果(即第二代价聚合结果),并将第二代价聚合结果存储到存储器中。仍以图19所示的第二区块的待聚合区域为例,假设每个单方向代价匹配结果的数据量为16比特,那么可以在集成电路的内部存储器中开辟1块16
×
16
×
16比特的存储空间,用于存储第二区块的待聚合区域中第二像素的第二代价聚合结果。相比于逐行恢复第二区块的单方向代价聚合结果的方式来说,采用逐点恢复的方式可以直接恢复出单个第二像素分别在l0_pd至l3_pd方向上的单方向代价匹配结果,因此可以直接将这4个方向上的单方向代价匹配结果相加得到单个第二像素的第二代价聚合结果,将第二代价聚合结果存储到集成电路的内部存储器上。而采用逐行恢复的方式,无法同时将单个第二像素分别在l0_pd至l3_pd方向上的单方向代价匹配结果都恢复出,因此需要将单个第二像素分别在l0_pd至l3_pd方向上的单方向代价匹配结果都存储在内部存储器中。从而,对于逐点恢复的方式来说,需要占用的存储空间较小。
[0165]
需要说明的是,在第二区块的待聚合区域的上边缘的像素是目标图像的上边缘的像素情况下,第二区块的待聚合区域上边缘的像素在向下方向上的代价聚合结果是默认最大值,因此可以无需存储在存储设备中。在第二区块的待聚合区域的左边缘的像素是目标图像的左边缘的像素情况下,第二区块的待聚合区域左边缘的像素在向右方向上的代价聚合结果是默认最大值,因此可以无需存储在存储设备中。在第二区块的待聚合区域的下边缘的像素是目标图像的下边缘的像素情况下,第二区块的待聚合区域下边缘的像素在向上方向上的代价聚合结果是默认最大值。在第二区块的待聚合区域的右边缘的像素是目标图像的右边缘的像素情况下,第二区块的待聚合区域的右边缘的像素在向左方向上的代价聚合结果是默认最大值。在一个实施方式中,上述默认最大值可以不采用与计算得到的代价聚合结果相同的存储方式进行存储。例如,无需将默认最大值存储在计算得到的代价聚合结果对应的存储设备中。
[0166]
基于此,针对于图12b所示的9个区块,假设图12b所示的9个区块的待聚合区域组成了一张完整的目标图像,第二方向包括l0-pd至l3-pd,并且第二区块为图12b中的区块1~9中的任意一个,则第二区块的待聚合区域中的部分像素可以为图20中黑色框位置的像素和灰色框位置的像素。参考图20,由于第二方向包括l0-pd至l3-pd,因此理论上第二区块的待聚合区域中的部分像素为第二区块的待聚合区域上边缘和左边缘的像素,且应将部分像素分别在l0-pd至l3-pd方向上的单方向代价聚合结果保存在存储器中。然而,由于区块1、区块4和区块7的待聚合区域左边缘的像素均是目标图像的边缘的像素,因此区块1、区块4和区块7的待聚合区域左边缘的像素分别在l0-pd至l3-pd方向上的单方向代价聚合结果可以直接取默认值。由于区块1、区块2和区块3的待聚合区域上边缘的像素均是目标图像的边缘的像素,因此区块1、区块2和区块3的待聚合区域上边缘的像素分别在l0-pd至l3-pd方向上的单方向代价聚合结果可以直接取默认值。另外,由于区块5、区块6、区块8和区块9的
待聚合区域左边缘和上边缘的像素均不是目标图像的边缘的像素,因此区块5、区块6、区块8和区块9的待聚合区域上边缘和左边缘的像素分别在l0-pd至l3-pd方向上的单方向代价聚合结果不可以直接取默认值。
[0167]
需要说明的是,图20中以将目标图像等分为待聚合区域的大小均为16
×
16像素的9个区块为例。
[0168]
本技术实施例提供的图像处理方法,通过从存储器中读取第二区块的待聚合区域中的多个第二像素中部分像素在多个预设方向中的至少一个预设方向上的单方向代价聚合结果,并基于该部分像素的单方向代价聚合结果计算得到该多个第二像素中其他像素的第二代价聚合结果,实现了基于一区块的待聚合区域中的部分像素在至少一个方向上的单方向代价聚合结果,计算得到该区块的待聚合区域中其他像素的第一代价聚合结果的方式。与仅基于公式2计算得到区块的待聚合区域中像素的第二代价聚合结果相比,上述方法扩大了计算像素的第二代价聚合结果的方法范围,提高了计算像素的第二代价聚合结果的灵活性。
[0169]
在又一个实施例中,可以根据预定的处理顺序来计算所述多个区块各自对应的第一代价聚合结果和第二代价聚合结果,即所述多个区块之间存在预定的处理顺序,第二方向为多个预设方向;所述计算得到位于所述多个区块中第二区块的待聚合区域中的多个第二像素在第二方向上的第二代价聚合结果,具体可以包括:
[0170]
基于所述多个区块中目标区块的待聚合区域中的部分边缘像素在所述多个预设方向中的至少一个所述预设方向上的单方向代价聚合结果,计算得到位于所述多个区块中第二区块的待聚合区域中多个第二像素在第二方向上的第二代价聚合结果。
[0171]
其中,第二代价聚合结果是指像素的匹配代价在第二方向上代价聚合的结果。可以理解的是,在第二方向为多个预设方向情况下,第二代价聚合结果可以为该多个预设方向中各方向上的单方向代价聚合的结果之和。以第二方向为图3所示的l4_pd至l7_pd为例,目标区块的待聚合区域中一像素的第二代价聚合结果可以为该像素在l4_pd、l5_pd、l6_pd以及l7_pd分别的单方向代价聚合结果的和。
[0172]
所述预定的处理顺序中所述目标区块位于所述第二区块之前,且所述目标区块的待聚合区域与第二区块的待聚合区域位置相邻。
[0173]
针对于图12b所示的9个区块,假设图12b所示的9个区块的待聚合区域组成了一张完整的目标图像,且第二方向包括l0-pd至l3-pd,则图12b所示的9个区块的处理顺序例如可以为区块1

区块2

区块3

区块4

区块5

区块6

区块7

区块8

区块9。基于此,以第二区块为图12b中的区块2为例,第二区块的目标区块可以为区块1。以第二区块为图12b中的区块5为例,第二区块的目标区块可以为区块2和区块4。
[0174]
在一个实施例中,在第二方向为多个预设方向情况下,所述多个预设方向包括向上方向,所述部分边缘像素包括所述目标区块的待聚合区域中位于下边缘的像素。
[0175]
在另一个实施例中,在第二方向为多个预设方向情况下,所述多个预设方向包括向下方向,所述部分边缘像素包括所述目标区块的待聚合区域中位于上边缘的像素。
[0176]
在又一个实施例中,在第二方向为多个预设方向情况下,所述多个预设方向包括向左方向,所述部分边缘像素包括所述目标区块的待聚合区域中位于右边缘的像素。
[0177]
在又一个实施例中,在第二方向为多个预设方向情况下,所述多个预设方向包括
向右方向,所述部分边缘像素包括所述目标区块的待聚合区域中位于左边缘的像素。
[0178]
需要说明的是,关于目标区块中的部分边缘像素与第二方向的关系,与图14-图17所示的第二区块的部分像素与第二方向的关系类似,在此不再赘述。
[0179]
基于此,针对于图12b所示的9个区块,假设图12b所示的9个区块的待聚合区域组成了一张完整的目标图像,第二方向包括l0-pd至l3-pd,9个区块的处理顺序例如可以为区块1

区块2

区块3

区块4

区块5

区块6

区块7

区块8

区块9,则第二区块的目标区块可以为图21中的区块1-区块8,目标区块中的部分边缘像素可以为图21中黑色框位置的像素和灰色框位置的像素。参考图21,区块1的待聚合区域中右边缘像素在l2-pd、l3-pd上的单方向代价聚合结果可以用于计算区块2的待聚合区域中像素的第二代价聚合结果,区块1的待聚合区域中下边缘像素在l0-pd、l1-pd、l2-pd上的单方向代价聚合结果可以用于计算区块4的待聚合区域中像素的第二代价聚合结果。区块2的待聚合区域中右边缘像素在l2-pd、l3-pd上的单方向代价聚合结果可以用于计算区块3的待聚合区域中像素的第二代价聚合结果,区块2的待聚合区域中下边缘像素在l0-pd、l1-pd、l2-pd上的单方向代价聚合结果可以用于计算区块5的待聚合区域中像素的第二代价聚合结果。区块3的待聚合区域中下边缘像素在l0-pd、l1-pd、l2-pd上的单方向代价聚合结果可以用于计算区块6的待聚合区域中像素的第二代价聚合结果。区块4的待聚合区域中右边缘像素在l2-pd、l3-pd上的单方向代价聚合结果可以用于计算区块5的待聚合区域中像素的第二代价聚合结果,区块4的待聚合区域中下边缘像素在l0-pd、l1-pd、l2-pd上的单方向代价聚合结果可以用于计算区块7的待聚合区域中像素的第二代价聚合结果。区块5的待聚合区域中右边缘像素在l2-pd、l3-pd上的单方向代价聚合结果可以用于计算区块6的待聚合区域中像素的第二代价聚合结果,区块5的待聚合区域中下边缘像素在l0-pd、l1-pd、l2-pd上的单方向代价聚合结果可以用于计算区块8的待聚合区域中像素的第二代价聚合结果。区块6的待聚合区域中下边缘像素在l0-pd、l1-pd、l2-pd上的单方向代价聚合结果可以用于计算区块9的待聚合区域中像素的第二代价聚合结果。区块7的待聚合区域中右边缘像素在l2-pd、l3-pd上的单方向代价聚合结果可以用于计算区块8的待聚合区域中像素的第二代价聚合结果。区块8的待聚合区域中右边缘像素在l2-pd、l3-pd上的单方向代价聚合结果可以用于计算区块9的待聚合区域中像素的第二代价聚合结果。
[0180]
由此可以看出,区块1作为第二区块时,预设的处理顺序中区块1之前不存在其他区块,因此区块1的目标区块为空;区块2作为第二区块时,预设的处理顺序中位于区块2之前且待聚合区域与区块2的待聚合区域相邻的区块为区块1,因此区块1为区块2的目标区块;区块3作为第二区块时,预设的处理顺序中位于区块3之前且待聚合区域与区块3的待聚合区域相邻的区块为区块2,因此区块2为区块3的目标区块;区块4作为第二区块时,预设的处理顺序中位于区块4之前且待聚合区域与区块4的待聚合区域相邻的区块为区块1,因此区块1为区块4的目标区块;区块5作为第二区块时,预设的处理顺序中位于区块5之前且待聚合区域与区块5的待聚合区域相邻的区块为区块2和区块4,因此区块2和区块4为区块5的目标区块;区块6作为第二区块时,预设的处理顺序中位于区块6之前且待聚合区域与区块6的待聚合区域相邻的区块为区块3和区块5,因此区块3和区块5为区块6的目标区块;区块7作为第二区块时,预设的处理顺序中位于区块7之前且待聚合区域与区块7的待聚合区域相邻的区块为区块4,因此区块4为区块7的目标区块;区块8作为第二区块时,预设的处理顺序
中位于区块8之前且待聚合区域与区块8的待聚合区域相邻的区块为区块5和区块7,因此区块5和区块7为区块8的目标区块;区块9作为第二区块时,预设的处理顺序中位于区块9之前且待聚合区域与区块9的待聚合区域相邻的区块为区块6和区块8,因此区块6和区块8为区块9的目标区块。
[0181]
需要说明的是,图21中以将目标图像等分为待聚合区域的大小均为16
×
16像素的9个区块为例。
[0182]
在一个实施例中,所述目标区块包括第一目标区块,在所述预定的处理顺序中所述第一目标区块与所述第二区块相邻;所述第一目标区块的待聚合区域中的部分边缘像素在至少一个所述第二方向上的单方向代价聚合结果存储在集成电路的内部存储器中。其中,部分边缘像素在至少一个所述第二方向上的单方向代价聚合结果是由集成电路中的计算单元计算得到的。以第二区块为图12b中的区块5为例,第一目标区块可以为区块4。
[0183]
由于在预定的处理顺序中第一目标区块是与第二区块相邻,即在计算第一目标区块的第二代价聚合结果之后,因此在与第一目标区块相邻的下一个区块(即第二区块)中需要使用第一目标区块的待聚合区域中的部分边缘像素在至少一个第二方向上的单方向代价聚合结果,通过将第一目标区块的待聚合区域中的部分边缘像素在至少一个第二方向上的单方向代价聚合结果存储在内部存储器,能够便于数据获取,减少对于集成电路与外部存储器之间带宽的占用,减少处理耗时。
[0184]
在一个实施例中,所述目标区块包括第二目标区块,在所述预定的处理顺序中所述第二目标区块与所述第二区块间隔;所述第二目标区块的待聚合区域中的部分边缘像素在至少一个所述第二方向上的单方向代价聚合结果存储在所述集成电路的外部存储器中。其中,部分边缘像素在至少一个所述第二方向上的单方向代价聚合结果是由集成电路中的计算单元计算得到的。以第二区块为图12b中的区块5为例,第二目标区块可以为区块2。
[0185]
由于在预定的处理顺序中第二目标区块是与第二区块间隔,即未与第二区块相邻,即在计算第二目标区块的第二代价聚合结果之后,因此在与第二目标区块相邻的下一个区块(即第二区块之外的其他区块)中并不需要使用第二目标区块的待聚合区域中的部分边缘像素在至少一个第二方向上的单方向代价聚合结果,通过将第二目标区块的待聚合区域中的部分边缘像素在至少一个第二方向上的单方向代价聚合结果存储在外部存储器,能够减少对于内部存储器的占用。
[0186]
本技术实施例提供的图像处理方法,通过基于多个区块中目标区块的待聚合区域中的部分边缘像素在多个预设方向中的至少一个预设方向上的单方向代价聚合结果,计算得到位于第二区块的待聚合区域中多个第二像素在第二方向上的第二代价聚合结果,实现了在计算第二聚合代价的过程中,基于计算得到的之前区块的待聚合区域中部分边缘像素在至少一个预设方向上的单方向代价聚合结果,计算其他区块的待聚合区域中像素在第二方向上的第二代价聚合结果,与需要先进行先前处理获得以获得第二区块的待聚合区域中部分像素在至少一个预设方向上的单方向代价聚合结果,以恢复得到第二区块的待聚合区域中其他像素在至少一个预设方向上的单方向代价聚合结果,从而计算得到二区块的待聚合区域中像素在第二方向上的第二代价聚合结果相比,省去了先前处理,减少了计算量,减少了处理时长,提高了处理帧率。
[0187]
图22为本技术又一实施例提供的图像处理方法的流程示意图,本实施例前述实施
例的基础上,主要描述了采用集成电路中的集成单元进行第一区块的待聚合区域中像素的最终代价聚合计算的一种可选实现方式。如图22所示,本实施例的方法可以包括:
[0188]
步骤221,采用集成电路中的一组计算单元,基于多个区块中第一区块的第一重叠区域和所述第一区块的待聚合区域中像素的匹配代价,计算得到位于所述第一区块的待聚合区域中的多个第一像素在第一方向上的第一代价聚合结果。
[0189]
需要说明的是,关于计算得到第一代价聚合结果的具体方式,可以参见前述实施例的相关描述,在此不再赘述。
[0190]
步骤222,采用该组计算单元,计算得到位于所述第一区块的待聚合区域中的多个第一像素在第二方向上的第二代价聚合结果。
[0191]
需要说明的是,本实施例中以步骤221在步骤222之前为例。可以理解的是,在其他实施例中,步骤221也可以在步骤222之后,即先计算第二代价聚合结果,再计算第一代价聚合结果。
[0192]
需要说明的是,关于计算得到第一区块中像素的第二代价聚合结果的具体方式,与前述实施例所述的计算第二区块中像素的第二代价聚合结果的具体方式类似,在此不再赘述。
[0193]
步骤223,采用该组计算单元,基于所述第一区块的待聚合区域中的像素在第一方向上的第一代价聚合结果以及在所述第二方向上的第二代价聚合结果,计算得到第一区块的待聚合区域中的像素的第三代价聚合结果。
[0194]
本技术实施例中,所述第一代价聚合结果、所述第二代价聚合结果以及所述第三代价聚合结果具体可以包括像素在视差范围内各视差下的聚合结果。示例性的,某一像素p在视差d下的第一代价聚合结果可以表示为l
第一方向
(p,d),像素p在视差d下的第二代价聚合结果可以表示为l
第二方向
(p,d),像素p在视差d下的第三代价聚合结果可以表示为l
第一方向 第二方向
(p,d)。
[0195]
基于此,所述基于所述多个第二像素在第一方向上的第一代价聚合结果和所述多个第二像素在所述第二方向上的第二代价聚合结果,计算得到所述多个第二像素的第三代价聚合结果,具体可以包括:针对于所述多个第二像素中的各像素,将所述像素在各视差下的第一代价聚合结果与所述像素在各所述视差下的第二代价聚合结果对应相加,得到所述像素在各所述视差下的第三代价聚合结果。需要说明的是,其中的第一代价聚合结果和第二代价聚合结果均为代价聚合的中间结果,第三代价聚合结果为最终代价聚合结果。
[0196]
以视差范围为0到127,第一方向为l0_pd-l3_pd,第二方向为l4_pd-l7_pd为例,某一像素p在视差d下的第一代价聚合结果l
第一方向
(p,d)=l
l0_pd
(p,d) l
l1_pd
(p,d) l
l2_pd
(p,d) l
l3_pd
(p,d),像素p在视差d下的第二代价聚合结果l
第二方向
(p,d)=l
l4_pd
(p,d) l
l5_pd
(p,d) l
l6_pd
(p,d) l
l7_pd
(p,d),像素p在视差d下的第三代价聚合结果l
第一方向 第二方向
(p,d)=l
l0_pd
(p,d) l
l1_pd
(p,d) l
l2_pd
(p,d) l
l3_pd
(p,d) l
l4_pd
(p,d) l
l5_pd
(p,d) l
l6_pd
(p,d) l
l7_pd
(p,d)。其中,l
li_pd
(p,d),i等于0至7,可以表示像素p在方向li_pd上的代价聚合。
[0197]
需要说明的是,对于第三代价聚合结果的存储方式,可以根据需求灵活实现,在一个实施例中,可以将第三代价聚合结果存储在集成电路的外部存储器例如ddr中。
[0198]
可选的,在计算获得第三聚合代价结果之后,还可以基于第三代价聚合结果确定最终视差。基于此,本实施例的方法还可以包括:将所述像素在所述视差范围内聚合结果最
小的视差,作为所述像素的最终视差。例如,假设视差d等于0至127中视差10时,l
第一方向 第二方向
(p,d)的值最小,则10即为像素p的最终视差。在一个实施例中,可以采用所述第二组计算单元计算像素的最终视差。
[0199]
针对于图12b所示的9个区块,假设图12b所示的9个区块的待聚合区域组成了一张完整的目标图像,且第一方向包括l4-pd至l7-pd,第二方向包括l0-pd至l3-pd,9个区块的处理顺序为区块1

区块2

区块3

区块4

区块5

区块6

区块7

区块8

区块9。基于此假设,可以先采用该组计算单元计算,基于区块1的第一重叠区域和区块1的待聚合区域中像素的匹配代价,计算得到位于区块1的待聚合区域中的多个像素在第一方向上的第一代价聚合结果,然后采用该组计算单元计算,计算得到位于区块1的待聚合区域中的多个像素在第二方向上的第二代价聚合结果,之后采用该组计算单元,基于区块1的待聚合区域中的像素在第一方向上的第一代价聚合结果以及在所述第二方向上的第二代价聚合结果,计算得到区块1的待聚合区域中的像素的第三代价聚合结果。进一步的,可以先采用该组计算单元计算,基于区块2的第一重叠区域和区块2的待聚合区域中像素的匹配代价,计算得到位于区块2的待聚合区域中的多个像素在第一方向上的第一代价聚合结果,然后采用该组计算单元计算,计算得到位于区块2的待聚合区域中的多个像素在第二方向上的第二代价聚合结果,之后采用该组计算单元,基于区块2的待聚合区域中的像素在第一方向上的第一代价聚合结果以及在所述第二方向上的第二代价聚合结果,计算得到区块2的待聚合区域中的像素的第三代价聚合结果。
……
,依次类推,直至计算得到最后一个区块(即区块9)区块的待聚合区域中的像素的第三代价聚合结果。
[0200]
本技术实施例提供的图像处理方法,采用一组计算单元先计算第一区块的待聚合区域中的像素在第一方向上的第一代价聚合结果,再采用该组计算单元计算该第一区块的待聚合区域中的像素在第二方向上的第二代价聚合结果,最后采用该组计算单元计算该第一区块的待聚合区域中的像素的最终代价聚合结果,实现了先对一区块的待聚合区域中像素的匹配代价在部分方向上进行聚合,再对该区块的待聚合区域中图像中像素的匹配代价在另一部分方向上进行聚合的串行计算方式。
[0201]
图23为本技术又一实施例提供的图像处理方法的流程示意图,本实施例前述实施例的基础上,主要描述了计算第一区块的待聚合区域中多个第一像素的第一代价聚合结果和计算第二区块的待聚合区域中多个第二像素的第二代价聚合结果计算的一种可选实现方式。如图23所示,本实施例的方法可以包括:
[0202]
步骤231,采用第一组计算单元,基于多个区块中第一区块的第一重叠区域和所述第一区块的待聚合区域中像素的匹配代价,计算得到位于所述第一区块的待聚合区域中的多个第一像素在第一方向上的第一代价聚合结果。
[0203]
本步骤中,所述多个区块是通过对目标图像划分得到的部分区域重叠的多个区块。所述多个区块之间存在一定的处理顺序。所述处理顺序可以包括针对第一组计算单元的第一处理顺序。以将目标图像划分为图12b所示的9个区块,多个区块具体可以为图12b中的区块1至区块9为例,9个区块之间第一处理顺序例如可以为区块9

区块8

区块7

区块6

区块5

区块4

区块3

区块2

区块1,当然,在其他实施例中,多个区块之间的第一处理顺序还可以为其他形式,本技术对此不做限定。
[0204]
所述第一组计算单元是集成电路中的一组计算单元,第一组计算单元可以用于计
算多个区块中第一区块的待聚合区域中的多个第一像素在第一方向上的第一代价聚合结果。
[0205]
需要说明的是,关于计算得到第一代价聚合结果的具体方式,可以参见前述实施例的相关描述,在此不再赘述。
[0206]
步骤232,采用第二组计算单元,计算得到位于第二区块的待聚合区域中的多个第二像素在第二方向上的第二代价聚合结果。
[0207]
本步骤中,所述多个区块之间的处理顺序还可以包括针对第二组计算单元的第二处理顺序,需要说明的是,在一个实施例中第二处理顺序可以与第一处理顺序一致,在另一个实施例中第二处理顺序可以与第一处理顺序不一致。同样,以将目标图像划分为如图12b所示的9个区块为例,9个区块之间第二处理顺序例如可以为区块1

区块2

区块3

区块4

区块5

区块6

区块7

区块8

区块9,当然,在其他实施例中,多个区块之间的第二处理顺序还可以为其他形式,本技术对此不做限定。
[0208]
所述第二组计算单元是集成电路中的另一组计算单元,第二组计算单元和第一组计算单元是集成电路中并行处理的两组计算单元,即第一计算单元和第二计算单元可以并行进行计算,与串行计算相比,有利于减少计算耗时。第二组计算单元可以用于计算多个区块中第二区块的待聚合区域中的多个第二像素在第二方向上的第二代价聚合结果。
[0209]
本技术实施例提供的图像处理方法,通过采用第一组计算单元,基于多个区块中第一区块的第一重叠区域和第一区块的待聚合区域中像素的匹配代价,计算得到位于第一区块的待聚合区域中的多个第一像素在第一方向上的第一代价聚合结果,采用第二组计算单元,计算得到位于第二区块的待聚合区域中的多个第二像素在第二方向上的第二代价聚合结果,其中,第一组计算单元和第二组计算单元是集成电路中并行处理的两组计算单元,实现了在计算位于第一区块的待聚合区域中的第一像素在第一方向上的第一代价聚合结果的同时,对位于第二区块的待聚合区域中第二像素在第二方向上的第二代价聚合结果进行计算,与先对一区块的待聚合区域中像素的匹配代价在部分方向上进行聚合,再对该区块的待聚合区域中图像中像素的匹配代价在另一部分方向上进行聚合的串行计算方式相比,可减少几乎一半的计算时间,提升近一倍的帧率,从而减少了处理耗时,提高了处理帧率。
[0210]
可以理解的是,第一代价聚合结果和第二代价聚合结果均是代价聚合的中间结果,为了获得目标图像中某一像素p的最终代价聚合结果,还需要将该像素p的第一代价聚合结果和该像素p的第二代价聚合结果进行相加。因此,在第一处理顺序和第二处理顺序不一致的情况下,需要存储多个区块的代价聚合的中间结果。
[0211]
以第一处理顺序为区块4

区块3

区块2

区块1,第二处理顺序为区块1

区块2

区块3

区块4为例:在时段1内,第一组计算单元计算得到位于区块4的待聚合区域中多个像素4的第一代价聚合结果a1,第二组计算单元计算得到位于区块1的待聚合区域的多个像素1的第二代价聚合结果b1,需要存储第一代价聚合结果a1和第二代价聚合结果b1。之后,在时段2内,第一组计算单元计算得到位于区块3的待聚合区域中多个像素3的第一代价聚合结果a2,第二组计算单元计算得到位于区块2的待聚合区域中多个像素2的第二代价聚合结果b2,需要存储第一代价聚合结果a2和第二代价聚合结果b2。然后,在时段3内,第一组计算单元计算得到位于区块2的待聚合区域中多个像素2的第一代价聚合结果a3,第二组计
算单元计算得到位于区块3的待聚合区域中多个像素3的第二代价聚合结果b3。另外,由于区块2的多个像素2的第二代价聚合结果b2在之前时段已获得,因此时段3内在计算得到区块2的多个像素2的第一代价聚合结果之后,可以直接基于在时段2内计算得到的区块2的该多个像素2的第二代价聚合结果b2和时段3内计算得到的区块2的该多个像素2的第一代价聚合结果a3计算得到该多个像素2的最终代价聚合结果,类似的,由于区块3的该多个像素3的第一代价聚合结果a2在之前时段已获得,因此在时段3计算得到区块3的该多个像素3的第二代价聚合结果之后,可以直接基于在时段2内计算得到的区块3的该多个像素3的第一代价聚合结果a2和时段3内计算得到的区块3的该多个像素3的第二代价聚合结果b3计算得到该多个像素3的最终代价聚合结果,从而无需在存储器中存储区块2的该多个像素2第一代价聚合结果a3和区块3的该多个像素3的第二代价聚合结果b3。最后,在时段4内,第一组计算单元计算得到位于区块1的待聚合区域中该多个像素1的第一代价聚合结果a4,第二组计算单元计算得到位于区块4的待聚合区域中该多个像素4的第二代价聚合结果b4。另外,由于区块1的该多个像素1的第二代价聚合结果b1在之前时段已获得,因此时段4内在计算得到区块1的待聚合区域中该多个像素1的第一代价聚合结果a4之后,可以直接基于在时段1内计算得到的区块1的待聚合区域中该多个像素1的第二代价聚合结果b1和时段4内计算得到的区块1的该多个像素1的第一代价聚合结果a4计算得到该多个像素1的最终代价聚合结果,类似的,由于区块4的该多个像素4的第一代价聚合结果a1在之前时段已获得,因此在时段4计算得到区块4的该多个像素4的第二代价聚合结果b4之后,可以直接基于在时段1内计算得到的区块4的该多个像素4的第一代价聚合结果a1和时段4内计算得到的区块4的该多个像素4的第二代价聚合结果b4计算得到该多个像素4的最终代价聚合结果,从而无需在存储器中存储区块1的该多个像素1的第一代价聚合结果a4和区块4的该多个像素4的第二代价聚合结果b4。
[0212]
需要说明的是,时段1至时段4是相邻且时间由早至晚的4个时段。像素1至像素4是为了区分区块1-区块4中不同区块的像素。
[0213]
可以看出,在时段1至时段4的处理过程中,存在存储设备中需要同时存储多个像素4的第一代价聚合结果a1、多个像素3的第一代价聚合结果a2、多个像素1的第二代价聚合结果b1和多个像素2的第二代价聚合结果b2。因此,一共需要用于存储4个中间结果的、具有特定大小的存储单元,其中,一个特定大小的存储单元等于一个区块的待聚合区域中各像素在第一方向下的第一代价聚合结果的大小之和,或者等于一个区块的待聚合区域中各像素在第二方向下的第二代价聚合结果的大小之和,对存储空间的容量要求较高。即,在第一处理顺序和第二处理顺序不一致的情况下,需要同时存储较多的中间结果,对存储空间的容量要求较高。其中,第一方向和第二方向为多个预设方向,并且第一方向和第二方向包括的方向不相同。
[0214]
为了降低对于存储空间的容量要求,第一处理顺序和第二处理顺序可以一致,在所述处理顺序中所述第一区块和所述第二区块可以相邻,且处理顺序中第二区块可以位于第一区块之前。例如,第一处理顺序和第二处理顺序均可以为区块1

区块2

区块3

区块4,参考图24:在时间t由t0秒至t1秒的一段时间内,第一组计算单元计算得到位于区块1的待聚合区域中多个像素的第一代价聚合结果a1’,此时,第一代价聚合结果a1’需要被存储。在时间t由t1秒至t2秒的一段时间内,第一组计算单元计算得到位于区块2的待聚合区域中
access memory,sram),集成电路的外部存储器例如可以为双倍速率同步动态随机存储器(double data rate synchronous dynamic random access memory,ddr sdram)(简称为ddr)。
[0219]
需要说明的是,关于采用第一组计算单元计算得到位于第一区块的待聚合区域中多个像素的第一代价聚合结果的具体方式,可以参见前述实施例的相关描述,在此不再赘述。
[0220]
步骤252,采用第二组计算单元,计算得到位于第二区块的待聚合区域中的多个第二像素在第二方向上的第二代价聚合结果,以及基于所述多个第二像素在第一方向上的第一代价聚合结果和所述多个第二像素在所述第二方向上的第二代价聚合结果,计算得到所述多个第二像素的第三代价聚合结果。
[0221]
本步骤中,所述第二区块与所述第一区块相邻,且处理顺序中所述第二区块位于所述第一区块之前。关于采用第二组计算单元计算得到位于第二区块的待聚合区域中多个像素的第二代价聚合结果的具体方式,可以参见前述实施例的相关描述,在此不再赘述。
[0222]
需要说明的是,在执行步骤252之前,已计算得到位于所述第二区块的待聚合区域中多个第二像素在第一方向上的第一代价聚合结果。可选的,可以是由所述第一组计算单元计算得到位于所述第二区块的待聚合区域中多个第二像素在第一方向上的第一代价聚合结果,或者,可以由所述第一组计算单元之外的其他计算单元计算得到位于所述第二区块的待聚合区域中多个第二像素在第一方向上的第一代价聚合结果。
[0223]
对于之前已计算得到的位于所述第二区块的待聚合区域中多个第二像素在第一方向上的第一代价聚合结果,需要先存储在所述集成电路的内部存储设备或所述集成电路的外部存储设备中。
[0224]
在一个实施例中,位于所述第一区块的待聚合区域中的第一像素的第一代价聚合结果和位于所述第二区块的待聚合区域中的第二像素的第一代价聚合结果均存储在所述集成电路的内部存储器中。通过将位于第一区块的待聚合区域中多个第一像素的第一代价聚合结果和位于第二区块的待聚合区域中的多个第二像素的第一代价聚合结果均存储在内部存储器中,与存储在外部存储器相比,有利于提高第一代价聚合结果的存取效率,减少对于集成电路与外部存储器之间带宽的占用。
[0225]
可选的,位于所述第一区块的待聚合区域中的多个第一像素的第一代价聚合结果和位于所述第二区块的待聚合区域中的多个第二像素的第一代价聚合结果,可以共用所述内部存储器中的同一块存储空间。具体的,在一段时间内,内部存储器中的一存储空间中可以存储位于所述第二区块的待聚合区域中的第二像素的第一代价聚合结果,在与该段时间之后且与该段时间相邻的另一段时间内,内部存储器中的该存储空间中可以存储位于所述第一区块的待聚合区域中的第一像素的第一代价聚合结果。通过位于第一区块的待聚合区域中像素的第一代价聚合结果和位于第二区块的待聚合区域中像素的第一代价聚合结果,共用内部存储器中的同一块存储空间,能够实现需要同时存储的中间结果可以等于1个特定大小,有利于减小进一步聚合的中间结果对于内部存储器的占用,节省内部存储空间的存储资源,降低对于内部存储空间的容量要求,节省成本。假设单个区块的大小为32
×
32像素,代价聚合结果的位宽为16比特(bit)且最大视差(disparity)等于128,则同时存储1个特定大小的中间结果的方式,需要2mbit的存储空间。
[0226]
在一个实施例中,所述第一组计算单元和所述第二组计算单元的单次计算均占用单个时钟周期。示例性的,单次计算可以针对单个像素在全部视差进行计算,或者,单次计算可以针对单个像素在部分视差进行计算,或者,单次计算可以针对多个像素在全部视差下进行计算。
[0227]
可选的,在第一组计算单元和第二组计算单元的单次计算均占用单个时钟周期情况下,可以采用如下方式一或方式二实现位于所述第一区块的待聚合区域中的第一像素的第一代价聚合结果和位于所述第二区块的待聚合区域中的第二像素的第一代价聚合结果,共用所述内部存储器中的同一块存储空间。
[0228]
方式一
[0229]
一个时钟周期内,所述第一组计算单元计算得到的第一数据,被存入所述内部存储器中该时钟周期内所述第二组计算单元计算使用的第二数据对应的存储空间。其中,所述第一数据为所述第一像素的第一代价聚合结果的数据,所述第二数据为所述第二像素的第一代价聚合结果的数据。由此,可以实现一个时钟周期内,计算得到的第一像素的第一代价聚合结果,占用该时钟周期内计算使用的第二像素的第一代价聚合结果。
[0230]
需要说明的是,所述数据的大小与单次计算针对的范围相关。示例性的,在单次计算可以针对单个像素在全部视差进行计算的情况下,所述数据的大小可以为单个像素在全部视差下的第一代价聚合结果的大小;在单次计算可以针对单个像素在部分视差进行计算的情况下,所述数据的大小可以为单个像素在部分视差下的第一代价聚合结果的大小;在单次计算可以针对多个像素在全部视差下进行计算的情况下,所述数据的大小可以为多个像素在全部视差下的第一代价聚合结果的大小。
[0231]
在一个实施例中,所述内部存储器可以包括第一内部存储器,所述第一内部存储器可以为单端口内部存储器,通过所述第一内部存储器是单端口内部存储器,有利于节省成本;或者,第一内部存储器可以为作为单端口内部存储器使用的其他类型内部存储器(例如,双端口内部存储器),本实施例的方法还可以包括:在第一时钟周期内,从所述第一内部存储器的目标存储空间中读取所述第二数据以及与所述第二数据相邻的第三数据,并缓存所述第一组计算单元计算得到的所述第一数据。其中,所述第二数据用于所述第二组计算单元在所述第一时钟周期内计算第三代价聚合结果;所述第三数据为所述第二像素的第一代价聚合结果的数据,所述第三数据用于所述第二组计算单元在第二时钟周期内计算第三代价聚合结果;所述第二时钟周期为所述第一时钟周期的下一个时钟周期。
[0232]
基于此,可以实现通过在第一时钟周期内单次读取第一内部存储器,可以读取到用于第二组计算单元在相邻的第一时钟周期和第二时钟周期内计算第三代价聚合结果的第一代价聚合结果,即每隔一个时钟周期从第一内部存储器中进行一次读取,有利于减少针对第一内部存储器的读取次数,提高读取效率。
[0233]
例如,如图26所示,在时钟周期1内,可以从第一内部存储器中读取用于第二组计算单元在时钟周期1内进行计算的第二像素的第一代价聚合结果的数据k1,以及用于第二组计算单元在时钟周期2内进行计算的第二像素的第一代价聚合结果的数据k2;之后,在时钟周期3内,可以从第一内部存储器中读取用于第二组计算单元在时钟周期3内进行计算的第二像素的第一代价聚合结果的数据k3,以及用于第二组计算单元在时钟周期4内进行计算的第二区块中第二像素的第一代价聚合结果的数据k4;
……
,依次类推。其中,第二像素
即为第二区块中的像素,时钟周期1、时钟周期3即为第一时钟周期,时钟周期2、时钟周期4即为第二时钟周期,数据k1和数据k3为前述的第二数据,数据k2和数据k4为前述的第三数据。
[0234]
进一步的,本实施例的方法还可以包括:在所述第二时钟周期内,将所述第一数据和第四数据写入所述第一内部存储器的所述目标存储空间中;所述第四数据为在所述第二时钟周期内所述第一组计算单元计算得到的所述第一像素的第一代价聚合结果的数据。由此,可以实现通过在第二时钟周期内单次写入第一内部存储器,可以将第一组计算单元在第一时钟周期内和第二时钟周期内计算得到的第一代价聚合结果写入第一内部存储器,即每隔一个时钟周期向第一内部存储器中进行一次写入,有利于减少针对第一内部存储器的写入次数,提高读取效率。另外,通过上述在第一时钟周期内读取两个数据,在第二时钟周期内写入两个数据的方式,使得无需占用用于计算单元计算代价聚合结果之外的其他时钟周期进行数据读写,确保第一组计算单元和第二组计算单元在每个时钟周期均能够进行计算,有利于提高处理效率,减少处理时长。
[0235]
例如,参考图27a,在图26的基础上,在时钟周期1内,可以从第一内部存储器中读取用于第二组计算单元在时钟周期1内进行计算的第二像素的第一代价聚合结果的数据k1,以及用于第一组计算单元在时钟周期2内进行计算的第二像素的第一代价聚合结果的数据k2,第一组计算单元计算得到第一像素的第一代价聚合结果的数据k5,将数据k5进行缓存,并且,第二组计算单元基于数据k1进行第三代价结果的计算。之后,在时钟周期2内,第一组计算单元计算得到第一像素的第一代价聚合结果的数据k6,将数据k5和k6写入原本由数据k1和数据k2占用的目标存储空间,并且,第二组计算单元基于数据k2进行第三聚合代价结果的计算;之后,在时钟周期3内,可以从第一内部存储器中读取用于第二组计算单元在时钟周期3内进行计算的第二像素的第一代价聚合结果的数据k3,以及用于第一组计算单元在时钟周期4内进行计算的第二像素的第一代价聚合结果的数据k4,第一组计算单元计算得到第一像素的第一代价聚合结果的数据k7,将数据k7进行缓存,并且,第二组计算单元基于数据k3进行第三代价结果的计算。之后,在时钟周期4内,第一组计算单元计算得到第一像素的第一代价聚合结果的数据k8,将数据k7和k8写入原本由数据k3和数据k4占用的目标存储空间,并且,第二组计算单元基于数据k4进行第三代价结果的计算;
……
,依次类推。其中,第一像素即为第一区块中的像素,第二像素即为第二区块中的像素,数据k5和数据k7即为前述的第一数据,数据k1和数据k3即为前述的第二数据,数据k2和数据k4即为前述的第三数据,数据k6和数据k8即为前述的第四数据。
[0236]
然而,本技术并非限于此。在另一实施方式中,所述内部存储器可以包括一个第一内部存储器,且所述第一内部存储器可以为双端口内部存储器。例如,如图27b所示,在时钟周期1内,可以从第一内部存储器中读取用于第二组计算单元在时钟周期1内进行计算的第二像素的第一代价聚合结果的数据k1,并将第一组计算单元在时钟周期1内计算得到第一像素的第一代价聚合结果的数据k5写入第一内部存储器中原本由数据k1占用的目标存储空间;之后,在时钟周期2内,可以从第一内部存储器中读取用于第二组计算单元在时钟周期2内进行计算的第二像素的第一代价聚合结果的数据k2,并将第一组计算单元在时钟周期2内计算得到第一像素的第一代价聚合结果的数据k6写入第一内部存储器中原本由数据k2占用的目标存储空间;之后,在时钟周期3内,可以从第一内部存储器中读取用于第二组
计算单元在时钟周期3内进行计算的第二像素的第一代价聚合结果的数据k3,并将第一组计算单元在时钟周期3内计算得到第一像素的第一代价聚合结果的数据k7写入第一内部存储器中原本由数据k3占用的目标存储空间;之后,在时钟周期4内,可以从第一内部存储器中读取用于第二组计算单元在时钟周期4内进行计算的第二像素的第一代价聚合结果的数据k4,并将第一组计算单元在时钟周期4内计算得到第一像素的第一代价聚合结果的数据k8写入第一内部存储器中原本由数据k4占用的目标存储空间;
……
,依次类推。其中,第一像素即为第一区块中的像素,第二像素即为第二区块中的像素,时钟周期1、时钟周期3即为第一时钟周期,时钟周期2、时钟周期4即为第二时钟周期,数据k1和数据k3即为第二数据,数据k2和数据k4即为第三数据,数据k5和数据k7即为第一数据,数据k6和数据k8即为第四数据。
[0237]
需要说明的是,为了便于表示在同一时钟周期内读取和写入的数据占第一内部存储器的同一存储空间,图9b中第一内部存储器中存储的灰色线条填充表示的数据表示在对应时钟周期需要读取的数据。
[0238]
在单次计算可以针对单个像素在部分视差进行计算的情况下,假设单个区块的大小为32
×
32像素,最大视差等于128,单个时钟周期计算的视差数量为dper,dper小于128,第一代价聚合结果的位宽为16bit,则单个时钟周期内第二组计算单元计算消耗的第二像素的第一代价聚合结果的大小为dper
×
16(即第二数据的大小为dper
×
16),第一组计算单元计算得到的第一像素的第一代价聚合结果的大小也为dper
×
16(即第一数据的大小也为dper
×
16),由此可以将第一内部存储器的位宽设置为dper
×
16
×
2,位宽增加一倍,深度减小50%,容量不变。
[0239]
方式二
[0240]
第二时钟周期内所述第一组计算单元计算得到的第一数据,被存入所述内部存储器中第一时钟周期内所述第二组计算单元计算使用的第二数据对应的存储空间;其中,所述第一数据为所述第一像素的第一代价聚合结果的数据,所述第二数据为所述第二像素的第一代价聚合结果的数据;所述第二时钟周期为所述第一时钟周期的下一个时钟周期。由此,可以实现一时钟周期内计算得到的第一像素的第一代价聚合结果,占用相邻时钟周期内计算使用的第二像素的第一代价聚合结果。需要说明的是,关于数据的具体说明可以参见前述方式一中的相关描述,在此不再赘述。
[0241]
在一个实施例中,所述内部存储器可以包括第一内部存储器和第二内部存储器。所述第一内部存储器和所述第二内部存储器可以为单端口内部存储器,通过所述第一内部存储器和所述第二内部存储器均是单端口内部存储器,有利于节省成本;或者,第一内部存储器和第二内部存储器可以为作为单端口内部存储器使用的其他类型内部存储器,本实施例的方法还可以包括:在第一时钟周期内,将所述第一组计算单元计算得到的所述第一数据写入所述第一内部存储器中,并从所述第二内部存储器的目标存储空间中读取所述第二数据;所述第二数据用于所述第二组计算单元在所述第一时钟周期内计算第三代价聚合结果。
[0242]
基于此,可以实现在一个时钟周期内从一个内部存储器中读取到用于第二组计算单元在该周期内进行计算的第二像素的第一代价聚合结果,并将第一计算单元在该周期计算得到的第一像素的第一代价聚合结果存储至另一内部存储器中,即在同一时钟周期内分
别针对不同的内部存储器进行读或写,有利于降低对于内部存储器的端口数量要求,降低成本。另外,能够使得针对第一代价聚合结果的读或写,无需占用用于计算单元计算代价聚合结果之外的其他时钟周期进行数据读写,确保第一组计算单元和第二组计算单元在每个时钟周期均能够进行计算,有利于提高处理效率,减少处理时长。
[0243]
进一步的,本实施例的方法还可以包括:在第二时钟周期内,从所述第一内部存储器中读取第三数据,并将所述第二组计算单元计算得到的第四数据写入所述第二内部存储器的所述目标存储空间中。其中,所述第三数据为所述第二像素的第一代价聚合结果的数据,所述第三数据用于所述第二组计算单元在第二时钟周期内计算得到的第三代价结果;所述第四数据为在所述第二时钟周期内所述第一组计算单元计算得到的所述第一像素的第一代价聚合结果的数据;所述第二时钟周期为所述第一时钟周期的下一个时钟周期。由此,可以实现第一像素的第一代价聚合结果和第二像素的第一代价聚合结果,共用两个内部存储器的存储空间。
[0244]
例如,如图28所示,在时钟周期1内,可以从第二内部存储器中读取用于第二组计算单元在时钟周期1内进行计算的第二像素的第一代价聚合结果的数据k1,并将第一组计算单元在时钟周期1内计算得到第一像素的第一代价聚合结果的数据k5写入第一内部存储器中;之后,在时钟周期2内,可以从第一内部存储器中读取用于第二组计算单元在时钟周期2内进行计算的第二像素的第一代价聚合结果的数据k2,并将第一组计算单元在时钟周期2内计算得到第一像素的第一代价聚合结果的数据k6写入第二内部存储器中原本由数据k1占用的目标存储空间;之后,在时钟周期3内,可以从第二内部存储器中读取用于第二组计算单元在时钟周期3内进行计算的第二像素的第一代价聚合结果的数据k3,并将第一组计算单元在时钟周期3内计算得到第一像素的第一代价聚合结果的数据k7写入第一内部存储器中原本由数据k2占用的目标存储空间;之后,在时钟周期4内,可以从第一内部存储器中读取用于第二组计算单元在时钟周期4内进行计算的第二像素的第一代价聚合结果的数据k4,并将第一组计算单元在时钟周期4内计算得到第一像素的第一代价聚合结果的数据k8写入第二内部存储器中原本由数据k3占用的目标存储空间;
……
,依次类推。其中,第一像素即为第一区块中的像素,第二像素即为第二区块中的像素,时钟周期1、时钟周期3即为第一时钟周期,时钟周期2、时钟周期4即为第二时钟周期,数据k1和数据k3即为第二数据,数据k2和数据k4即为第三数据,数据k5和数据k7即为第一数据,数据k6和数据k8即为第四数据。
[0245]
可选的,所述多个区块中特定区块的待聚合区域中的多个像素在第一方向上的第一聚合结果,可以是在所述先前处理的过程中获得,所述特定区块为所述多个区块中经所述第二组计算单元第一个处理的区块。通过在所述先前处理的过程中计算获得所述特定区块的待聚合区域中的多个像素在第一方向上的第一聚合结果,可以减少第一计算单元的需要处理的区块的数量,有利于减少处理时长,提高处理帧率。
[0246]
假设处理顺序为前述的区块1

区块2

区块3

区块4,在先前处理的过程中可以预先获得区块1的待聚合区域中多个像素在第一方向上的第一代价聚合结果,参考图29:在时间t由t0秒至t1秒的一段时间内,第一组计算单元可以计算得到位于区块2的待聚合区域中多个像素在第一方向上的第一代价聚合结果,第二组计算单元可以计算得到位于区块1的待聚合区域中多个像素在第二方向上的第二代价聚合结果,并基于在先前处理的过程中
获得的位于区块1的待聚合区域中多个像素在第一方向上的第一代价聚合结果,计算得到位于区块1的待聚合区域中的多个像素的第三代价聚合结果。在时间t由t1秒至t2秒的一段时间内,第一组计算单元可以计算得到位于区块3的待聚合区域中多个像素在第一方向上的第一代价聚合结果,第二组计算单元可以计算得到位于区块2的待聚合区域中多个像素在第二方向上的第二代价聚合结果,并基于第一组计算单元在t0秒至t1秒的时段内计算获得的区块2的待聚合区域中多个像素在第一方向上的第一代价聚合结果,计算得到位于区块2的待聚合区域中的多个像素的第三代价聚合结果。在时间t由t2秒至t3秒的一段时间内,第一组计算单元可以计算得到位于区块4的待聚合区域中多个像素在第一方向上的第一代价聚合结果,第二组计算单元可以计算得到位于区块3的待聚合区域中多个像素在第二方向上的第二代价聚合结果,并基于第一组计算单元在t1秒至t2秒的时段内计算获得的区块3的待聚合区域中多个像素在第一方向上的第一代价聚合结果,计算得到位于区块3的待聚合区域中的多个像素的第三代价聚合结果。在时间t由t3秒至t4秒的一段时间内,第二组计算单元可以计算得到位于区块4的待聚合区域中多个像素在第二方向上的第二代价聚合结果,并基于第一组计算单元在t2秒至t3秒的时段内计算获得的区块4的待聚合区域中多个像素在第一方向上的第一代价聚合结果,计算得到位于区块4的待聚合区域中的多个像素的第三代价聚合结果。对比图29和图24可以看出,在先前处理过程中获得区块1的待聚合区域中的多个像素在第一方向上的第一聚合结果,较由第一组计算单元计算得到区块1的待聚合区域中的多个像素在第一方向上的第一聚合结果,可以缩短针对整个图像进行处理的耗时,即将耗时由t5秒缩短至t4秒。
[0247]
需要说明的是,关于基于第一聚合代价结果和第二聚合代价结果,计算得到第三代价聚合结果的具体方式,可以参见前述实施例的相关描述,在此不再赘述。
[0248]
本技术实施例提供的图像处理方法,通过采用第一组计算单元,基于多个区块中第一区块的第一重叠区域和第一区块的待聚合区域中像素的匹配代价,计算得到位于第一区块的待聚合区域中的多个第一像素在第一方向上的第一代价聚合结果,采用第二组计算单元,计算得到位于第二区块的待聚合区域中的多个第二像素在第二方向上的第二代价聚合结果,以及多个第二像素在第一方向上的第一代价聚合结果和多个第二像素在第二方向上的第二代价聚合结果,计算得到多个第二像素的第三代价聚合结果,其中,第一区块和第二区块相邻且第二区块位于第一区块之前,实现了在计算位于第一区块的待聚合区域中的第一像素在第一方向上的第一代价聚合结果的同时,对位于第二区块的待聚合区域中第二像素在第二方向上的第二代价聚合结果以及第二像素的最终代价聚合结果进行计算,有利于减少处理耗时,提高处理帧率,并且能够减少需要存储的中间数据,降低对于存储器的容量要求,有利于节省成本。
[0249]
图30为本技术一实施例提供的图像处理装置的结构示意图,对应不同视点的两幅图像中的目标图像被划分为部分区域重叠的多个区块,所述多个区块中的第一区块的重叠区域包括目标重叠区域,所述第一区块的目标重叠区域包括所述第一区块中与第一方向对应的第一重叠区域。如图30所示,该装置300可以包括:处理器301和存储器302。
[0250]
所述存储器302,用于存储程序代码;
[0251]
所述处理器301,调用所述程序代码,当程序代码被执行时,用于执行以下操作:
[0252]
获取位于所述第一区块中像素的匹配代价;
[0253]
基于所述第一区块的第一重叠区域和所述第一区块的待聚合区域中像素的匹配代价,计算得到位于所述第一区块的待聚合区域中的多个第一像素在所述第一方向上的第一代价聚合结果。
[0254]
本实施例提供的图像处理装置,可以用于执行前述方法实施例的技术方案,其实现原理和技术效果与方法实施例类似,在此不再赘述。
[0255]
本技术实施例还提供一种集成电路,对应不同视点的两幅图像中的目标图像被划分为部分区域重叠的多个区块,所述多个区块中的第一区块的重叠区域包括所述第一区块中与第一方向对应的第一重叠区域;所述电路包括:计算单元;所述计算单元用于:
[0256]
获取位于所述第一区块中像素的匹配代价;
[0257]
基于所述第一区块的第一重叠区域和所述第一区块的待聚合区域中像素的匹配代价,计算得到位于所述第一区块的待聚合区域中的多个第一像素在所述第一方向上的第一代价聚合结果。
[0258]
本技术实施例还提供一种图像处理装置,该图像处理装置可以包括所述集成电路。
[0259]
图31为本技术一实施例提供的可移动平台的结构示意图,如图31所示,该可移动平台310包括机身311、设置于所述机身上的动力系统312、拍摄装置313和前述实施例所述的图像处理装置314;
[0260]
所述动力系统312,用于为所述可移动平台提供动力;
[0261]
所述拍摄装置313,用于在所述可移动平台飞行过程中进行拍摄,以获得对应不同视点的两幅图像。
[0262]
可选的,可移动平台310还可以包括云台315,拍摄装置313可以通过云台315设置在机身311上。当然,可移动平台除上述列出装置外,还可以包括其他元件或装置,这里不一一例举。
[0263]
本技术实施例提供一种图像处理方法、集成电路、装置、可移动平台及存储介质,通过整张目标图像被划分为部分区域重叠的多个区块,多个区块中的第一区块的重叠区域包括目标重叠区域,所述目标重叠区域包括与第一方向对应的第一重叠区域,基于第一区块的第一重叠区域和待聚合区域中像素的匹配代价,计算得到第一区块中的像素在第一方向上的代价聚合结果,实现了基于第一区块中像素的匹配代价计算得到位于第一区块的待聚合区域中像素在第一方向上的第一代价聚合结果,使得不同区块之间第一代价聚合结果的计算之间是相互独立的,代价聚合可以不再限制不同区块之间像素的处理顺序,与针对整张目标图像沿着第一方向依次确定整张图像中各像素的代价聚合结果,对像素的处理顺序要求较高相比,降低了对于处理顺序的要求,从而减少了对于代价聚合的实现方式的限制。
[0264]
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
[0265]
最后应说明的是:以上各实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述各实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依
然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献