CN113436057B - 数据处理方法及双目立体匹配方法 - Google Patents
数据处理方法及双目立体匹配方法 Download PDFInfo
- Publication number
- CN113436057B CN113436057B CN202110991688.4A CN202110991688A CN113436057B CN 113436057 B CN113436057 B CN 113436057B CN 202110991688 A CN202110991688 A CN 202110991688A CN 113436057 B CN113436057 B CN 113436057B
- Authority
- CN
- China
- Prior art keywords
- data
- cache
- window
- line
- module
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Processing (AREA)
Abstract
本说明书实施例提供一种数据处理方法及双目立体匹配方法,应用于人工智能技术领域,其中采用较小面积的缓存单元,用于立体匹配中进行数据并行组织管理的行缓存模块和窗口缓存组,行缓存模块可按行整行缓存图像的像素数据,并根据并行加速处理的并行度要求,按列取数后向窗口缓存组传输,窗口缓存组通过并行的多个数据窗口构建并行加速处理所需的窗口数据。通过对并行加速处理所需的数据进行并行组织管理,不仅缓存面积小,还可实现数据复用,避免重复读取数据,保证了并行加速处理的效率。
Description
技术领域
本发明涉及人工智能技术领域,具体涉及一种立体匹配的数据处理方法及双目立体匹配方法。
背景技术
目前,图像立体匹配中,主要有局部立体匹配、全局立体匹配、基于左右视图特征点的立体匹配、深度学习深度估计等,这些匹配算法的核心都是从参考图像中找到高度相似的对应匹配点,然后根据相机的内外参数计算左右视图的视差获得深度信息。
现有立体匹配处理方案中,需要涉及大量数据进行计算处理,比如图像的输入数据数据量庞大,比如Census编码中需要对大量像素进行处理,比如代价计算中需要对大量像素进行计算等等。
虽然可通过对数据进行简单缓存,并采用数据窗口进行滑动处理,可一定程度上提高了处理效率,以及数据窗口在水平移动过程中使用移位寄存器可以避免窗口数据的重复读取,比如清空当前缓存,等缓存下组一个图像行数据后,再进行窗口数据读取,比如采用乒乓缓存,窗口直接读取另一个已经缓存好的下组一个图像行数据等等,但是目前的缓存方案中,计算单元可能需要等待更新后才能读取缓存,不仅缓存单元可能需要较大的片上缓存面积,还有数据窗口在下移过程中每个数据对应窗口中的不同行会被重复读取多次,耗费过多内存读取周期,限制了系统处理速率,仍很难满足实际应用中都处理速率的使用要求。
因此,亟需一种新的数据处理方案。
发明内容
有鉴于此,本说明书实施例提供一种立体匹配的数据处理方法及双目立体匹配方法,以对立体匹配中的处理数据进行有效并行组织管理,降低立体匹配对硬件要求,提高立体匹配在各种应用场合中的适应性,有利于立体匹配在不同应用场合中部署应用。
本说明书实施例提供以下技术方案:
本说明书实施例提供一种数据处理方法,应用于立体匹配的硬件并行加速处理中,包括:根据预设的并行处理策略,设置行缓存模块和窗口缓存组,所述窗口缓存组包括第一数量的第一数据窗口,所述第一数据窗口的高度和宽度分别记为h+1和w+1,所述第一数量为并行加速处理的并行度,记为a,所述行缓存模块的高度不小于第二数量,其中所述第二数量为h和a之和,所述行缓存模块的宽度为立体匹配中待处理图像的宽度;
其中,所述行缓存模块被配置为执行如下操作:
按预设的第一缓存策略,将所述待处理图像的图像数据按行整行缓存;
在预设的列周期控制下,按列选取所述第二数量的目标像素,并将所述目标像素向所述窗口缓存组传输;
在接收到所述窗口缓存组发送的第一反馈信号时,按预设的第三缓存策略更新缓存数据;
所述窗口缓存组被配置为执行如下操作:
在接收到所述行缓存模块发送的所述目标像素时,按预设的第二缓存策略,将所述目标像素缓存于对应的所述第一数据窗口,其中第1个至第h+1个的所述目标像素缓存于第一个所述第一数据窗口的最右侧一列,第2个至第h+2个的所述目标像素缓存于第二个所述第一数据窗口的最右侧一列,直至第h+1个至第h+a个的所述目标像素缓存于第a个所述第一数据窗口的最右侧一列;
控制每个所述第一数据窗口中的列向左移位一列,以将所述行缓存模块发送的下一组目标像素缓存于所述第一数据窗口的最右侧一列;
在并行加速处理中,当完成一个行遍历周期时,向所述行缓存模块发送所述第一反馈信号,以使所述行缓存模块更新缓存数据。
可选地,所述行缓存模块的高度不小于(h+2a-1),按预设的第三缓存策略更新缓存数据包括:移除前a行数据,并读入a行新数据进行缓存。
可选地,所述数据处理方法还包括:将所述行缓存模块设置的行地址索址空间设为[0:h+2a-1],其中将[0:h+a-1]的行地址索址空间记为输出指针index_1,将[h+a:h+2a-1]的行地址索址空间记为更新指针index_2;
按预设的第三缓存策略更新缓存数据,包括:将index_1、index_2下移a行,并更新index_1和index_2,其中index_1=(index_1+a) MOD(h+2a-1),index_2=(index_2+a) MOD(h+2a-1 )。
可选地,所述行缓存模块包括若干阵列块、物理地址标识和虚拟地址标识,所述阵列块为通过所述物理地址标识和所述虚拟地址标识共同寻址的缓存单元;
所述行缓存模块还被配置为执行以下操作:
根据所述物理地址标识和所述虚拟地址标识共同寻址,以按预设的第一缓存策略,将所述待处理图像的图像数据按行整行缓存,以及在预设的列周期控制下,按列选取所述第二数量的目标像素,并将所述目标像素向所述窗口缓存组传输,以及在接收到所述窗口缓存组发送的第一反馈信号时,按预设的第三缓存策略更新缓存数据。
可选地,所述数据处理方法还包括:按所述第一缓存策略,设置行缓存更新模块,所述行缓存更新模块的宽度为所述待处理图像的宽度,所述行缓存更新模块的高度为所述并行度;
其中,所述行缓存更新模块被配置为执行以下操作:
当所述行缓存模块接收到所述第一反馈信号时,向所述行缓存模块传输a行新数据,以使所述行缓存模块缓存所述a行新数据。
可选地,所述数据处理方法还包括:按预设的编码策略,设置中心变换编码模块,所述中心变换编码模块包括若干比较器,所述比较器用于所述第一数据窗口中的中心像素与邻域像素进行比较;
所述中心变换编码模块被配置为执行以下操作:
在一个列周期内,输出每个所述第一数据窗口的中心像素与邻域像素的比较结果。
可选地,所述中心变换编码模块还被配置为执行以下操作:对所述比较结果进行编码,以输出a个相邻列像素的中心转换编码。
可选地,所述第一数据窗口为由移位寄存器构成的缓存单元。
可选地,所述数据处理方法还包括:根据所述并行处理策略,设置代价聚合模块,所述代价聚合模块包括第三数量的第二数据窗口,所述第二数据窗口的高度和宽度为i+1和j+1,所述第三数量为并行度;
所述代价聚合模块被配置为执行以下操作:
在所述第二数据窗口的列向进行求和,得到第一聚合代价;
将所述第二数据窗口中的所有列对应的第一聚合代价求和,得到第二聚合代价;
在得到所述第二聚合代价时,将所述第二数据窗口的最左一列数据移出,将新数据添加至所述第二数据窗口的最右一列;
在更新数据后,将所述第二数据窗口的上一个窗口对应的第二聚合代价减去被移除的最左一列对应的第一聚合代价,然后加上新加入的最右一列对应的第一聚合代价,以作为所述第二数据窗口的当前窗口对应的第二聚合代价。
本说明书实施例还提供一种双目立体匹配方法,包括如前述任意一项所述的数据处理方法,以通过所述数据处理方法对双目立体匹配的待处理数据进行处理。
与现有技术相比,本说明书实施例采用的上述至少一个技术方案能够达到的有益效果至少包括:
通过行缓存模块、窗口缓存组和行缓存更新模块,可有效地对需要并行加速处理的数据进行并行组织管理,实现数据流水线计算和列数据复用,其中可在一个行缓存周期将并行度对应的多行数据进行整体缓存于行缓存单元中,以及在行缓存单元完成缓存后,在列周期控制下将存储数据按列方向输出至窗口缓存模组中对应的数据窗口,可在多个列周期操作后并行地构建完毕窗口缓存模组中的多个初始数据窗口,而且在后续基于数据窗口进行滑动窗并行处理中,窗口在水平线上滑动,每次计算新的一点的变换只需要在窗口最右侧加入新一列像素并移出最左一列像素。
因此,通过本方案提供的缓存处理,不仅可采用较小的缓存空间,实现并行处理效能,以及在实现对前一行遍历过程中可以部分行数据可复用,避免数据窗口在下移过程中每个数据对应窗口中的不同行会被重复读取多次,而耗费过多内存读取周期,通过数据复用不需要重新从主存中读取以读取的部分数据,可直接用于计算,降低主存读写带宽资源占用,可提高系统处理速率;而且,基于所构建的数据窗口,可为实现高效流水线匹配代价计算提供高效缓存数据流,比如可基于所构建的初始数据窗口,通过寄存器间数值比较或累加等方式,快速地获得相应的Census编码或匹配代价值,同时在后续窗口更新时,只需要移除窗口一侧(如左侧)数据,然后在窗口另一侧(如右侧)添加新一列数据,可快速地更新窗口数据,即完成新窗口构建,并实现窗口数据复用,有效提高输出处理效率;
例如,以Census 变换为例,并行度为3的应用示例中,基于缓存所建立的3个窗口,即可基于每列读取h +2个数据来同时构建3个并行数据窗口,这时在h +2个时钟的列周期内系统将完成3个窗口的数据更新,同时使能变换信号产生编码数据,以及当移动至每行末尾时,3个变换窗口同时下移3 行,进行下一周期窗口计算,因而扩展后处理频率将达到3/(h +2)像素/单位时钟,当h 较大时处理速度提升接近3倍。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本说明书实施例提供的一种数据处理方法的示意图;
图2是本说明书实施例提供的一种数据处理方法的示意图;
图3a是本说明书实施例提供的一种数据处理方法中第1个列周期下数据处理的示意图;
图3b是本说明书实施例提供的一种数据处理方法中第2个列周期下数据处理的示意图;
图3c是本说明书实施例提供的一种数据处理方法中第3个列周期下数据处理的示意图;
图3d是本说明书实施例提供的一种数据处理方法中第4个列周期下数据处理的示意图;
图3e是本说明书实施例提供的一种数据处理方法中第5个列周期下数据处理的示意图;
图3f是本说明书实施例提供的一种数据处理方法中第6个列周期下数据处理的示意图;
图3g是本说明书实施例提供的一种数据处理方法中第7个列周期下数据处理的示意图;
图3h是本说明书实施例提供的一种数据处理方法中第8个列周期下数据处理的示意图;
图4是本说明书实施例提供的一种数据处理方法中行缓存模块进行读写数据的示意图;
图5a是本说明书实施例提供的一种数据处理方法中第一个行遍历周期下行缓存模块读写数据的示意图;
图5b是本说明书实施例提供的一种数据处理方法中第二个行遍历周期下行缓存模块读写数据的示意图;
图5c是本说明书实施例提供的一种数据处理方法中第三个行遍历周期下行缓存模块读写数据的示意图;
图5d是本说明书实施例提供的一种数据处理方法中第九个行遍历周期下行缓存模块读写数据的示意图;
图6是本说明书实施例提供的一种数据处理方法中行缓存模块通过寻址进行读写数据的示意图;
图7是本说明书实施例提供的一种数据处理方法中通过行缓存更新模块对行缓存模块进行更新的示意图;
图8是本说明书实施例提供的一种数据处理方法中行缓存模块通过物理地址和虚拟地址进行寻址取数的示意图;
图9是本说明书实施例提供的一种数据处理方法中通过并行组织管理的数据进行中心编码的示意图;
图10是本说明书实施例提供的一种数据处理方法中比较器的示意图;
图11是本说明书实施例提供的一种数据处理方法中通过并行组织管理的数据进行代价聚合的示意图;
图12是本说明书实施例提供的一种双目立体匹配方法的示意图。
具体实施方式
以下通过特定的具体实例说明本申请的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本申请的其他优点与功效。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。本申请还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本申请的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。应显而易见,本文中所描述的方面可体现于广泛多种形式中,且本文中所描述的任何特定结构及/或功能仅为说明性的。基于本申请,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其它方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目和方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其它结构及/或功能性实施此设备及/或实践此方法。
还需要说明的是,以下实施例中所提供的图示仅以示意方式说明本申请的基本构想,图式中仅显示与本申请中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
另外,在以下描述中,提供具体细节是为了便于透彻理解实例。然而,所属领域的技术人员将理解,可在没有这些特定细节的情况下实践所述方面。术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等描述的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
传统立体匹配处理方案中,早期方案通常是基于硬件系统使用逐行扫描法一个像素接着一个像素地生成视差图,虽然实现简单,但效率低下。后期处理方案中对数据进行简单缓存,并采用数据窗口进行滑动处理,能够一定程度上提高了处理效率,甚至数据窗口在水平移动过程中使用移位寄存器来避免窗口数据的重复读取,如先清空当前缓存,等缓存下组一个图像行数据后,再进行窗口数据读取。
例如,采用乒乓缓存,窗口直接读取另一个已经缓存好的一个图像行数据等,但是这样的缓存方案,计算单元需要等待更新后才能读取缓存,缓存单元可能需要较大的片上缓存面积,还有数据窗口在下移过程中每个数据对应窗口中的不同行会被重复读取多次,耗费过多内存读取周期,限制了系统处理速率。
因此,为了实现图像立体匹配中的并行加速处理,需要对数据流进行有效的并行组织管理,其中并行处理的缓存可涉及图像输入数据缓存、编码数据缓存、代价数据缓存等等。
基于此,在对立体匹配方案进行研究分析和改进探索中,针对立体匹配的硬件并行加速处理需要,提成了一种新的数据缓存处理方案:
假如,待处理的图像数据(即图像尺寸)为m×n,其中m为图像数据中行方向上像素的数量,即一行上像素的数量,也称为宽度,n为图像数据中列方向上像素的数量,即一列上像素的数量,也称为高度;并行计算所需的数据窗口的尺寸为(h+1)×(w+1),并行度为a;需要说明的是,前述m、n、h、w、a等均为正整数;
如图1所示,可采用面积较小的缓存单元作为缓存模块,如图像行缓存模块、窗口缓存组等,从而可利用较小缓存,满足硬件并行加速处理的数据缓存设计需要。
实施中,图像行缓存模块可为(h+a)×m的行列式缓存单元结构,行缓存更新模块可为a×m的行列式缓存单元结构,窗口缓存组可为a个数据窗口,其中数据窗口可为(h+1)×(w+1)的窗口,其中,a为前述并行度,h为前述数据窗口中参数h,m为前述图像数据的宽度。
在行缓存周期的控制下,行缓存单元对图像数据按行对整行图像数据缓存,在完成(h+a)行数据后,可在列周期控制下按列地向窗口缓存组输出缓存数据,以构建出后续并行计算所需的数据窗口。其中,行缓存模块向窗口缓存组按列输出一列数据,即如图中所示,可从左右往右地依次输出各列数据,其中一次输出为从0至(h+a-1)行取同一列的(h+a)个像素数据进行输出,而且将0至h行的列数据存入第一个窗口缓存模块(即图中窗口缓存模块1),1至(h+1)行的列数据存入第二个窗口缓存模块(图中窗口缓存模块2),依次直到h至(h+a-1)行的列数据存入第a个窗口缓存模块(即图中窗口缓存模块a),以及数据窗口可为向左移位的移位寄存器队列,这时先入的一列像素数据将向左移位,新一列的像素数据将进入队列右侧,因而可在(h +a-1)个时钟的列周期操作后构建出a个数据窗口,如图中的窗口缓存模块1至窗口缓存模块a,从而可基于这些a个数据窗口,实现数据流水线计算和列数据复用,即实现并行度为a的硬件并行加速处理的立体匹配,以及数据窗口在水平线上滑动时,每次计算新的一点的变换只需要在窗口最右侧加入新一列像素并移出最左一列像素,因而不需要重复读入全部数据,只需要将窗口移动一列,然后更新一列移位存储器内的数据。
实施中,数据窗口中的数据可如下更新:在基于数据窗口进行并行加速处理时,由于各数据窗口的最左侧一列数据,均在一个处理中被并行完成计算,因而在完成一次并行计算后,可将最左侧一列数据一处数据窗口,以及数据窗口的各列数据向左移位,新一列数据存入各数据窗口的最右侧一列,可实现多列数据复用。
实施中,图像行缓存模块的数据可如下更新:在基于数据窗口进行并行加速处理中,图像行缓存模块可在将最右侧一列数据向窗口缓存组传输后,鉴于并行滑动的数据窗口遍历完整行像素,比如在每一个行周期完成a行像素中心变换操作,因而当完成一个行并行变换操作后,为了进一步复用先前图像行缓存数据,可在窗口的行周期操作结束时,图像行缓存模块移除已完成窗口操作的前a行数据,同时图像行缓存更新模块同步地向图像行缓存模块更新连续的a行数据,很好地实现行数据复用。
因此,通过小面积的缓存单元,可很好地实现数据缓存和复用,可满足立体匹配中的硬件并行加速处理需要,提高系统处理速度和处理效率。
以下结合附图,说明本申请各实施例提供的技术方案。
本说明书实施例提供一种立体匹配的数据处理方法,应用于立体匹配的硬件并行加速处理中,通过对处理数据进行并行组织管理,可提高立体匹配中的数据处理效率。
如图2所示,可根据预设的并行处理策略,有针对性地设置行缓存模块和窗口缓存组,从而可采用较小面积的缓存单元,对需要进行硬件并行加速处理的图像数据进行高效的并行组织管理。其中,窗口缓存组可包括第一数量的数据窗口,所述数据窗口的高度和宽度分别记为h+1和w+1,所述第一数量为并行加速处理的并行度,记为a,因而窗口缓存组可包括有数据窗口1至数据窗口a;行缓存模块的高度不小于第二数量,其中所述第二数量为h和a之和,所述行缓存模块的宽度为立体匹配中待处理图像的宽度,比如图中行缓存模块的宽度为m(即与图像数据的宽度m相同),高度为h+2a-1。
需要说明的是,并行处理策略可为用于进行并行处理的策略,比如策略中规定了并行度、行缓存的高度、数据窗口的大小(即宽度、高度)等等,该策略可根据实际应用需要进行预设、调整,这里不作限定。
实施中,行缓存模块可用于缓存待处理的图像数据,行缓存模块的大小可根据实际应用需要进行确定;窗口缓存组用于采用并行组织管理方式,将行缓存模块的数据,缓存为当前并行加速处理的计算单元所需的多个并行窗口的数据,以及在数据窗口的数据更新时,可向并行加速处理的计算单元提供窗口数据进行并行加速处理,同时通过列移位可实现并行加速处理中的数据复用,避免重复读取数据。
实施中,所述行缓存模块可被配置为执行如下操作步骤:
步骤S202、按预设的第一缓存策略,将所述待处理图像的图像数据按行整行缓存。如前述,鉴于行缓存模块的宽度与图像数据的宽度相同,即均为m,这时可将图像数据的整行像素按行缓存与行缓存模块中。
需要说明的是,第一缓存策略可为行缓存模块进行缓存的策略,比如策略中可规定行缓存模块的缓存读写方式等,该策略可根据实际应用需要进行预设、调整,这里不作限定。
步骤S204、在预设的列周期控制下,按列选取所述第二数量的目标像素,并将所述目标像素向所述窗口缓存组传输。
例如,在第一个列周期控制下,从第一列(即列标号为0的列)选取h+1个数据,然后向窗口缓存组传输。具体地,将第1个(即行标号为0、列标号为0的数)至第h+1个数据(即行标号为h、列标号为0的数据)存入数据窗口1的最右侧一列,第2个(即行标号为1、列标号为0的数据)至第h+2个数据(即行标号为h+1、列标号为0的数据)存入数据窗口2的最右侧一列,依次直到将第h+1个(即行标号为h、列标号为0的数据)至第h+a个数据(即行标号为h+a-1、列标号为0的数据)存入数据窗口a的最右侧一列,这时每个数据窗口的最右侧一列均完成数据存储;需要说明的是,数据窗口在完成一列存储时,可将该列数据向左移位一列,以在下一个周期内将新接收的数据缓存于最右侧一列中。
然后,在第二个列周期控制下,从第二列(即列标号为1的列)仍选取h+1个数据,然后向窗口缓存组传输。同理,可将第1个(即行标号为0、列标号为1的数据)至第h+1个数据(即行标号为h、列标号为1的数据)存入数据窗口1的最右侧一列,第2个(即行标号为1、列标号为1的数据)至第h+2个数据(即行标号为h+1、列标号为1的数据)存入数据窗口2的最右侧一列,依次直到将第h+1个(即行标号为h、列标号为1的数据)至第h+a个数据(即行标号为h+a-1、列标号为1的数据)存入数据窗口a的最右侧一列,此时又完成数据窗口的最右侧一列的数据存储。
因此,经w+1个列周期控制后,窗口缓存组中的每个数据窗口均完成数据构建,此时可基于构建完毕的数据窗口进行并行度为a的硬件并行加速处理,比如匹配代价计算。而在完成并行度为a的并行计算后,窗口缓存组可发出第一反馈信号,使得行缓存模块进行a行数据的缓存更新,即执行步骤S206。
步骤S206、在接收到所述窗口缓存组发送的第一反馈信号时,按预设的第三缓存策略更新缓存数据。
需要说明的是,第三缓存策略可为行缓存模块进行缓存更新的策略,比如策略中可规定行缓存模块的更新方式及读写方式等,该策略可根据实际应用需要进行预设、调整,这里不作限定。
实施中,鉴于硬件并行加速处理的并行度为a,因而窗口缓存组可在一个数据窗口的行遍历周期内,向并行加速计算提供a行数据进行硬件并行加速处理,即基于窗口缓存组后,可同时完成a行数据的并行加速处理,因而在更新行缓存模块中的缓存数据时,可将a行新的数据缓存于已被遍历并完成并行计算的a行缓存中。
例如,在第一个行遍历周期,即接收到第一个反馈信号时,表明行缓存模块中的前a行数据已完成并行加速处理,因而可将该前a行数据移除,进而将新的a行数据缓存于被移除位置。而在第二个行遍历周期,即接收到第二个反馈信号时,表明行缓存模块中接下来的a行数据又完成了并行加速处理,因而可将该a行缓存数据进行移除,并将a行新的缓存数据缓存于被移除位置。依次类推地进行行缓存模块的数据缓存更新操作,这里不再赘述。
实施中,所述窗口缓存组可被配置为执行如下操作步骤:
步骤S402、在接收到所述行缓存模块发送的所述目标像素时,按预设的第二缓存策略,将所述目标像素缓存于对应的所述数据窗口,其中第1个至第h+1个的所述目标像素缓存于第一个数据窗口的最右侧一列,第2个至第h+2个的所述目标像素缓存于第二个数据窗口的最右侧一列,直至第h+1个至第h+a个的所述目标像素缓存于第a个数据窗口的最右侧一列。
需要说明的是,第二缓存策略可为窗口缓存组对数据窗口进行数据缓存的策略,比如策略中可规定接收行缓存模块传输的目标像素的策略,将目标像素向各个数据窗口进行缓存的读写方式,向并行加速处理的计算单元提供窗口数据等,该策略可根据实际应用需要进行预设、调整,这里不作限定。
步骤S404、控制每个所述数据窗口中的列向左移位一列,以将所述行缓存模块发送的下一组目标像素缓存于所述数据窗口的最右侧一列。
实施中,数据窗口可在完成
步骤S406、在并行加速处理中,当完成一个行遍历周期时,向所述行缓存模块发送所述第一反馈信号,以使所述行缓存模块更新缓存数据。
需要说明的是,窗口缓存组在利用行缓存模块发送的每组所述目标像素构建初始的数据窗口的过程,可参见前述说明,这里不再一一展开说明。
实施中,鉴于是采用面积较小的存储单元作为缓存单元,这时图像数据的宽度通常比数据窗口的宽度要大,即m通常大于w,因而并行加速处理中要遍历完一行数据,行缓存模块需要的列周期的数量为m个,其中通过前w+1个列周期可构建完毕窗口缓存组中每个数据窗口,而且在构建完数据窗口后,窗口缓存组可用于并行加速处理,并在每次向并行加速处理单元提供窗口数据后,每个数据窗口中数据列均向左移位一列,以缓存行缓存模块在列周期控制下发送的下一组目标像素,因而在w+1个列周期构建完毕数据窗口后,再经(m-w-1)个列周期,将完成a行缓存数据的并行加速处理。
窗口缓存组在完成行遍历后,可向行缓存模块发送反馈信号,以使行缓存模块可以更新a行缓存数据。其中,反馈信号可根据实际应用需要设置,这里不作限定。
以针对宽高尺寸为8×64的图像块进行硬件并行加速处理为例进行示意说明,以及设置行缓存模块为8×8阵列、数据窗口为3×3阵列、并行度为3,此时m=8,h=2,w=2,a=3。
如图3a至图3c所示,行缓存模块可暂时缓存8行数据,并在前3个列周期(即第1个至第3个列周期)的控制下,依次按列选取5个数据向窗口缓存组传输,进而在3个列周期结束时,三个用于并行加速处理的数据窗口,即图中的数据窗口A1至数据窗口A3构建完毕,在构建完毕后,窗口缓存组可以用于并行加速处理,比如针对窗口的中心像素进行并行计算,得到每个数据窗口的中心像素与邻域像素的比较结果,比如图3c中,数据窗口A1的中心像素(1,1)与邻域像素进行计算,数据窗口A2的中心像素(2,1)与邻域像素进行计算,数据窗口A3的中心像素(3,1)与邻域像素进行计算,因而在一个并行处理周期可完成三个数据窗口的并行加速处理,实现并行度为3的加速处理。
如图3d至图3h所示,窗口缓存组在向并行加速处理的计算单元提供一次窗口数据后,可控制每个数据窗口中各列向左移位一列,即将最左一列移除,最右一列可用于缓存行缓存模块发送的下一组目标像素,而行缓存模块在后续列周期(如第4个至第8个列周期)的控制下,依次按列取数后向窗口缓存组传输新一组目标像素数据,窗口缓存组在每次更新最右侧一列数据时,向并行加速处理的计算单元提供数据窗口中的数据进行并行加速处理。
进而在完成第8个列周期按列取数及传输后,前3行缓存数据(即行标号为0至2的3行数据)将完成并行加速处理,这时窗口缓存组将向行缓存模块发送第一反馈信号,表示前3行缓存数据以完成行遍历的并行加速处理,因而行缓存模块可更新该3行缓存数据,即向移除该3行数据,然后存入3行新数据。而第二个行遍历周期内,行缓存模块将从第4行(即行标号为3的行缓存)开始按列取数,依此类推,行缓存模块不断地进行取数、传输及更新缓存,而窗口缓存组不断地向并行加速处理的计算单元提供窗口数据,直到整幅图像完成并行加速处理。
需要说明的是,待处理图像(或者图像分块)的尺寸(即图像宽m、高n等参数),可根据实际应用设定,而且在图像宽度确定后,行缓存模块的宽度也将得到确定,这里不对图像数据作限定。
需要说明的是,实施例中是以立体匹配中的参考图(或者说参考图像)为例进行示意说明,在多目立体匹配中,目标图(或者说目标图像)的并行组织管理也可参考前述说明内容,这里不再展开说明。
通过前述的行缓存模块和窗口缓存组,可基于小面积的缓存单元对并行加速处理中的数据进行高效的并行组织管理,所需缓存单元的数量远小于传统缓存滑窗处理,可在较少处理周期内,快速地构建完毕并行加速处理所需的多个数据,不仅降低了缓存单元的面积要求,从而降低对应用设备的硬件性能要求,有利于并行加速处理方案灵活应用于不同的硬件使用场合,而且基于并行组织管理的窗口数据,可实现多行数据的并行加速处理,同时实现数据复用,比如在后续数据窗口的数据更新时,只需要移除窗口左侧数据,然后在窗口右侧添加一列新数据,便可完成新的窗口构建,实现窗口数据复用,避免系统重复读取数据,提高并行加速处理效率,同样有利于并行加速处理方案应用于各种使用场景中。
在一些实施方式中,行缓存模块中缓存行的数量可不小于第三数量,其中第三数量为h+2a-1,使得每个行遍历周期内,均至少有a行缓存轮替地处于缓存状态,可提高数据复用及读取效率。
实施中,行缓存模块中可包括针对行缓存模块进行更新缓存的功能单元,此时行缓存模块可根据窗口缓存组发送的第一反馈信号,从外部的图像数据中读取a行新数据,同时将已被并行加速处理的a行旧数据移除,进而将读取的a行新数据填充到原a行旧数据所在位置,即在按预设的第三缓存策略更新缓存数据可包括:移除前a行数据,并读入a行新数据进行缓存。
以行缓存模块中缓存8行数据、数据窗口为3×3、并行度为3进行示例的示意说明,此时h=2,w=2,a=3。
如图4所示,行缓存模块(即图中的图像行缓存电路)可从主存中读取数据进行缓存,其中可通过写地址选择信号Index_2完成a行新数据的更新操作;以及,行缓存模块可通过读地址选择信号Index_1按列取数并向窗口缓存组(即图中的窗口缓存移位寄存器组)中的各个数据窗口传输数据a行新数据的更新操作
下面以按列取数向窗口缓存组传输数据为示例进行示意说明。
如图5a所示,行缓存模块(即图中图像行缓存电路)缓存的8行数据(即图中的参考图行缓存0至参考图行缓存7),在第一个行遍历周期内,按前述说明方式向窗口缓存组(即图中的窗口缓存移位寄存器组)传输,即在列周期控制下,按列取5个数据,即从第1行至第5行缓存数据(即图中的参考图行缓存0至参考图行缓存4)中按列取数,向窗口缓存组传输构建窗口数据,而窗口缓存组控制每个数据窗口缓存数据,并向并行加速处理的计算单元提供并行窗口数据进行并行加速处理,但完成第一个行遍历周期时,即进入到第二个行遍历周期。
如图5b所示,在进入第二个行遍历周期时,前3行缓存数据(即图中的参考图行缓存0至参考图行缓存2)刚完成并行加速处理,此时需要进行缓存数据的更新,因而将从第4行缓存数据(即图中的参考图行缓存3)开始按列取数,即从第4行至第8行缓存数据(即图中的参考图行缓存3至参考图行缓存7)中取数,同时针对前3行(即图中的参考图行缓存0至参考图行缓存2)的缓存数据进行缓存更新处理。
如图5c所示,在进入第三个行遍历周期时,第4行至第6行缓存数据(即图中的参考图行缓存3至参考图行缓存5)刚完成并行加速处理,此时需要进行缓存数据的更新,因而将从第7行缓存数据(即图中的参考图行缓存6)开始按列取数,即从第7行至第8行以及第1行至第3行的缓存数据(即图中的参考图行缓存6至参考图行缓存7,以及即图中的参考图行缓存0至参考图行缓存2)中取数,同时针第4行至第6行共3行的缓存数据(即图中的参考图行缓存3至参考图行缓存5)进行更新缓存处理。
依此类推,直到第九个行遍历周期,如图5d所示,此时再次从第1行开始按列取数,不再赘述。
需要说明的是,行缓存模块中移除行缓存的数据、更新行缓存的数据等操作,可根据实际应用需要,可同时移除a行数据,也可逐行移除,更新操作类似,这里不作限定。
在一些实施方式中,在缓存行的数量大于所述第二数量时,比如行缓存模块有(h+2a-1)行缓存时,将有至少a行轮替地处于缓存状态。这时,行缓存模块可将全部行完成缓存后再按列取数向窗口缓存组输出,也可在缓存前(h+a-1)行数据后,在按列取数向窗口缓存组输出的同时,对该a行缓存进行数据写入(即更新),可节省缓存周期,提高处理效率。
在一些实施方式中,可通过寻址操作,快速地从行缓存模块中提取数据,以及更新行缓存模块的数据。
实施中,所述数据处理方法还可包括:将所述行缓存模块设置的行地址索址空间设为[0:h+2a-1],其中将[0:h+a-1]的行地址索址空间记为输出指针index_1,将[h+a:h+2a-1]的行地址索址空间记为更新指针index_2;
按预设的第三缓存策略更新缓存数据,可包括:将index_1、index_2下移a行,并更新index_1和index_2,其中更新方式是:index_1=(index_1+a) MOD(h+2a-1),index_2=(index_2+a) MOD (h+2a-1 ),MOD为求余运算。
图6为一种数据处理方法中的寻址过程的示意说明。
如图6所示,在第一个行遍历周期时,行缓存模块(即图像行缓存电路)按列取数,此时图像行缓存电路前索址空间为第1行至第5行(如图中的行地址0至行地址4),更新缓存电路前索址空间可为第6行至第8行(如图中的行地址5至行地址7),数据窗口对应的数据可如图中三个方框所标记的示意区域。
在完成第一个行遍历周期,行地址减a行,即index_1下移3行地址,进入第二个行遍历周期后,从行地址3开始按列取数,使得第3行和第4行的数据(如图中的行地址3至行地址4的两行数据)得到复用,数据窗口对应的数据可如图中三个方框所标记的示意区域。
同理,在完成第二个行遍历周期,行地址继续减a行,即index_1下移3行地址,进入第三个行遍历周期后,从行地址6开始按列取数,使得第7行和第8行的数据(如图中的行地址6至行地址7的两行数据)得到复用,数据窗口对应的数据可如图中三个方框所标记的示意区域。依此类推,在每个行遍历周期均可实现数据复用。
需要说明的是,行缓存模块中行数可大于(h+2a-1),寻址过程可参照前述示例进行设置,这里不作限定。
另外,图中的Index_1为读地址选择信号,通过多路选择器根据读地址选择信号,按序选择对应的输出行,并按序与窗口移位寄存器组对应的输入端口连通;缓存更新同理,不再展开。
在一些实施方式中,行缓存模块中缓存行数可为所述第二数量,即行缓存模块有h+a行缓存,此时可在行缓存模块的外部设置行更新模块,以对行缓存模块进行行缓存的更新操作。
实施中,所述数据处理方法还可包括:按所述第一缓存策略,设置行缓存更新模块,所述行缓存更新模块的宽度为所述待处理图像的宽度,所述行缓存更新模块的高度为所述并行度;
其中,所述行缓存更新模块被配置为执行以下操作:
当所述行缓存模块接收到所述第一反馈信号时,向所述行缓存模块传输a行新数据,以使所述行缓存模块缓存所述a行新数据。
如图7所示,行缓存更新模块(即图中的图像行缓存更新模块)的缓存行数量为a行,为便于与行缓存模块中的缓存行进行区分,可标记为参考图行缓存更新h-1+a-1至参考图行缓存更新h-1+2a,进而可利用该a行数据对行缓存模块中已完成并行加速处理的a行旧数据进行更新。
实施中,每个行遍历周期结束时,行缓存模块需下移a行,重新按列提取数据向窗口缓存组传输,以使得每个数据窗口获取新的窗口数据,此时可将当前的行缓存更新电路状态变为缓存读出状态,并与前述可复用数据行构成新的图像缓存行数据,用于在下个行遍历周期结束后窗口下移时,作为新的缓存行输出数据。
需要说明的是,窗口缓存组发送的第一反馈信号,可通过行缓存模块后间接告知行缓存更新模块,也可直接告知行缓存更新模块,这里不作限定。
在一些实施方式中,可采用缓存用的阵列块(bank)有效组织出行缓存模块的架构,提高数据读写效率。
实施中,所述行缓存模块包括若干阵列块、物理地址标识和虚拟地址标识,所述阵列块为通过所述物理地址标识和所述虚拟地址标识共同寻址的缓存单元;因而,所述行缓存模块还被配置为执行以下操作:根据所述物理地址标识和所述虚拟地址标识共同寻址,以按预设的第一缓存策略,将所述待处理图像的图像数据按行整行缓存,以及在预设的列周期控制下,按列选取所述第二数量的目标像素,并将所述目标像素向所述窗口缓存组传输,以及在接收到所述窗口缓存组发送的第一反馈信号时,按预设的第三缓存策略更新缓存数据。
如图8所示,在一个512行缓存架构中,分成4个阵列块(即图中的Bank0至Bank3),进而通过物理地址(即图中的Physical address)结合虚拟地址(即图中的Virtualaddress)进行寻址,快速地对各个阵列块寻址来读写数据。
实施中,可采用一级缓存(如图中的Buffer)和相应的数据合路器(如四路输入、一路输出)进行并行32bit读出操作,这里不再展开说明。
在一些实施方式中,可基于窗口缓存组提供并行的多个数据窗口的数据,进行立体匹配中的中心变换编码,从而可快速获得编码结果,实现硬件并行加速处理。
实施中,所述数据处理方法还可包括:按预设的编码策略,设置中心变换编码模块,所述中心变换编码模块包括若干比较器,所述比较器用于所述数据窗口中的中心像素与邻域像素进行比较;因而,所述中心变换编码模块被配置为执行以下操作:在一个列周期内,输出每个所述数据窗口的中心像素与邻域像素的比较结果。
如图9和图10所示,中心变换编码模块中可通过比较器,快速获得各个数据窗口的中心像素与其邻域像素的输出结果,这里不再展开说明。
在一些实施方式中,可按并行度将比较器分组,即可将a×((h+1)×(w+1)-1)个比较器分为a组,每组比较器的公共输入端与窗口缓存组(即图中的窗口缓存移位寄存器组)中窗口的中心像素所在寄存器单元连接,其余输入端分别与中心像素的邻域像素所在寄存器相连;每一个窗口中心变换周期,每组比较器同步实现((h+1)×(w+1)-1)个比较结果输出,完成当前窗口中心像素中心变换编码,生成该像素编码比特串;a组比较器输出列方向a个中心像素中心变换编码。
在一些实施方式中,在获得各个数据窗口的中心像素与邻域像素的比较结果后,可对所述比较结果进行编码,以输出a个相邻列像素的中心转换编码,通过编码后提高数据处理效率。
需要说明的是,编码方式可根据实际应用选用成熟的编码方式,这里不作限定。
在一些实施方式中,所述数据窗口为由移位寄存器构成的缓存单元,从而可快速完成移位操作,提高处理效率。
在一些实施方式中,可针对代价聚合进行并行组织管理,提高数据处理效率。
区域匹配算法假设支持邻域内的像素具有相同的视差值,即视差相同的邻域像素可以看作具有相同深度信息。然而,这一假设在场景中的物体边缘等视差不连续区域上会造成误匹配,因为在物体边缘或遮挡区域部分无法满足视差一致性约束。实时立体视觉系统在对真实场景处理时,不能预先得知场景中的结构信息,相应的也无法确定每个像素适合的支持邻域。
目前,在区域匹配算法中,邻域的设定有两种形式,即固定窗口和可变窗口。其中,固定窗口是假设每个像素周围固定尺寸支持区域内的像素点视差相同,因而区域匹配算法中常用的矩形窗口就是基于这一假设。由于这一假设与真实场景的视差存在一定的误差,所以采用固定窗口作为支持区域的匹配方法容易造成匹配率低的现象。因此,可变窗口为另一种解决方案,比如常用的可变窗口,有可移动窗口、多窗口、变量窗口,窗口分割、自适应权重窗口等。与固定窗口算法相比,可变窗口方案虽然更适应于不同环境,提高了匹配的精度,但是,实际应用中不仅需要较大面积的存储单元缓存处理数据,而且存在重复读取数据,降低处理效率。
本说明书实例提供一种基于固定窗口的解决方案。具体地,所述数据处理方法还包括:根据所述并行处理策略,设置代价聚合模块,所述代价聚合模块包括第三数量的第二数据窗口,所述第二数据窗口的高度和宽度为i+1和j+1,所述第三数量为并行度;因此,所述代价聚合模块被配置为执行以下操作:
步骤S602、在所述第二数据窗口的列向进行求和,得到第一聚合代价;
步骤S604、将所述第二数据窗口中的所有列对应的第一聚合代价求和,得到第二聚合代价;
步骤S606、在得到所述第二聚合代价时,将所述第二数据窗口的最左一列数据移出,将新数据添加至所述第二数据窗口的最右一列;
步骤S608、在更新数据后,将所述第二数据窗口的上一个窗口对应的第二聚合代价减去被移除的最左一列对应的第一聚合代价,然后加上新加入的最右一列对应的第一聚合代价,以作为所述第二数据窗口的当前窗口对应的第二聚合代价。
如图11所示,在每个第二数据窗口(如图中的代价聚合窗口电路模块)中,按列向求和得到一个初步代价,可记为第一聚合代价,然后将各列的初步代价求和,得到整个第二数据窗口的中间代价,可记为第二聚合代价,即得到第二数据窗口对一个的聚合代价。
然后,可通过更新一列数据,比如窗口的最右一列,即通过将最左一列移除,各列向左移位一列,新数据填入最右一列,构架出新的数据窗口。
最后,在更新数据后,将所述第二数据窗口的上一个窗口对应的第二聚合代价减去被移除的最左一列对应的第一聚合代价,然后加上新加入的最右一列对应的第一聚合代价,以作为所述第二数据窗口的当前窗口对应的第二聚合代价。
因此,聚合代价模块使用所述第二数据窗口进行数据处理后,不仅可采用面积较小的缓存单元对数据进行并行组织管理,而且可基于原尺寸固定的数据窗口,仅通过移位就能实现流水线并行计算,同时可实现数据复用,避免重复读取数据,可降低对应用设备的硬件要求,有利于立体匹配方案灵活应用于不同硬件设备。
在一些实施方式中,代价聚合算法的结果是一个大小为m×n×d_max(m×n分别为图片的宽度和高度,d_max为深度的最大范围)的矩阵代价空间。代价矩阵中每个元素表示的是左右两幅图片(Il为左图像,Ir为右图像)中对应像素点在指定深度d下的相关程度。
一种实施方案中,可采用均值代价作为聚合代价,均值代价可按以下公式(1)进行计算:
其中,聚合代价e(k,d)为每个参考点像素与目标像素的代价,N为像素总数,Wp为权值,该权值可根据实际应用进行预设、调整等。
一种实施方案中,可采用加权代价作为聚合代价,加权聚合代价可按以下公式(2)进行计算:
其中,Hk可根据邻域像素与中心像素的颜色差距离或视差距离或是否处于连续深度等条件通过对应算法来获得具体权值,这里为归一化结果,e(k,d)为每个参考点像素与目标像素的代价,Wp为权值,该权值可根据实际应用进行预设、调整等。
基于相同发明构思,本说明书还提供一种双目立体匹配方法,所述双目立体匹配方法可基于前述任意一个实施例提供的所述数据处理方法,对双目立体匹配的待处理数据进行处理,如读写管理,如硬件并行加速处理中的并行组织管理等。
如图12所示,在双目立体匹配应用中,左右相机拍摄场景中的实时图像数据,经过图像校正等预处理后,可进行Census中心变换编码,得到左右图对应的Census编码数据,进而通过匹配代价计算得到初始代价值,然后进行代价聚合获得匹配代价后,进行匹配后处理,最后可获得视差图。
需要说明的是,Census变换、代价聚合等可采用前述所述数据处理方法中的相关实施进行相应数据处理,从而实现并行加速处理,提供立体匹配效率,其余处理模块(如相机模块、图像校正、匹配代价计算、匹配后处理、视差图的视差处理等)可与现有方案相同,这里不作限定。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例侧重说明的都是与其他实施例的不同之处。尤其,对于后面说明的产品实施例而言,由于其与方法是对应的,描述比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中,各个实施例均可为完全硬件实施例、完全软件实施例或结合软件和硬件实施的实施例。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种数据处理方法,其特征在于,应用于立体匹配的硬件并行加速处理中,包括:
根据预设的并行处理策略,设置行缓存模块和窗口缓存组,所述窗口缓存组包括第一数量的第一数据窗口,所述第一数据窗口的高度和宽度分别记为h+1和w+1,所述第一数量为并行加速处理的并行度,记为a,所述行缓存模块的高度不小于第二数量,其中所述第二数量为h和a之和,所述行缓存模块的宽度为立体匹配中待处理图像的宽度;
其中,所述行缓存模块被配置为执行如下操作:
按预设的第一缓存策略,将所述待处理图像的图像数据按行整行缓存;
在预设的列周期控制下,按列选取所述第二数量的目标像素,并将所述目标像素向所述窗口缓存组传输;
在接收到所述窗口缓存组发送的第一反馈信号时,按预设的第三缓存策略更新缓存数据;
所述窗口缓存组被配置为执行如下操作:
在接收到所述行缓存模块发送的所述目标像素时,按预设的第二缓存策略,将所述目标像素缓存于对应的所述第一数据窗口,其中第1个至第h+1个的所述目标像素缓存于第一个所述第一数据窗口的最右侧一列,第2个至第h+2个的所述目标像素缓存于第二个所述第一数据窗口的最右侧一列,直至第h+1个至第h+a个的所述目标像素缓存于第a个所述第一数据窗口的最右侧一列;
控制每个所述第一数据窗口中的列向左移位一列,以将所述行缓存模块发送的下一组目标像素缓存于所述第一数据窗口的最右侧一列;
在并行加速处理中,当完成一个行遍历周期时,向所述行缓存模块发送所述第一反馈信号,以使所述行缓存模块更新缓存数据。
2.根据权利要求1所述的数据处理方法,其特征在于,所述行缓存模块的高度不小于h+2a-1,按预设的第三缓存策略更新缓存数据包括:移除前a行数据,并读入a行新数据进行缓存。
3.根据权利要求1所述的数据处理方法,其特征在于,所述数据处理方法还包括:将所述行缓存模块设置的行地址索址空间设为[0:h+2a-1],其中将[0:h+a-1]的行地址索址空间记为输出指针index_1,将[h+a:h+2a-1]的行地址索址空间记为更新指针index_2;
按预设的第三缓存策略更新缓存数据,包括:将index_1、index_2下移a行,并更新index_1和index_2,其中index_1=(index_1+a) MOD(h+2a-1),index_2=(index_2+a) MOD(h+2a-1 )。
4.根据权利要求1所述的数据处理方法,其特征在于,所述行缓存模块包括若干阵列块、物理地址标识和虚拟地址标识,所述阵列块为通过所述物理地址标识和所述虚拟地址标识共同寻址的缓存单元;
所述行缓存模块还被配置为执行以下操作:
根据所述物理地址标识和所述虚拟地址标识共同寻址,以按预设的第一缓存策略,将所述待处理图像的图像数据按行整行缓存,以及在预设的列周期控制下,按列选取所述第二数量的目标像素,并将所述目标像素向所述窗口缓存组传输,以及在接收到所述窗口缓存组发送的第一反馈信号时,按预设的第三缓存策略更新缓存数据。
5.根据权利要求1所述的数据处理方法,其特征在于,所述数据处理方法还包括:按所述第一缓存策略,设置行缓存更新模块,所述行缓存更新模块的宽度为所述待处理图像的宽度,所述行缓存更新模块的高度为所述并行度;
其中,所述行缓存更新模块被配置为执行以下操作:
当所述行缓存模块接收到所述第一反馈信号时,向所述行缓存模块传输a行新数据,以使所述行缓存模块缓存所述a行新数据。
6.根据权利要求1所述的数据处理方法,其特征在于,所述数据处理方法还包括:按预设的编码策略,设置中心变换编码模块,所述中心变换编码模块包括若干比较器,所述比较器用于所述第一数据窗口中的中心像素与邻域像素进行比较;
所述中心变换编码模块被配置为执行以下操作:
在一个列周期内,输出每个所述第一数据窗口的中心像素与邻域像素的比较结果。
7.根据权利要求6所述的数据处理方法,其特征在于,所述中心变换编码模块还被配置为执行以下操作:对所述比较结果进行编码,以输出a个相邻列像素的中心转换编码。
8.根据权利要求1所述的数据处理方法,其特征在于,所述第一数据窗口为由移位寄存器构成的缓存单元。
9.根据权利要求1所述的数据处理方法,其特征在于,所述数据处理方法还包括:根据所述并行处理策略,设置代价聚合模块,所述代价聚合模块包括第三数量的第二数据窗口,所述第二数据窗口的高度和宽度为i+1和j+1,所述第三数量为并行度;
所述代价聚合模块被配置为执行以下操作:
在所述第二数据窗口的列向进行求和,得到第一聚合代价;
将所述第二数据窗口中的所有列对应的第一聚合代价求和,得到第二聚合代价;
在得到所述第二聚合代价时,将所述第二数据窗口的最左一列数据移出,将新数据添加至所述第二数据窗口的最右一列;
在更新数据后,将所述第二数据窗口的上一个窗口对应的第二聚合代价减去被移除的最左一列对应的第一聚合代价,然后加上新加入的最右一列对应的第一聚合代价,以作为所述第二数据窗口的当前窗口对应的第二聚合代价。
10.一种双目立体匹配方法,其特征在于,包括如权利要求1-9中任意一项所述的数据处理方法,以通过所述数据处理方法对双目立体匹配的待处理数据进行处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110991688.4A CN113436057B (zh) | 2021-08-27 | 2021-08-27 | 数据处理方法及双目立体匹配方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110991688.4A CN113436057B (zh) | 2021-08-27 | 2021-08-27 | 数据处理方法及双目立体匹配方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113436057A CN113436057A (zh) | 2021-09-24 |
CN113436057B true CN113436057B (zh) | 2021-11-19 |
Family
ID=77798140
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110991688.4A Active CN113436057B (zh) | 2021-08-27 | 2021-08-27 | 数据处理方法及双目立体匹配方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113436057B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114219699B (zh) * | 2022-02-22 | 2022-07-29 | 绍兴埃瓦科技有限公司 | 匹配代价处理方法及电路和代价聚合处理方法 |
CN116563087B (zh) * | 2023-05-12 | 2024-05-14 | 深圳聚源视芯科技有限公司 | 一种梯度计算、缓存装置和节约资源的代价计算方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103400390A (zh) * | 2013-08-12 | 2013-11-20 | 清华大学 | 可变支撑区域立体匹配算法的硬件加速结构 |
CN110569684A (zh) * | 2019-09-19 | 2019-12-13 | 南京全鉴信息技术有限公司 | 一种小容量缓存的图像二值化方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5311465B2 (ja) * | 2008-11-25 | 2013-10-09 | Necシステムテクノロジー株式会社 | ステレオマッチング処理システム、ステレオマッチング処理方法、及びプログラム |
EP2254091B1 (en) * | 2009-05-19 | 2020-03-25 | Veoneer Sweden AB | Vision system and method for a motor vehicle |
CN108932733A (zh) * | 2018-07-13 | 2018-12-04 | 京东方科技集团股份有限公司 | 立体视觉实现方法和立体视觉实现系统、显示装置 |
CN112070821B (zh) * | 2020-07-31 | 2023-07-25 | 南方科技大学 | 一种低功耗立体匹配系统及获取深度信息的方法 |
-
2021
- 2021-08-27 CN CN202110991688.4A patent/CN113436057B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103400390A (zh) * | 2013-08-12 | 2013-11-20 | 清华大学 | 可变支撑区域立体匹配算法的硬件加速结构 |
CN110569684A (zh) * | 2019-09-19 | 2019-12-13 | 南京全鉴信息技术有限公司 | 一种小容量缓存的图像二值化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113436057A (zh) | 2021-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113436057B (zh) | 数据处理方法及双目立体匹配方法 | |
US8098733B2 (en) | Multi-directional motion estimation using parallel processors and pre-computed search-strategy offset tables | |
CN109743562B (zh) | 基于Census算法的匹配代价计算电路结构及其工作方法 | |
US7853091B2 (en) | Motion vector operation devices and methods including prediction | |
CN107396112A (zh) | 一种编码方法及装置、计算机装置、可读存储介质 | |
CN107087171A (zh) | Hevc整像素运动估计方法及装置 | |
CN108377394A (zh) | 视频编码器的图像数据读取方法、计算机装置及计算机可读存储介质 | |
US6850569B2 (en) | Effective motion estimation for hierarchical search | |
CN114219699B (zh) | 匹配代价处理方法及电路和代价聚合处理方法 | |
CN214587004U (zh) | 一种立体匹配加速电路、图像处理器及三维成像电子设备 | |
US20210233280A1 (en) | Encoding device control method and device, and storage medium | |
US20080056368A1 (en) | Motion vector search apparatus | |
CN112541972B (zh) | 一种视点图像处理方法及相关设备 | |
JP2001045523A (ja) | 三次元画像処理装置 | |
KR20200076000A (ko) | 계층 탐색을 통해 모션 추정을 수행하는 전자 회로 및 전자 장치 | |
CN110662040B (zh) | 基于可重构阵列处理器的深度图cu快速划分方法 | |
Tseng et al. | Architecture design of belief propagation for real-time disparity estimation | |
CN114449294A (zh) | 运动估计方法、装置、设备、存储介质和计算机程序产品 | |
CN103237211A (zh) | 一种基于fpga的视频亚像素亮度插值的方法及其装置 | |
Chaikalis et al. | Hardware implementation of a disparity estimation scheme for real-time compression in 3D imaging applications | |
CN117440168B (zh) | 一种实现并行螺旋搜索算法的硬件架构 | |
US20070109875A1 (en) | Data storage method and information processing device using the same | |
CN110313015A (zh) | 数据处理方法和处理电路 | |
US11276141B2 (en) | Lifting transform method and apparatus for elemental image array | |
JP4332013B2 (ja) | 擬似多ポートメモリ装置および擬似多ポートメモリ装置の画素読み出し方法 |
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 |