CN114219699B - 匹配代价处理方法及电路和代价聚合处理方法 - Google Patents

匹配代价处理方法及电路和代价聚合处理方法 Download PDF

Info

Publication number
CN114219699B
CN114219699B CN202210159223.7A CN202210159223A CN114219699B CN 114219699 B CN114219699 B CN 114219699B CN 202210159223 A CN202210159223 A CN 202210159223A CN 114219699 B CN114219699 B CN 114219699B
Authority
CN
China
Prior art keywords
initial cost
cost
register group
register
row
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.)
Active
Application number
CN202210159223.7A
Other languages
English (en)
Other versions
CN114219699A (zh
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.)
Shaoxing Ewa Technology Co ltd
Original Assignee
Shaoxing Ewa 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 Shaoxing Ewa Technology Co ltd filed Critical Shaoxing Ewa Technology Co ltd
Priority to CN202210159223.7A priority Critical patent/CN114219699B/zh
Publication of CN114219699A publication Critical patent/CN114219699A/zh
Application granted granted Critical
Publication of CN114219699B publication Critical patent/CN114219699B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/22Matching criteria, e.g. proximity measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Evolutionary Computation (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • General Engineering & Computer Science (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Image Processing (AREA)

Abstract

本说明书实施例提供一种匹配代价处理方法及电路和代价聚合处理方法,应用于3D视觉图像立体匹配技术领域,其中匹配代价处理方法包括设置初始代价并行计算模块,其中初始代价并行计算模块包括第一寄存器组、第二寄存器组和初始代价计算电路。通过第一寄存器组和第二寄存器组完成数据复用,并通过初始代价计算电路实现高效代价并行计算,而且可将每个初始代价并行计算电路及其对应的寄存器组行作为一个最小的并行深度计算单元加速内核,便于通过灵活配置组合,进而可对原图像进行分块后及在不同视差搜索范围条件下,提高整体匹配代价计算处理效率。

Description

匹配代价处理方法及电路和代价聚合处理方法
技术领域
本发明涉及人工智能技术领域,具体涉及一种立体匹配的匹配代价处理方法及电路和代价聚合处理方法。
背景技术
在图像的立体匹配处理中,匹配代价计算是将变换(如中心编码变换)后的图像对中的每个像素进行匹配,比如对于目标图像中的每个像素,要与其视差范围内的参考图像中的像素进行匹配代价计算,如图1示意。
目前双目立体匹配方案中,如图2所示,匹配代价计算时,通常采用性能良好的处理器进行代价计算,比如采用第一GPU(Graphics Processing Unit,图形处理器)处理参考图像为左图(也称左目图像)、目标图像为右图(也称右目图像)时的代价计算,采用第二GPU处理参考图像为右图、目标图像为左图时的代价计算,因而硬件成本较高,且硬件性能要求较高。同时,在传统的双立体匹配计算架构中和算法执行过程中,因分别采用两个处理器进行各自处理,不能有效复用目标像素部分数据且需要从内部或其他存储单元重新加载,占用较大带宽以及较多功耗,即对于一个参考像素在视差范围内计算完所有匹配代价,在计算下一个参考像素对应视差范围内的初始代价时部分目标像素将需要重新加载,未能有效进行复用使用。
因此,立体匹配方案不仅需要采用性能优良的处理器进行匹配代价计算,而且匹配计算所得的初始代价数据庞大,需要设置庞大的缓存单元对数据进行存储,以及对数据进行重复读写等处理。虽然在采用专门处理器(如多个GPU,如多核处理器等)实现并行加速计算,可部分缓解这些重复数据及其处理过程需要占用大量算力的压力,但是专门处理器不仅成本高,而且系统构成复杂,使得立体匹配算法在各种智能设备上的部署应用受到较多限制,比如对部署应用立体匹配的设备要求具有良好的硬件性能,比如降低部署应用立体匹配的设备对立体匹配响应的性能要求等等,并不利于立体匹配方案在各种场景中进行部署应用。
因此,亟需一种新的匹配代价处理方案。
发明内容
有鉴于此,本说明书实施例提供一种匹配代价处理方法及电路和代价聚合处理方法,以提高立体匹配的应用适应能力,有利于在不同应用场景中部署应用立体匹配,为不同场景进行人工智能应用提供落地方案。
本说明书实施例提供以下技术方案:
本说明书实施例提供一种匹配代价处理方法,包括:
设置初始代价并行计算模块,其中所述初始代价并行计算模块包括第一寄存器组、第二寄存器组和a个并行计算的初始代价计算电路,所述初始代价计算电路包括n+1个代价计算单元,每个代价计算单元包括公共输入端口、目标输入端口和相似度计算电路,所述第二寄存器组包括至少由a行、n+1列的移位寄存器构成的寄存器阵列用于装载目标像素编码数据,所述第一寄存器组包括至少由a行、n+1列的移位寄存器构成的寄存器阵列用于装载参考像素编码数据,a为匹配代价计算的并行度,n+1为视差搜索范围,其中第一寄存器组中的一行寄存器和对应第二寄存器组中的一行寄存器构成一对寄存器行并与对应初始代价计算电路对应;
其中,所述第一寄存器组被设置为:每行移位寄存器采用串行移位输入方式装载n+1个参考像素编码数据;以及,每行移位寄存器采用串行移位输出方式将处于同一目标列上寄存器中的所述参考像素编码数据对应地输出至初始代价计算电路,以在当前计算周期对所述目标列上寄存器中的所述参考像素编码数据进行初始代价并行计算,所述目标列为在所述第一寄存器组中指定的一列;
所述第二寄存器组被设置为:每行移位寄存器采用串行移位输入方式装载n+1个目标像素编码数据;以及,采用并行移位输出方式在所述当前计算周期内将所述目标列的所述参考像素编码数据对应的所述目标像素编码数据对应地输出至a个初始代价计算电路;
所述初始代价计算电路被设置为:n+1个公共输入端口用于输入同一个参考像素编码数据,n+1个目标输入端口用于对应地输入所述同一个参考像素编码数据对应的n+1个目标像素编码数据;以及,在所述当前计算周期控制下,通过n+1个相似度计算电路进行初始代价并行计算,输出初始代价值。
本说明书实施例还提供一种匹配代价处理方法,包括:设置匹配代价处理模块,其中所述匹配代价处理模块包括至少两个初始代价并行计算模块,所述初始代价并行计算模块为本说明中任意一个实施例所述的初始代价并行计算模块。
本说明书实施例还提供一种代价聚合处理方法,包括:
获取初始代价值,所述初始代价值为如本说明书实施例中任意一项实施例中所述匹配代价处理方法输出的初始代价值;
按预设的聚合策略对所述初始代价值进行匹配代价聚合处理,以生成匹配代价的聚合结果。
本说明书实施例还提供一种匹配代价处理电路,包括:匹配代价加速计算模块,其中所述匹配代价加速计算模块被配置为:用于执行如本说明书实施例中任意一项实施例中所述的匹配代价处理方法。
与现有技术相比,本说明书实施例采用的上述至少一个技术方案能够达到的有益效果至少包括:
通过设置第一寄存组、第二寄存器组和初始代价并行计算模块,并利用这些硬件电路进行匹配代价计算,既无需对重复数据进行无效缓存,也无需重复读取数据,以及实现了高效的数据复用,虽然处理中需要增加少量的缓存空间,但所增加的少量缓存空间对需要部署应用立体匹配方案的各类硬件设备来说均可承受,可有效减少并行计算中的数据存储、I/0读写和带宽资源占用,而且这些硬件电路可作为一个最小的并行深度计算单元在各种硬件设备中进行部署应用,提高了匹配代价电路在实际部署应用中的灵活性,可有利于立体匹配方案部署应用到不同性能的硬件设备中。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是对参考像素进行目标像素匹配过程的示意图;
图2是现有匹配方案中匹配代价处理的结构示意图;
图3是本说明书实施例提供的一种匹配代价处理方法的结构示意图;
图4是本说明书实施例提供的一种匹配代价处理方法的结构示意图;
图5是本说明书实施例提供的一种匹配代价处理方法中初始代价计算电路的结构示意图;
图6是本说明书实施例提供的一种匹配代价处理方法中第二寄存器组并行移位输出的示意图;
图7是本说明书实施例提供的一种匹配代价处理方法中数据复用过程的示意图;
图8是本说明书实施例提供的一种匹配代价处理方法中行数据更新的示意图;
图9是本说明书实施例提供的一种匹配代价处理方法中初始代价空间的结构示意图;
图10是本说明书实施例提供的一种匹配代价处理方法的结构示意图;
图11是本说明书实施例提供的一种匹配代价处理方法中相似度计算单元的结构示意图;
图12是本说明书实施例提供的一种匹配代价处理方法中相似度距离计算过程的示意图;
图13A是本说明书实施例提供的一种匹配代价处理方法中利用较小尺寸构成较大尺寸匹配处理的结构示意图;
图13B是本说明书实施例提供的一种匹配代价处理方法中通过多路选择器、多路互连开关构成新匹配代价计算模块的结构示意图;
图14是本说明书实施例提供的一种代价聚合处理方法的流程图;
图15是本说明书实施例提供的一种代价聚合方法中代价聚合电路的结构示意图。
具体实施方式
以下通过特定的具体实例说明本申请的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本申请的其他优点与功效。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。本申请还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本申请的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。应显而易见,本文中所描述的方面可体现于广泛多种形式中,且本文中所描述的任何特定结构及/或功能仅为说明性的。基于本申请,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其它方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目和方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其它结构及/或功能性实施此设备及/或实践此方法。
还需要说明的是,以下实施例中所提供的图示仅以示意方式说明本申请的基本构想,图式中仅显示与本申请中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
另外,在以下描述中,提供具体细节是为了便于透彻理解实例。然而,所属领域的技术人员将理解,可在没有这些特定细节的情况下实践所述方面。术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等描述的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
目前的立体匹配方案,不仅需要采用性能优良的处理器进行匹配代价计算,而且匹配计算所得的初始代价数据庞大,需要设置庞大的缓存单元对数据进行存储,以及对数据进行重复读写等处理需要占用较多算力,不便于立体匹配方案部署于各种应用场景。
如图1至图2所示,目前初始代价计算处理方案中,由于是分别以左图为参考图像、右图为目标图像获得第一组初始代价,以及以右图为参考图像、左图为目标图像获得第二组初始代价,即分别对左图(比如将左图作为参考图像、右图作为目标图像)和右图(比如将右图作为参考图像、左图作为目标图像)进行匹配代价处理,其中在对左图进行代价处理中,GPU读取左图和右目图像的编码比特串后,并行地求取参考图像中像素点p(x,y)和右图(比如将右图作为目标图像)中所有在dmax范围内可能的像素点p'的初始代价,其中dmax为最大视差距离(可简称最大视差),因而dmax范围可理解为搜索时差范围。同理,在对右图进行匹配代价处理时,并行地求取目标图像中各中心像素和参考图像中所有在dmax范围内可能的像素点的初始代价。因此,在初始代价计算处理中,将存在大量重复处理。
例如,对于以左图为参考图像、右图为目标图像进行代价计算中,左图的像素点p(x,y)需要与右图中在最大视差dmax范围内的n+1个目标图像像素点p'(x,y)至p'(x+n+1,y)进行代价计算;而在对左图的像素点p(x+1,y),同样需要对右图中在最大视差dmax范围内的n+1个目标图像像素点p'(x+1,y)至p'(x+n+2,y)进行代价计算。依此类推,直至左图中各个像素点获得最大视差范围dmax内对应的各个初始代价。
例如,对于以右图为参考图像、左图为目标图像进行代价计算中,右图的像素点p'(x,y)需要与左图中在最大视差dmax范围内的n+1个目标图像像素点p(x,y)至p(x+n+1,y)进行代价计算;而在对右图的像素点p' (x+1,y),同样需要对左图中在最大视差dmax范围内的n+1个目标图像像素点p(x+1,y)至p(x+n+2,y)进行代价计算。依此类推,直至右图中各个像素点获得最大视差范围dmax内对应的各个初始代价。
这时,在初始代价计算处理中,左图和右图对应的初始代价中将存在大量重复结果数据。
因此,目前匹配代价计算方案,不仅需要GPU花费较多算力用于计算得到这些重复结果数据,而且针对这些重复结果数据还需要开辟大量缓存单元进行存储,以及在立体匹配的后续步骤,如代价聚合、视差选择等,也需要花销更多资源去读取这些重复结果数据,因而限制了立体匹配处理速率,降低了处理效率,不便于将立体匹配方案部署于各种应用场景中。
为便于立体匹配方案部署于各种应用场景,针对立体匹配方案进行深入研究分析和改进探索,探索出一种新方案,使得新方案可以对部署应用的硬件性能要求不高,而且仍然可以实现硬件并行加速处理。
如图3至图5所示,本说明书实施例提出一种新的匹配代价并行处理思路,避免如前述的重复处理,可降低对加速处理的硬件性能要求,有利于将立体匹配方案部署于各种应用场景中。
为便于说明,图中以双目立体匹配中左图为参考图像和右图为目标图像为例,并对参考图像中每个中心像素进行匹配代价处理为例进行示意说明。
鉴于参考图像中每个中心像素需要与目标图像中在dmax范围内所有目标像素(假设视差搜索范围为n+1,即dmax-dmin=n+1,则目标像素将为n+1个,其中dmax为最大视差搜索范围,dmin为做小视差搜索范围)进行初始代价计算,而且考虑到并行加速处理的并行度为a,这时可先将需要并行处理的a个中心像素(即参考图像中心像素编码比特串,如图中的左图的比特串)采用第一寄存器组缓存,而需要使用到的目标像素(如图中的右图的比特串),即目标像素进行中心变换后所对应的比特串编码,采用第二寄存组对a行n+1列的目标像素进行缓存并复用并行输出,以将各行的寄存器数据并行地输入到初始代价并行计算模块中。
需要说明的是,在本发明中参考像素编码数据及目标像素编码数据指待匹配窗口中目标像素和参考像素的灰度数据、零均值灰度数据、窗口中心变换CENSUS数据等,同时需要进一步说明的是所述初始代价计算模块可以是基于灰度差平方函数、零均值灰度差平方函数、RANK算法函数、汉明距离函数、灰度互相关函数、灰度绝对差函数以及基于自适应支持区域或固定支撑区域或自适应权重系数法等算法函数构建的并行初始代价计算电路模块,其中的相似度计算电路用于计算参考像素与目标像素之间的相似度即初始代价。本发明为了便于理解以中心变换算法即CENSUS算法为例对本发明匹配代价加速并行计算处理电路逻辑架构实现及初始代价计算加速方法进行示意说明。
另外,相似度计算电路为用于执行相似度算子计算的电路单元,因而相似度算子计算的电路单元可根据窗口变换所采用对应的匹配代价算法确定具体的电路形式。
示例1,汉明距离计算,可通过累加计算可获得参考像素所在窗口和对应目标像素所在窗口的汉明距离,这时相似度计算电路可为累加计算电路,比如加法树。
示例2,灰度互相关的匹配代价算法,可将参考像素的向量和对应的目标像素的向量一次输入至初始代价计算电路,此时相似度计算电路的核心可为乘加电路。
示例3,归一化灰度互相关算法,可将一路向量进行点积乘累加运算,另一路各向量元素先进行平方运算,然后累加,各自窗口向量累加完成后,然后进行乘法及开平方运算,相似度计算电路的核心可包括累加电路、乘法器、开平方运算电路等。
上述关于相似度计算电路为示意说明,具体电路形式可根据相似度计算的算法选用对应的电路形式,这里不作限定。
实施中,可在部署应用端(即部署匹配代价处理的应用端)设置初始代价并行计算模块,其中该初始代价并行计算模块包括第一寄存器组、第二寄存器组和a个初始代价计算电路,所述第一寄存器组用于装载参考像素编码数据,所述第二寄存器组用于装载目标像素编码数据,a个初始代价计算电路用于同时进行并行计算,即通过第一寄存器组和第二寄存器组完成数据准备,以及通过初始代价计算电路完成并行计算,其中a为匹配代价计算的并行度,n+1为视差搜索范围。
每个初始代价计算电路包括有n+1个相似度计算电路单元,每个相似度计算电路单元包括一个公共输入端口、一个目标输入端口和一个相似度计算电路。以及,在每个初始代价计算电路中,各公共输入端口均对应地输入参考图像的同一个中心像素点,如图中各公共输入端口输入同一个参考像素(比如参考图像中心像素p(x,y)),而各个目标输入端口各自对应地输入该参考像素对应的目标像素,如图中目标像素0(如目标图像中心像素p'(x,y))输入至目标输入端口0,目标像素1(如目标图像中心像素p'(x+1,y))输入至目标输入端口1,直到目标像素n(如目标图像中心像素p'(x+n+1,y))输入至目标输入端口n等。
具体地,针对参考图像的像素,即中心像素点p(x,y)对应的中心像素编码比特串zy x输入到初始代价并行计算模块中的第一个初始代价计算电路(即图中第一初始代价计算电路),即第一初始代价计算电路的公共端口均输入参考图像的中心像素点p(x,y);中心像素点p(x,y+1)对应的中心像素编码比特串zy+1 x输入至初始代价并行计算模块中的第二个初始代价计算电路(即图中第二初始代价计算电路);依此类推,中心像素点p(x,y+a-1)对应的中心像素编码比特串zy+a-1 x输入到初始代价并行计算模块中的第a个初始代价计算电路(即图中第a初始代价计算电路)。这样,初始代价并行计算模块中的a个初始代价计算电路均有对应的参考像素,即参考像素各自对应地输入至这些初始代价计算电路中的公共输入端口。
具体地,针对参考图像对应目标图像的各个目标像素,即a个参考像素各自对应的n+1个目标像素点对应地输入到初始代价计算电路中。
其中,第一个参考像素p(x,y)对应的n+1个目标像素(比如装载于第二寄存器组第一行的n+1个目标像素)并行地输入至第一个初始代价计算电路(即图中第一初始代价计算电路),即目标图像的目标像素点p'(x,y)对应的中心像素编码比特串Zy 0'输入到第一个初始代价计算电路的第一个目标输入端口(即目标输入端口0);目标像素点p'(x+1,y)对应的中心像素编码比特串Zy 1'输入到第一个初始代价计算电路的第二个目标输入端口(即目标输入端口1);依此类推,目标像素点p'(x+n,y)对应的中心像素编码比特串Zy n'输入到第一个初始代价计算电路的第n+1个目标输入端口(即目标输入端口n)。
需要说明的是,在前述说明中,目标像素点p'(x,y)为参考像素点p(x,y)在视差搜索范围内对应的第一个目标像素,依次类推,目标像素点p'(x+n,y)为参考像素点p(x,y)在视差搜索范围内对应的第n+1个目标像素。因此,目标像素点的坐标x、y可以不与参考像素点的坐标x、y完全相同。例如,在前述图2示意图中,可在视差范围内,将最左侧的目标像素点(x-dmax,y)作为第一个目标像素点,第二个目标像素点记为像素点(x-dmax+1,y),依次类推地,第n+1个目标像素点记为像素点(x-dmax+n,y)等,其中dmax为最大视差距离。例如,可将第一个目标像素点标记为p'(x+d_min,y),依次类推,第n+1个目标像素点标记p'(x+n+d_min,y),其中d_min为最小视差距离。因此,这里不对标记方式作限定,下述内容类同。
同理,第二个参考像素p(x,y+1)对应的n+1个目标像素(比如装载于第二寄存器组第二行的n+1个目标像素)并行地输入至第二个初始代价计算电路(即图中第二初始代价计算电路),即目标图像的目标像素点p'(x,y+1)对应的中心像素编码比特串Zy+1 0'输入到第二个初始代价计算电路的第一个目标输入端口(即目标输入端口0);目标图像的目标像素点p'(x+1,y+1)对应的中心像素编码比特串Zy+1 1'输入到第二个初始代价计算电路的第二个目标输入端口(即目标输入端口1);依此类推,目标图像的目标像素点p'(x+n,y+1)对应的中心像素编码比特串Zy+1 n'输入到第二个初始代价计算电路的第n+1个目标输入端口(即目标输入端口n)。
依此类推,第a个参考像素p(x,y+a-1)对应的n+1个目标像素(比如装载于第二寄存器组第a行的n+1个目标像素)并行地输入至第a个初始代价计算电路(即图中第a初始代价计算电路),即目标图像的目标像素点p'(x,y+a-1)对应的中心像素编码比特串Zy+a-1 0'输入到第a个初始代价计算电路的第一个目标输入端口(即目标端口0);目标图像的目标像素点p'(x+1,y+a-1)对应的中心像素编码比特串Zy+a-1 1'输入到第a个初始代价计算电路的第二个目标输入端口(即目标输入端口1);依此类推,目标图像的目标像素点p'(x+n,y+a-1)对应的中心像素编码比特串Zy+a-1 n'输入到第a个初始代价计算电路的第n+1个目标输入端口(即目标输入端口n)。
另外,通过在寄存器组中的每行寄存器采用串行移位输入方式缓存参考像素和目标像素,可对参考像素和目标像素进行装载及更新,为并行计算模块针对一个参考像素的并行计算作数据准备,比如图4中第一寄存器组为右移的寄存器组,各列数据依次右移一列,其中最右侧一列(如图中第一寄存器组中的虚线框一列)在移位中被移除,最后将新一列数据移入到最左一列中。
基于前述缓存和并行计算,每个初始代价计算电路可以各自针对对应的一个参考图像中心像素所对应的整行n+1列目标像素进行初始代价计算,即每个初始代价计算电路可在一个计算周期内对一个参考像素编码数据与其n+1个对应目标像素编码数据的初始代价计算完成计算输出,因而可通过设置a个初始代价计算电路和第一寄存组合第二寄存器组,可在一个计算周期内容实现a个参考像素与其对应的a行n+1列的目标图像像素的匹配代价并行计算,其中并行度为a。
通过前述处理方案,既无需对重复数据进行无效缓存,也无需重复读取数据,以及实现了高效的数据复用,虽然处理中需要增加少量的缓存空间,比如用于缓存a个参考像素的第一寄存器组(可用一列寄存器存储该a个参考像素),以及用于缓存该a个参考像素对应的a行n+1列目标像素的第二寄存器组,但增加的缓存空间较少,而且这样少量的缓存空间对各类需要部署应用立体匹配方案的硬件设备来说均可承受,比如每个变换编码使用8位编码(即1个字节)表示,最大搜索范围设为64,则每缓存行为64个字节,当每个计算模块(即初始代价计算模块)并行度为3时,则仅需要增加192个字节的目标像素编码缓存空间(即第二寄存器组的空间),因而通过增加少量缓存空间,可有效减少并行计算中的数据存储、I/0读写和带宽资源占用,提高了匹配代价电路在实际部署应用中的灵活性,可有利于立体匹配方案部署应用到不同性能的硬件设备中。
以下结合附图,说明本申请各实施例提供的技术方案。
本说明书实施例提供一种立体匹配的数据处理方法,应用于立体匹配中匹配代价的硬件并行加速处理中,通过寄存器分别对待处理的参考图像和目标图像的数据进行缓存,避免重复处理,可提高立体匹配中的数据处理效率。
如图3至图6所示,本说明书实施例提供的匹配代价处理方法,包括:设置初始代价并行计算模块,其中所述初始代价并行计算模块包括第一寄存器组、第二寄存器组和a个并行计算的初始代价计算电路,所述初始代价计算电路包括n+1个代价计算单元,每个代价计算单元包括公共输入端口、目标输入端口和相似度计算电路,所述第二寄存器组包括至少由a行、n+1列的移位寄存器构成的寄存器阵列,所述第一寄存器组包括至少由a行、n+1列的移位寄存器构成的寄存器阵列,a为匹配代价计算的并行度,n+1为视差搜索范围。
其中第一寄存器组中的一行寄存器和对应第二寄存器组中的一行寄存器构成一对寄存器行并与对应初始代价计算电路对应。例如,图4示意中,第一寄存器组的第一行寄存器(即zy x至zy n)与第二寄存器组的第一行寄存器(即Zy 0 ՛)至Zy n ՛)构成一对寄存器行与第一初始代价计算电路对应,即图4中示意所示,第一寄存器组在列向上的元素与第二寄存器组的整行元素输入到对应的初始代价计算电路中进行代价计算。
在对一个图像块的数据进行匹配代价计算时,第一寄存器组、第二寄存器组和初始代价计算电路可按如下设置进行相应控制。
实施中,所述第一寄存器组可被设置为:每行移位寄存器采用串行移位输入方式装载n+1个参考像素编码数据,以缓冲a行参考像素编码数据;以及,采用串行移位输出方式将目标列的a个寄存器中的所述参考像素编码数据对应地输出至a个初始代价计算电路,以在当前计算周期对所述目标列上寄存器中的所述参考像素编码数据进行初始代价并行计算。
如图4所示,第一寄存组采用串行移位输入控制方式,即在首次计算时,可经历第1个至第n+1个列周期控制下,第一寄存器组中每行移位寄存器将在串行移位输入方式作用下,依次装载有第1个至第n+1个参考像素,即在列周期控制下,每行寄存器从左侧向右侧移位装载参考像素数据。
其中,第一寄存器组的数据进行串行移位输入过程示意如下:在第1个列周期时,每行寄存器中的第1个寄存器(即最左侧一列的寄存器)移入第1个参考像素;在第2个列周期时,每行寄存器中的第一个寄存器的数据右移一列,即第1个参考像素进入到第2个寄存器中,同时新数据进入到第1个寄存器。因此,在n+1个列周期控制下,第一寄存器组装载有a行n+1列参考像素点对应的数据。
需要说明的是,这里以移位寄存器从左往右移位为例进行说明,当然也可以设置移位寄存器从右往左移位,因而寄存器的移位输入方式可以根据实际应用需要进行设置,这里不作限定。
如图4所示,第二寄存组采用串行移位输入控制方式,即在首次计算时,可经历第1个至第n+1个列周期控制下,第二寄存器组中每行移位寄存器将在串行移位输入方式作用下,依次装载有第1个至第n+1个参考像素,即在列周期控制下,每行寄存器从左侧往右移位装载目标像素数据。
其中,第二寄存器组的数据进行串行移位输入过程示意如下:在第1个列周期时,每行寄存器中的第1个寄存器(即最左侧一列的寄存器)移入第1个目标像素;在第2个列周期时,每行寄存器中的第二个寄存器的数据右移一列,即第1个目标像素进入到第2个寄存器中,同时新数据进入到第1个寄存器。因此,在n+1个列周期控制下,第二寄存器组将装载有a行n+1列参考像素点对应的数据。
如图4所示,第一寄存组中每行移位寄存器采用串行移位输出方式,即在首次计算时,可在某一个列周期控制下将处于同一目标列上寄存器中的所述参考像素编码数据对应地输出至初始代价计算电路以在当前计算周期对所述目标列上寄存器中的所述参考像素编码数据进行初始代价并行计算,所述目标列为在所述第一寄存器组中指定的一列。换言之,第一寄存组中每行移位寄存器采用串行移位输出方式输出参考像素编码数据,是指该行移位寄存器只将目标列上寄存器存储的参考像素编码数据输出至初始代价计算电路,而其他列上移位寄存器存储的参考像素编码数据仅进行移位操作。
例如,将最右侧一列指定为目标列时,该列上寄存器中的参考像素将在第n+1个列周期时分别输入至各自对应的初始代价计算电路,即位于所述第一寄存器组中第1行至第a行同一目标列上寄存器存储的参考像素编码数据对应地输入至所述初始代价计算电路中,其中第1行该目标列上寄存器存储的参考像素编码数据zy x输入至第一个初始代价计算电路,以作为所述第一个初始代价计算电路中各个代价计算单元的公共输入端口的输入数据,第2行该目标列上寄存器存储的参考像素编码数据zy+1 x输入至第二个初始代价计算电路,以作为所述第二个初始代价计算电路中各个代价计算单元的公共输入端口的输入数据,依此类推,第a行该目标列上寄存器存储的参考像素编码数据zy+a-1 x输入至第a个初始代价计算电路,以作为所述第a个初始代价计算电路中各个代价计算单元的公共输入端口的输入数据。
需要说明的是,目标列可根据实际应用需要而在所述第一寄存器组中指定,比如图4中将最右侧一列指定为目标列,因而可无需对第一寄存器组进行延时控制。当然,还可以是将其他列指定为目标列,比如将最左侧一列指定为目标列,这时可对最左侧列输出数据进行缓冲并延时n个列周期的延时控制后再输出至初始代价计算电路,以便于与第二寄存器组并行输出至初始代价计算电路的目标像素编码数据进行同步输入至初始代价计算电路,即初始代价计算电路在完成所有输入数据后进行并行计算。因此,目标列可以根据实际应用需要进行指定及对其输出数据进行缓冲并延时控制后输出至初始代价计算电路。
如图4所示,第二寄存组中每行移位寄存器采用并行移位输出方式在所述当前计算周期内,将所述目标列的所述参考像素编码数据对应的整行目标像素编码数据对应地输出至初始代价计算电路,即第一行目标像素编码数据并行移位输出至第一初始代价计算单元,第二行目标像素编码数据并行移位输出至第二初始代价计算单元,依次类推,第a行目标像素编码数据并行移位输出至第a初始代价计算单元。其中,各行中n+1个目标像素编码数据对应地输出至初始代价计算电路中的目标输入端口,比如第一个目标像素编码数据对应地输入至第一初始代价计算单元的第一目标输入端口(如图5中的目标输入端口0),第二个目标像素编码数据对应地输入至第一初始代价计算单元的第二目标输入端口(如图5中的目标输入端口1),依次类推,第n+1个目标像素编码数据对应地输入至第一初始代价计算单元的第n+1目标输入端口(如图5中的目标输入端口n)。
需要说明的是,第二寄存器组并行移位输出的示意过程如下:以第一行n+1个寄存器的数据并行移位输入至第一初始代价计算电路为例说明,如图6所示,在第一个周期控制下,第一个目标像素移入左侧起算的第一列,同时将该第一个目标像素数据并行输入至初始代价计算单元,即目标输入端口n获得第一个目标像素编码数据Zy 0';在第二个周期控制下,第一个目标像素向右移动一列,即移入至左侧起算的第二列,同时将该第一个目标像素数据并行输入至初始代价计算单元,以及第二个目标像素数据作为新数据将移入左侧起算的第一列,同时该第二个目标像素数据并行输入至初始代价计算单元,即目标输入端口n获得第二个目标像素编码数据Zy 1'和目标输入端口n-1获得第一个目标像素编码数据Zy 0'。依次类推,在第n+1个周期控制下,目标输入端口n获得第n+1个目标像素编码数据Zy n',目标输入端口n-1获得第n个目标像素编码数据Zy n-1',直至目标输入端口1获得第二个目标像素编码数据Zy 1',以及目标输入端口0获得第一个目标像素编码数据Zy 0'。
因此,在针对某个图像块的数据进行首次计算,可以在经历n+1个列周期时,初始代价计算单元中的参考像素编码数据和目标像素编码数据完成同步输入,进而可在完成数据输入时进行并行计算。当然,也可以在未完成全部数据输入下进行并行计算,比如将初始代价计算单元中未完成输入的采用默认数据进行计算,只是计算所得的初始代价并非真实的初始代价,在后期的代价聚合、视差处理等处理过程需要将对这些初始代价数据进行区分处理即可。
另外,在该图像块的后续计算中,第一寄存器组和第二寄存器组可通过串行移位输入实现数据更新及复用输出,比如第一寄存器组的数据进行串行移位输入和串行移位输出,只需从外部更新一列新数据,比如第二寄存器组的数据进行串行移位输入和并行移位输出,也只需从外部更新一列新数据。
当然,第一寄存器组和第二寄存器组的a行数据需要全部更新为其他图像块数据时,相当于重新开始新图像块的匹配代价并行计算,这时第一寄存器组和第二寄存器组可重新进行数据准备(即完成a行寄存器数据缓冲),初始代价计算单元回到新图像块的首次计算处理。
如图5所示,初始代价计算电路可被设置为:n+1个公共输入端口用于输入同一个参考像素编码数据,n+1个目标输入端口用于对应地输入所述同一个参考像素编码数据对应的n+1个目标像素编码数据;以及,在计算周期控制下,n+1个相似度计算电路进行初始代价并行计算后初始代价值。
需要说明的是,计算周期可为与前述列周期相关的时钟。例如,计算周期可为前述列周期,虽然对图像块的前n次计算所得的初始代价并非是真实的初始代价,但采用每次列周期进行并行计算,可以简化整体控制过程;另外,计算周期也可为与前述列周期相关的控制时钟,比如图像块数据的首次计算时为第n+1个列周期,然后后续的计算周期为每次列周期,这样可避免后期的代价聚合、视差处理等过程对匹配代价输出的初始代价作区分处理。
通过在部署应用端中开设所述初始代价并行计算模块,即设置所述第一寄存器组、所述第二寄存器组和初始代价计算电路等少量电路,可在每个周期实现a个参考像素与其对应的n+1个目标像素之间的初始代价并行计算,不仅并行加速处理效率高,比如可并行输出a行、n+1列的初始代价值,所需硬件资源也少,对硬件性能要求低,可灵活地在各种硬件设备中部署应用加速处理方案,有利于立体匹配方案在各种应用场景中部署应用,而且可将第一寄存器组、所述第二寄存器组和所述初始代价并行计算模块等电路构成一个最小的并行深度计算单元,进而可对原图像进行分块后,可基于多个并行深度计算单元对各个分块进行深度信息的硬件加速并行计算,提高整体处理效率。
在一些实施方式中,可将计算周期作为行周期,寄存器移位周期作为列周期,进而通过行周期和列周期共同对整个并行计算进行时钟控制。即所述匹配代价处理方法还包括:将所述当前计算周期设置为行控制周期,将所述第一寄存器组和所述第二寄存器组的移位时钟设置为列控制周期,以通过所述行控制周期和所述列控制周期共同对并行计算进行时钟控制。
实施中,行周期(即行控制周期)可用于控制第一寄存器组和/或第二寄存器组的数据更新以及控制初始代价计算电路进行并行计算,列周期(即列控制周期)用于控制第一寄存器组和第二寄存器组的数据输出,既可简化整体电路结构,又能在简单的时钟电路控制下,使得寄存器组有序工作,保障并行计算中的数据读写可靠性。
在一种实施方式中,第一寄存组和第二寄存器组均采用移位寄存器缓存像素的编码数据,这时基于并行度为a的并行计算方式,即采用了a个并行的汉明距离计算模块(比如图中示意的初始代价计算电路),可在每个计算周期实现a列参考像素与各自对应的n+1个目标像素之间的初始代价并行计算。
在一些实施方式中,在更新第一寄存器组中的行数据时,可等待到与第二寄存组的行数据更新进行同步控制,即在完成一行的参考像素初始代价并行计算后,可对第一寄存器组合第二寄存组进行行更新,继续对后续行的参考像素进行初始代价。
在一些实施方式中,可采用移位方式对第一寄存器组和/或第二寄存器组进行列数据更新。
例如,第一寄存器组在数据更新时,可采用向一侧移位串行输入方式更新数据,比如数据从右侧移出、左侧输入的更新方式,比如数据从左侧移出、右侧输入的更新方式。
例如,第二寄存器组在数据更新时,可采用向一侧移位并行输入方式更新数据,比如数据从右侧移出一列,各列右移一列,最后将新数据输入到最左侧一列;比如数据从左侧移出一列,各列左移一列,最后将新数据输入到最右侧一列。
实施中,可在移位更新中,比如将最右侧一列数据输入到初始代价并行计算模块后,移除该列数据,然后各列数据依次右移一列,最后在最左侧一列更新进新数据。
通过在寄存器组中进行移位更新,每次移出一列以及更新入一列写数据,可提高数据处理效率。
如图7所示,在初始代价计算电路(如汉明距离计算)包含n+1个并行的距离计算单元下,每个距离计算单元包含公共端口和目标端口,这时公共端口可以用于从第一寄存器组中的ref_reg_0串行输出端口获取参考图像中心像素比特串,各目标端口分别从目标图像中心像素比特串对应的第二寄存器组中的tar_reg并行输出端口获取目标图像中心像素比特串。
在初始代价加速计算电路初始化运行时,当前参考图像像素中心编码经过n+1延迟周期到ref_reg_0末尾寄存器,此时视差搜索范围(如0至n)内的目标图像像素中心编码在n+1个周期后填充满tar_reg_1;
在下个计算周期,当前参考像素中心编码被送入距离计算单元的公共端口,寄存在tar_reg_1中目标像素编码通过并行输出端口分别被送入计算单元的目标端口,即在一个周期内完成当前参考像素编码与目标像素在视差范围内的初始代价计算;
同时当前参考像素的下一个相邻像素被送入到ref_reg_0末尾寄存器,且处于tar_reg_1末尾寄存器中的目标像素中心编码被移出的同时加入新的目标像素中心编码至tar_reg_1初始寄存器中。
通过移位操作,可实现在同一操作周期下的参考图像像素与目标图像像素在视差搜索范围[0∼n]内的初始代价计算。
在一种实施方式中,可设置第一寄存器组对应的缓存区和/或设置第二寄存器组对应的缓存区,进而在完成一行参考像素的初始代价计算时,可通过缓存区对第一寄存器组和/或对第二寄存器组进行整行更新。
例如,对第一寄存器组采用缓存区进行行缓存更新的过程可参考图8的示意:在首次行更新时,通过读地址选择信号index选通第一寄存器组行缓存模块中的第一至第四行参考像素按行更新到第一寄存器组中。而在第二次行更新时,即在完成第一行寄存器的参考像素初始代价计算后,可通过读地址选择信号index选通第一寄存器组行缓存模块中的第二至第五行参考像素按行更新到第一寄存器组中。
在一些实施方式中,可在参考像素和目标像素的数据均输入至初始代价计算电路后,设置初始代价计算电路进行并行计算。
实施中,当所述行控制周期与所述列控制周期相同时,所述匹配代价处理方法还可包括:设置门控单元,所述门控单元被配置为:在所述行控制周期的控制下,门控所述初始代价计算电路在第n+1个列控制周期下针对新图像块行进行首次并行计算。
通过设置门控单元,可控制初始代价计算电路在合适时机进行并行计算,而非合适时机不进行并行计算,可节省功耗,提高立体匹配在各种终端中的适应性。
在一些实施方式中,在初始代价并行计算模块输出初始代价值时,可将这些初始代价值缓存于存储器,便于后续基于这些初始代价值进行代价聚合、视差选择等其他匹配处理。
实施中,所述匹配代价处理方法还可包括:设置初始代价存储器,所述初始代价存储器包括至少由a行、n+1列的存储单元构成的存储器阵列,所述初始代价存储器用于接收并缓存所述初始代价并行计算模块输出的所述初始代价值。
如图9所示,可将这些初始代价值构成一个三维匹配代价卷(或者叫三维代价空间),其中以像素横坐标x、像素纵坐标y和视差d作为三维空间的三个坐标构建出该三维空间,并将每个初始代价值C(P(x,y),di)存储于对应的x、y、d坐标对应的存储空间中,从而构成出三维匹配代价卷,进而可将每个匹配代价卷与代价聚合窗口匹配,以便于代价聚合电路模块对这些初始代价值进行代价聚合处理。图中C(P(x,y),d)用于表示参考图像中像素p(x,y)在视差d下的初始匹配代价(即初始代价值),像素p是窗口中心像素。
在一些实施方式中,相似度计算电路可采用简单结构的电路单元,进一步简化并行计算对硬件性能的要求。
如图10至图12所示,所述相似度计算电路可包括异或单元和累加单元,其中所述异或单元用于对所述参考像素编码数据和所述目标像素编码数据按位进行异或逻辑运算,所述累加单元用于对所述异或单元按位进行异或逻辑运算后的输出结果进行累加计算后输出累加结果,所述累加结果用于表征参考像素与其对应的目标像素之间的相似度距离。
通过异或单元对参考图像和目标图像按位进行快速、高效的逻辑异或运算,以及累加单元根据异或运算结果进行累加统计,可基于简单的逻辑运算和统计累加预算,快速、准确地获得参考图像和目标图像之间的相似度距离,而且这些运算对硬件性能要求低,有利于各种硬件性能的设备部署应用立体匹配方案。
在一些实施方式中,异或单元可由基本的异或门组成,和/或累加单元可由基本加法器构成。
如图10至图12所示,异或单元可由若干异或逻辑门构成,每个异或逻辑门按位对参考图像和目标图像的每比特数据进行异或逻辑运算,以便累加单元通过累加统计异或运算结果获得相似度距离。
例如,参考像素和目标像素的数据均为m+1比特数据,则采用m+1个异或门构成异或单元。
如图10至图12所示,累加单元可由若干加法器构成树状加法树进行累加运算,即采用加法树作为累加单元的核心运算电路。
例如,双输入的加法器可对两个异或门的输出进行加法运算,后一级加法器可对前一级的两个加法器输出再进行累加,直至获得最后累加结果作为相似度距离。
如图12所示,针对某个参考像素(如左窗口的某个像素)和其对应的某个目标像素(如右窗口的某个像素)进行初始代价的计算过程中,在编码变换(如采用census变换)后得到编码数据(如图中示出的census矢量),进而可通过异或逻辑单元(如图中示出的XOR单元)按位进行逻辑异或运算,并对异或运算结果采用加法树进行累加,最后得到两个像素之间的相似度距离(即初始代价值)为6。
在一些实施方式中,可采用缓存器对进入第二寄存器组中的数据先缓存,在通过缓存器向第二寄存器组更新数据。
如图10所示,所述匹配代价处理方法还可包括:设置第一缓存器(如图中示出的目标图像比特串缓存),所述第一缓存器包括至少a行、n+1列的缓存阵列;所述第一缓存器被配置为执行如下步骤:将缓存的数据更新到所述第二寄存器组。
通过将a行目标像素进行缓存,进而通过缓存器对第二寄存器组进行数据更新,简化数据更新控制,提高处理效率。
在一些实施方式中,缓存器对第二寄存器组更新数据时,可以按列更新,即将缓存的数据更新到所述第二寄存器组,包括:按列将缓存的数据更新到所述第二寄存器组。
在一些实施方式中,前述任意一个实施例中,初始代价可以是汉明距离、像素相似度、灰度相似度、梯度相似度或多种相似度度量算法的加权融合,因而所述相似度计算电路可包括用于计算以下任意一种相似度的电路单元:灰度差平方函数,零均值灰度差平方函数,RANK算法函数,汉明距离函数,灰度互相关函数,灰度绝对差函数,基于自适应支持区域或固定支撑区域或自适应权重系数法。具体电路和算法函数可以根据实际应用需要而确定,这里不作限定。
在一些实施方式中,本说明书提供的一种匹配代价处理方法,可基于多个小尺寸的初始代价并行计算模块,构成一个用于处理较大尺寸的匹配代价处理模块。
如图13A所示,本实施例中的匹配代价处理方法可包括:设置匹配代价处理模块,其中所述匹配代价处理模块包括至少两个初始代价并行计算模块,所述初始代价并行计算模块为如前述任意一个实施例中所述的初始代价并行计算模块。假设前述任意一个实施例所述的初始代价并行计算模块是基于视差搜索范围为dmax-dmin=n+1=64位像素而设计的代价计算模块,则在面对128位视差深度或更大尺寸的视差搜索范围要求时,可配置两个处理64位视差的初始代价并行计算模块,并将各个初始代价并行计算模块输出的64位初始代价合并为128位的视差搜索范围的初始代价值。因此在初始代价并行计算模块设计时,采用较小的视差搜索范围(比如32位,如从0~31)设计初始代价计算模块中的寄存器组及对应电路模块设计。
在一些实施方式中,在使用原设计采用64位视差搜索设计时,当计算视差搜索范围小于原设计时,比如在50位、32位等视差搜索范围的初始代价计算时,每个初始代价计算电路中的部分相似度计算电路可以不参与计算(即使参与计算,因无对应的输入,也仅进行空运算)。因此,可通过为代价计算单元中的相似计算电路设置门控单元,以在计算的初始代价小于硬件电路设计的视差搜索范围时,通过使能信号或者时钟门控逻辑信号,使得对应相似度计算单元不参与计算工作,可降低功耗。
在一些实施方式中,为了减少可能带来部分计算资源的损失,可在具体电路设计时可采用较小的视差搜索范围进行设计,来实现每个初始代价计算模块的内部电路架构,如采用32位视差搜索范围设计,可以匹配大多数日常深度加速计算应用场景,从而基于上述32位视差搜索范围通过配置并组合各初始代价计算模块及各寄存器组行之间的数据流通路,可满负载实现64位、128位、256位等更大的视差搜索范围计算场景。
实施中,所述匹配代价处理方法还可包括:配置多路选择器,所述多路选择器各自设置于相邻两个所述初始代价计算电路所对应的第一寄存器组的行间和第二寄存器组的行间;
其中,所述多路选择器被配置为:
第一寄存器组中行间通过多路选择器进行前后耦合连接,其中第一寄存器组中前一行的尾列寄存器通过多路选择器的一路输入通路与后一行的首列寄存器耦合,多路选择器的其他路输入通路用于对应接收其他行参考像素编码数据;
第二寄存器组中行间通过多路选择器耦合连接,其中第二寄存器组中前一行的尾列寄存器通过多路选择器的一路输入通路与后一行的首列寄存器耦合,多路选择器的其他路输入通路用于对应接收其他行目标像素编码数据;
其中所述多路选择器的选择控制信号根据视差搜索范围进行配置,以用于将第一寄存器组中相邻的多行寄存器拼接成大尺寸的第三寄存器组,以及将第二寄存器组中相邻的多行寄存器拼接成大尺寸的第四寄存器组,其中第三寄存器组和第四寄存器组为大尺寸的初始代价并行计算模块对应的寄存器组。
如图13B所示,提供了一种改进型的适应不同视差搜索范围要求的代价计算电路架构,即在初始代价并行计算模块中设置有用于数据选择的多路选择器,亦即将两个相邻初始代价计算电路对应的寄存器行通过多路选择器形成通路的选择控制,比如在前的初始代价计算电路所对应的第一寄存器组的整一行寄存器(下称第一寄存器组行)、第二寄存器组的整一行寄存器(下称第二寄存器组行)分别通过设置在寄存器组中行间的多路选择器与后一个初始代价计算电路所对应的第一寄存器组行、第二寄存器组行进行耦合连接,其中当实际算法计算搜索视差范围为n+1时,即匹配初始代价计算电路设计视差范围n+1,因此通过设置多路选择器的选择控制信号0,使得不同行参考像素编码数据及对应的目标像素编码数据加载至对应的初始代价计算电路所对应的第一寄存器组和第二寄存器组中,如第y行参考像素编码、第y+1行参考像素编码、第y+a行参考像素编码分别对应地加载到第1初始单价计算电路、第2初始代价计算电路、第a初始代价计算电路各自所对应的第一寄存器组的输入端,同理,对应的目标像素编码数据亦加载至各初始代价计算电路所对应的第二寄存器组的输入端。
进一步,还可在初始代价并行计算模块中配置至少一个多路互连开关单元,用于使得不同输入通路的数据通过数据通路选择信号配置多路互联开关单元内部互连开关的连通关系,使得第一寄存器组中的串行输入的数据加载至对应初始代价计算电路中。
实施中,所述匹配代价处理方法还包括:配置多路互连开关,所述多路互连开关设置于第一寄存器组的行寄存器和该行寄存器对应的初始代价计算电路之间;
其中,所述多路互连开关被配置为:
根据数据通路选择信号将第一寄存器组的串行输入数据加载至对应的初始代价计算电路中,其中在不需要将第一寄存器组拼接成第三寄存器组时,第一寄存器组中的行数据分别加载至对应的初始代价计算电路,在将第一寄存器组拼接成第三寄存器组后,将第三寄存器组及和第四寄存器组中的数据按列控制周期加载至对应的大尺寸的初始代价并行计算模块中的初始代价计算电路。
基于以上所述,第1初始代价计算电路对应第一移位寄存器组的输出经过多路互连开关加载至第1初始代价计算电路中的公共输入端口,同理第2至第a初始代价计算电路对应的第一寄存器组行的数据亦分别通过多路互连开关加载至其对应的第2至第a初始代价计算电路中的公共端口,在列周期控制下实现a个参考像素在一个列周期并行完成n+1次并行初始代价计算,并输出对应的初始代价值。
进一步的,若实际计算搜索视差范围为2*(n+1)时,即算法实际计算的视差搜索范围为初始代价计算电路设计视差范围的2倍时,为高效实现双目匹配代价计算,因此通过配置寄存器组中行间多路选择器的控制信号1,使得每两个初始代价计算电路组成一个更大搜索视差范围的初始代价计算电路,即配置第1初始代价计算电路与第2初始代价计算电路对应的各自第一、第二寄存器组行间的选在控制信号为1,配置第2初始代价计算电路与第3初始代价计算电路对应的各自第一、第二寄存器组行间控制信号为0,配置第3初始代价计算电路与第4初始代价计算电路对应的各自第一、第二寄存器组行间控制信号为1(本示例中a=4),此时第一寄存器组的每两行寄存器、第二寄存器组的每两行寄存器各自分别组成一个存储范围为原先两倍的第三寄存器组行(即两行第一寄存器组行组合成一个新的第三寄存器组的行寄存器,如原第一寄存器组行由n+1个移位寄存器构成,两个第一寄存器组行组合后形成第三寄存器组行,即每个第三寄存器组行由2*(n+1)个移位寄存器构成)和第四寄存器组行(即第二寄存器组的每两行寄存器组成一个新的第四寄存器组的行寄存器,如原第二寄存器组行由n+1个移位寄存器构成,两个第二寄存器组行组合后形成的每个第四寄存器组行为由2*(n+1)个移位寄存器构成)及每两个初始代价计算电路被组合成一个更大的组合初始代价计算电路,该组合初始代价计算电路包含2*(n+1)个相似度计算单元,此时第2初始代价计算电路对应的第一寄存器组行通过多路选择器接收由第1初始代价计算电路对应的第一寄存器组行中串行传输而来的数据,此时第一初始代价计算电路对应的第一寄存器组行中的数据不再直接加载至其对应第一初始代价计算电路的公共输入端口,同时通过配置多路互连开关,使得由第2初始代价计算电路中对应的第一寄存器组行最终输出的数据被广播至第1和第2初始代价计算电路中的公共输入端口,而由第二寄存器组行通过行间多路选择器组合构成的第四寄存器组行中的2*(n+1)个移位寄存器中的目标像素编码数据被分别加载至对应的第1和第2初始代价计算电路的目标端口中,并在列周期控制下实现1个参考像素在一个列周期并行完成2*(n+1)次初始代价并行计算,并输出对应的2*(n+1)个初始代价值。
同理,第3初始代价计算电路和第4初始代价计算电路对应的第一移位寄存器组行、第二移位寄存器组行分别通过行间多路选择器被耦合在一起,构成一个大小为2*(n+1)列的更大存储空间的移位寄存器组行(同上第三移位寄存器组行和第四移位寄存器组行),此时第4初始代价计算电路对应的第一寄存器组行通过多路选择器接收由第3初始代价计算电路对应的第一寄存器组中串行传输而来的数据构成2*(n+1)列第三寄存器组行,同时通过配置多路互连开关,使得由第4初始代价计算电路对应的第一寄存器组行最终输出的数据被广播之第3和第4初始代价计算电路中的公共输入端口,而由第二寄存器组行通过行间多路选择器组合构成的第四寄存器组行中的2*(n+1)个移位寄存器中的目标像素编码数据被分别加载至对应的第3和第4初始代价计算电路的目标端口中,并在列周期控制下实现1个参考像素在一个列周期并行完成2*(n+1)次初始代价并行计算,并输出对应的2*(n+1)个初始代价值。
需要说明的是,多路互连开关单元可以为由多个开关构成的数据通路,该数据通路在数据通路选择信号的控制下,实现寄存器组的数据向对应初始代价计算电路加载的功能,多路互连开关单元可根据实际应用需要选用现有的开关单元,这里不作限定。
综上,本发明不但可以高效实现双目立体匹配初始代价的计算,同时通过配置组合不同初始代价计算电路实现不同视差搜索范围内的初始代价计算,从而提高计算速度、硬件利用率、数据复用率以及降低了处理器内部数据读取带宽的占用。
进一步的,可对至少两行寄存器组行及其对应的初始代价计算电路进行配置组合,以下不在赘述。
基于相同发明构思,本说明书还提供一种匹配代价处理电路,包括:匹配代价加速计算模块,其中所述匹配代价加速计算模块被配置为:用于执行如本说明书任意一项实施例中所述的匹配代价处理方法。
通过在部署应用的设备上配置所述匹配代价加速计算模块,可将所述匹配代价处理方法部署应用到设备中,以便设备进行立体匹配应用。
基于相同发明构思,本说明书还提供一种代价聚合处理方法,该代价聚合处理方法可在获取到基于前述任意一个实施例提供的代价匹配处理方法输出的初始代价值后,进行代价聚合处理,以向后续的视差选择单元提供聚合后的匹配代价。
如图14所示,本说明书实施例提供一种代价聚合处理方法,可包括:
步骤402、获取初始代价值,其中所述初始代价值为基于前述任意一个实施例提供的所述匹配代价处理方法输出的初始代价值。
步骤404、按预设的聚合策略对所述初始代价值进行匹配代价聚合处理,以生成匹配代价的聚合结果。
通过获取初始代价值,进而对初始代价值进行代价聚合处理,获得后续视差处理所需的聚合代价数据。
在一些实施方式中,可采用缓存器对聚合代价进行缓存后输出,便于与后续视差处理电路衔接,提高数据处理效率。
实施中,所述代价聚合处理方法还包括:设置第二存储器,其中所述第二存储器用于缓存所述聚合结果。
实施中,可在聚合处理获得匹配代价C(x,y,d)后,配置存储器生成对应的三维聚合代价空间,以将匹配代价缓存后输出,方便后续视差处理。
需要说明的是,三维聚合代价空间可参照前述初始代价值对应的三维匹配代价卷的构建过程,这里不再展开说明。
在一些实施方式中,初始代价值数据送入至代价聚合电路,可采用固定代价聚合窗口,并通过移位寄存器实现流水线计算。
所述聚合策略包括按固定代价聚合窗口进行聚合处理的策略;
按预设的聚合策略对所述初始代价值进行匹配代价聚合处理,包括:采用固定代价聚合窗口对所述初始代价值进行匹配代价聚合处理。
需要说明的是,聚合策略可为根据实际应用需要而进行代价聚合的策略,这里不作限定。
在一些实施方式中,可采用移位寄存器组构成聚合处理的核心电路,从而通过移位操作完成代价聚合处理。
如图15所示,代价聚合处理电路可由[0:h]×[0:w]大小的移位寄存器组构成核心处理电路,该移位寄存器组可在水平方向串行连接,实现聚合窗口水平滑动;在列向寄存器组输出端与加法树连接,实现列向求和,然后对列向和进行求和,实现一个聚合窗口的求和计算;最后可基于均值聚合算法或加权聚合算法等获得最终的窗口聚合代价结果。
实施中,初始代价值数据可以按列输出到该移位寄存器组,这时该寄存器组获得一列数据后先在列向进行求和,然后将窗口内所有列向和进行求和。
因此,在实际处理过程中列向数据可以复用,这样每更新一列数据,只需通过移位存储器将最左侧数据移出,将新数据添加至最右列,最后求和时只需要使用上一个窗口的和减去最左列的和加上最新加入列的和,完成窗口内初始代价的聚合。
实施中,可根据实际应用环境选用相应匹配算法。
例如,归一化匹配算法虽然运算相对复杂些,如包括开方等运算,对硬件性能要求稍高,但其受光照影响较小,鲁棒性要比非归一化算法好,因而可在硬件性能较高、要求光照影响小等场合选取该算法。
例如,零均值方法是在归一化算法的基础上对立体图像对的亮度差异进行补偿,因而可解决一定范围内的亮度偏差问题。
例如,Rank 算法和 Census 算法属于非参数化的区域匹配算法,通过匹配像素邻域像素与其关系来代替匹配像素的灰度值,可以解决光照不均、偏差等影响。而且,非参数化匹配算法计算简单,仅需要比较、求和等运算,相比于其他区域匹配算法更适用于硬件实现。
例如,Census 算法在变换时是按像素位置顺序编码,在像素间位置关系的表述上要优于 Rank 算法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例侧重说明的都是与其他实施例的不同之处。尤其,对于后面说明的产品实施例而言,由于其与方法是对应的,描述比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中,各个实施例均可为完全硬件实施例、完全软件实施例或结合软件和硬件实施的实施例。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (9)

1.一种匹配代价处理方法,其特征在于,包括:
设置初始代价并行计算模块,其中所述初始代价并行计算模块包括第一寄存器组、第二寄存器组和a个并行计算的初始代价计算电路,所述初始代价计算电路包括n+1个代价计算单元,每个代价计算单元包括公共输入端口、目标输入端口和相似度计算电路,所述第二寄存器组包括至少由a行、n+1列的移位寄存器构成的寄存器阵列用于装载目标像素编码数据,所述第一寄存器组包括至少由a行、n+1列的移位寄存器构成的寄存器阵列用于装载参考像素编码数据,a为匹配代价计算的并行度,n+1为视差搜索范围,其中第一寄存器组中的一行寄存器和对应第二寄存器组中的一行寄存器构成一对寄存器行并与对应初始代价计算电路对应;
其中,所述第一寄存器组被设置为:每行移位寄存器采用串行移位输入方式装载n+1个参考像素编码数据;以及,每行移位寄存器采用串行移位输出方式将处于同一目标列上寄存器中的所述参考像素编码数据对应地输出至初始代价计算电路,以在当前计算周期对所述目标列上寄存器中的所述参考像素编码数据进行初始代价并行计算,所述目标列为在所述第一寄存器组中指定的一列;
所述第二寄存器组被设置为:每行移位寄存器采用串行移位输入方式装载n+1个目标像素编码数据;以及,采用串行移位并行输出方式在所述当前计算周期内将所述目标列的所述参考像素编码数据对应的所述目标像素编码数据对应地并行输出至a个初始代价计算电路;
所述初始代价计算电路被设置为:n+1个公共输入端口用于输入同一个参考像素编码数据,n+1个目标输入端口用于对应地输入所述同一个参考像素编码数据对应的n+1个目标像素编码数据;以及,在所述当前计算周期控制下,通过n+1个相似度计算电路进行初始代价并行计算,输出初始代价值;
所述匹配代价处理方法还可包括:设置初始代价存储器,所述初始代价存储器包括至少由a行、n+1列的存储单元构成的存储器阵列,所述初始代价存储器用于接收并缓存所述初始代价并行计算模块输出的所述初始代价值,其中以像素横坐标x、像素纵坐标y和视差d作为三维空间的三个坐标构建出三维空间,并将每个初始代价值C(P(x,y),di)存储于对应的x、y、d坐标对应的存储空间中,初始代价值C(P(x,y),d)用于表示参考图像中像素p(x,y)在视差d下的初始代价值;
所述匹配代价处理方法还包括:配置多路选择器,所述多路选择器各自设置于相邻两个所述初始代价计算电路所对应的第一寄存器组的行间和第二寄存器组的行间;
其中,所述多路选择器被配置为:
第一寄存器组中行间通过多路选择器进行前后耦合连接,其中第一寄存器组中前一行的尾列寄存器通过多路选择器的一路输入通路与后一行的首列寄存器耦合,多路选择器的其他路输入通路用于对应接收其他行参考像素编码数据;
第二寄存器组中行间通过多路选择器耦合连接,其中第二寄存器组中前一行的尾列寄存器通过多路选择器的一路输入通路与后一行的首列寄存器耦合,多路选择器的其他路输入通路用于对应接收其他行目标像素编码数据;
其中所述多路选择器的选择控制信号根据视差搜索范围进行配置,以用于将第一寄存器组中相邻的多行寄存器拼接成大尺寸的第三寄存器组,以及将第二寄存器组中相邻的多行寄存器拼接成大尺寸的第四寄存器组,其中第三寄存器组和第四寄存器组为大尺寸的初始代价并行计算模块对应的寄存器组;
所述匹配代价处理方法还包括:配置多路互连开关,所述多路互连开关设置于第一寄存器组的行寄存器和该行寄存器对应的初始代价计算电路之间;
其中,所述多路互连开关被配置为:
根据数据通路选择信号将第一寄存器组的串行输入数据加载至对应的初始代价计算电路中,其中在不需要将第一寄存器组拼接成第三寄存器组时,第一寄存器组中的行数据分别加载至对应的初始代价计算电路,在将第一寄存器组拼接成第三寄存器组后,将第三寄存器组及和第四寄存器组中的数据按列控制周期加载至对应的大尺寸的初始代价并行计算模块中的初始代价计算电路。
2.根据权利要求1所述的匹配代价处理方法,其特征在于,所述匹配代价处理方法还包括:将所述当前计算周期设置为行控制周期,将所述第一寄存器组和所述第二寄存器组的移位时钟设置为列控制周期,以通过所述行控制周期和所述列控制周期共同对并行计算进行时钟控制,其中在行周期控制下实现行像素编码数据初始代价计算行更新,在列周期控制下实现列像素编码数据初始代价计算列更新。
3.根据权利要求2所述的匹配代价处理方法,其特征在于,所述匹配代价处理方法还包括:设置门控单元;
所述门控单元被配置为:
在所述行控制周期的控制下,门控所述初始代价计算电路在第n+1个列控制周期下针对新图像块行进行首次并行计算;
和/或,在当前初始代价搜索范围小于预设的所述视差搜索范围时,门控所述初始代价计算电路中的部分代价计算单元处于非工作状态。
4.根据权利要求1所述的匹配代价处理方法,其特征在于,所述相似度计算电路包括用于计算以下任意一种相似度的电路单元:灰度差平方函数,零均值灰度差平方函数,RANK算法函数,汉明距离函数,灰度互相关函数,灰度绝对差函数,基于自适应支持区域或固定支撑区域或自适应权重系数法。
5.根据权利要求1所述的匹配代价处理方法,其特征在于,所述相似度计算电路包括异或单元和累加单元;
其中,所述异或单元包括若干异或门,用于对所述参考像素编码数据和所述目标像素编码数据按位进行异或逻辑运算;
所述累加单元包括加法树,用于对所述异或单元按位进行异或逻辑运算后的输出结果进行累加计算后输出累加结果,所述累加结果用于表征参考像素与其对应的目标像素之间的相似度距离。
6.根据权利要求1所述的匹配代价处理方法,其特征在于,所述匹配代价处理方法还包括:
设置第一缓存器,所述第一缓存器包括至少a行、n+1列的缓存阵列;
所述第一缓存器被配置为:将缓存的数据更新到所述第二寄存器组;
和/或,所述匹配代价处理方法还包括:设置第二缓存器,所述第二缓存器包括至少1行、n+1列的缓存阵列;
所述第二缓存器被配置为:将缓存的数据更新到所述第一寄存器组。
7.一种匹配代价处理方法,其特征在于,包括:设置匹配代价处理模块,其中所述匹配代价处理模块包括至少两个初始代价并行计算模块,所述初始代价并行计算模块为如权利要求1-6中任意一项所述的初始代价并行计算模块。
8.一种匹配代价处理电路,其特征在于,包括:匹配代价加速计算模块,其中所述匹配代价加速计算模块被配置为:用于执行如权利要求1-7中任意一项所述的匹配代价处理方法。
9.一种代价聚合处理方法,其特征在于,包括:
获取初始代价值,所述初始代价值为如权利要求1至7中任意一项所述匹配代价处理方法输出的初始代价值;
按预设的聚合策略对所述初始代价值进行匹配代价聚合处理,以生成匹配代价的聚合结果。
CN202210159223.7A 2022-02-22 2022-02-22 匹配代价处理方法及电路和代价聚合处理方法 Active CN114219699B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210159223.7A CN114219699B (zh) 2022-02-22 2022-02-22 匹配代价处理方法及电路和代价聚合处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210159223.7A CN114219699B (zh) 2022-02-22 2022-02-22 匹配代价处理方法及电路和代价聚合处理方法

Publications (2)

Publication Number Publication Date
CN114219699A CN114219699A (zh) 2022-03-22
CN114219699B true CN114219699B (zh) 2022-07-29

Family

ID=80709263

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210159223.7A Active CN114219699B (zh) 2022-02-22 2022-02-22 匹配代价处理方法及电路和代价聚合处理方法

Country Status (1)

Country Link
CN (1) CN114219699B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114677261B (zh) * 2022-05-27 2022-08-26 绍兴埃瓦科技有限公司 一种视差处理电路和视差处理系统及其方法
CN116563087B (zh) * 2023-05-12 2024-05-14 深圳聚源视芯科技有限公司 一种梯度计算、缓存装置和节约资源的代价计算方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100469146C (zh) * 2004-11-17 2009-03-11 展讯通信(上海)有限公司 视频图像运动补偿装置
JP4518092B2 (ja) * 2006-03-31 2010-08-04 ソニー株式会社 物体認識装置、物体認識方法、物体認識プログラム、特徴量登録装置、特徴量登録方法、及び特徴量登録プログラム
CN102819418B (zh) * 2012-07-31 2015-01-07 中国人民解放军国防科学技术大学 超细粒度门控时钟的fifo数据存储方法及装置
CN108646072B (zh) * 2018-05-16 2019-12-27 电子科技大学 一种基于汉明距的触发产生装置
CN109743562B (zh) * 2019-01-10 2020-12-25 中国科学技术大学 基于Census算法的匹配代价计算电路结构及其工作方法
CN214587004U (zh) * 2021-03-26 2021-11-02 绍兴埃瓦科技有限公司 一种立体匹配加速电路、图像处理器及三维成像电子设备
CN113436057B (zh) * 2021-08-27 2021-11-19 绍兴埃瓦科技有限公司 数据处理方法及双目立体匹配方法

Also Published As

Publication number Publication date
CN114219699A (zh) 2022-03-22

Similar Documents

Publication Publication Date Title
CN108133270B (zh) 卷积神经网络加速方法及装置
CN114219699B (zh) 匹配代价处理方法及电路和代价聚合处理方法
CN108647773B (zh) 一种可重构卷积神经网络的硬件互连系统
US6862035B2 (en) System for matching stereo image in real time
EP3855367A1 (en) Operation accelerator, processing method, and related device
US11989638B2 (en) Convolutional neural network accelerating device and method with input data conversion
US20060002471A1 (en) Motion estimation unit
CN106846235B (zh) 一种利用NVIDIA Kepler GPU汇编指令加速的卷积优化方法及系统
CN111898733B (zh) 一种深度可分离卷积神经网络加速器架构
KR20190074195A (ko) 뉴럴 프로세싱 가속기
JP3228927B2 (ja) プロセッサエレメント、プロセッシングユニット、プロセッサ、及びその演算処理方法
CN109743562B (zh) 基于Census算法的匹配代价计算电路结构及其工作方法
WO2022110386A1 (zh) 数据处理方法及人工智能处理器
Ding et al. Real-time stereo vision system using adaptive weight cost aggregation approach
CN112950656A (zh) 一种基于fpga平台的按通道进行预读取数据的分块卷积方法
CN115238863A (zh) 一种卷积神经网络卷积层的硬件加速方法、系统及应用
KR20190048347A (ko) 프로세서 및 그 제어 방법
CN214587004U (zh) 一种立体匹配加速电路、图像处理器及三维成像电子设备
CN114003201A (zh) 矩阵变换方法、装置及卷积神经网络加速器
CN107368459B (zh) 基于任意维数矩阵乘法的可重构计算结构的调度方法
CN113743587A (zh) 一种卷积神经网络池化计算方法、系统、及存储介质
WO2023184754A1 (zh) 可配置实时视差点云计算装置及方法
US20120281930A1 (en) Flexible pixel-neighbourhood-based reconfigurable computation device
CN114003198B (zh) 内积处理部件、任意精度计算设备、方法及可读存储介质
CN112508174B (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
GR01 Patent grant
GR01 Patent grant