CN108665406A - 一种硬件加速器的加速方法 - Google Patents

一种硬件加速器的加速方法 Download PDF

Info

Publication number
CN108665406A
CN108665406A CN201810380087.8A CN201810380087A CN108665406A CN 108665406 A CN108665406 A CN 108665406A CN 201810380087 A CN201810380087 A CN 201810380087A CN 108665406 A CN108665406 A CN 108665406A
Authority
CN
China
Prior art keywords
view
pixel
hsad
search
search block
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.)
Granted
Application number
CN201810380087.8A
Other languages
English (en)
Other versions
CN108665406B (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.)
Allwinner Technology Co Ltd
Original Assignee
Allwinner 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 Allwinner Technology Co Ltd filed Critical Allwinner Technology Co Ltd
Priority to CN201810380087.8A priority Critical patent/CN108665406B/zh
Publication of CN108665406A publication Critical patent/CN108665406A/zh
Application granted granted Critical
Publication of CN108665406B publication Critical patent/CN108665406B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/30Determination of transform parameters for the alignment of images, i.e. image registration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30244Camera pose

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Image Analysis (AREA)

Abstract

本发明公开了一种硬件加速器的加速方法,用于提升CPU运行效率。所述加速方法通过设置存储单元、逻辑bank群组、信息仓、双边运算单元、比较单元和控制单元实现加速作用。在现有技术的基础上,本发明保护的硬件加速器加速方法一方面可以充分发挥硬件所固有的处理速度优势,一方面通过设置信息仓和双边运算单元,将传统图像处理过程中基于点的运算改进为基于行的运算,并利用前一位置的计算结果迭代计算后续位置的结果,大大减少硬件加速器中所需的元件数量,降低方法的计算复杂度,提高运算效率。

Description

一种硬件加速器的加速方法
技术领域
本申请涉及电路领域,更具体地为一种硬件加速器的加速方法。
背景技术
计算机视觉,尤其是计算机立体视觉近年来受到广泛关注,获取目标深度信息的需求日益增加。例如,智能安防检测物体的定位,无人机三维定位,自动驾驶障碍物判断等,机器人导航,3d打印等。
众所周知,为了获取深度信息,伴随着大量图像数据处理及运算,而针对图像数据进行处理的算法往往运算复杂、计算量巨大,现有技术通常采用优化软件算法的方式对算法进行改进以期降低运算的复杂度。然而,仅仅优化软件算法并不能很好地提高算法执行效率,跟不上计算机视觉发展带来的数据量。因此,越来越多的研究关注于硬件加速器的设计和硬件加速器加速方法的研究。目前的硬件加速器缺乏良好的移植性,不能对缓存结构进行优化,占用、浪费大量的系统缓存,同时需要大量的处理资源,从而导致包含有硬件加速器的移动装置存在较高功率消耗及较低电池寿命等问题;同时,加速方法的鲁棒性不强,运算复杂度较高,不能适应图像数据大规模的计算量,没有从软件的方面提升图像数据的运算效率。
发明内容
有鉴于此,本发明实施例提供了一种硬件加速器的加速方法,以解决现有技术中硬件加速器移植性差,占用、浪费大量系统缓存,以及硬件加速器元件较多、功耗大、电池寿命低,以及运算复杂度高、不适应图像数据运算的问题。
本发明提供一种硬件加速器的加速方法,其特征在于所述方法包括以下步骤:
步骤一:设置获取单元,所述获取单元获取待运算的图像数据;
步骤二:设置逻辑bank群组,所述逻辑bank群组由多条ram组成,用于存储所述图像数据;
步骤三:设置运算单元,所述运算单元用于对所述逻辑bank群组中的数据进行运算,并输出运算结果,其中,所述运算包括初始化运算,所述初始化运算具体包括以下步骤:确定左侧视图初始化位置和右侧视图对应的搜索范围,当搜索块中心位于初始化位置时,计算所述搜索块的每一行所覆盖的像素点与右侧视图搜索范围内对应行的像素点的灰度值差的绝对值之和;其中,所述搜索块中心以所述初始化位置为起点水平移动,所述搜索范围根据搜索块中心的移动而移动,;
步骤四:设置信息仓,所述信息仓用于存储所述运算单元输出的运算结果,所述步骤三中的所述运算还包括双边运算,所述双边运算根据信息仓所存储的运算结果通过迭代的方式计算初始化位置移动后所述搜索块的每一行所覆盖的像素点与右侧视图搜索范围内对应行的像素点的灰度值差的绝对值之和;
步骤五:设置控制单元,所述控制单元用于发送控制信号,以周期性地控制所述运算单元进行图像数据运算;
步骤六:设置比较单元,所述比较单元读取信息仓中存储的运算结果,得到比较结果。
优选地,所述获取单元与所述逻辑bank群组连接,所述逻辑bank与所述运算单元连接,所述运算单元与所述信息仓连接,所述信息仓与所述比较单元连接,所述控制单元与所述获取单元、逻辑bank群组、比较单元、信息仓和运算单元连接。
优选地,所述加速方法还包括设置预处理单元,所述预处理单元对图像进行SOBEL滤波。
优选地,所述比较结果为图像的特征匹配点;
所述加速方法还包括设置去噪单元,用于验证所述匹配点以去除噪声点。
优选地,所述图像数据为左、右视图数据。
优选地,所述左右视图来源于双目视觉系统,所述左侧视图由双目视觉系统中左侧相机拍摄得到,所述右侧视图由双目视觉系统中右侧相机拍摄得到。
优选地,所述左右视图来源于单目视觉系统,所述左侧视图和右侧视图分别由单目视觉系统在不同位置拍摄得到。
优选地,所述控制单元还被设置为用于在左侧视图和右侧视图中各设置一个搜索块,分别为左侧视图搜索块和右侧视图搜索块,所述左、右侧视图搜索块在相应的视图中水平滑动,覆盖搜索块大小的像素点。
优选地,所述左侧视图搜索块和右侧视图搜索块均为一winsize*winsize大小的正方形搜索块,所述winsize为奇数,且5≤winsize≤21。
优选地,每块逻辑bank用于保存所述搜索块在视图中滑动所覆盖的像素点的灰度值。
优选地,所述运算单元包括由减法器和加法器组成的第一运算子单元,所述第一运算子单元用于计算HSAD,所述HSAD为所述左侧视图搜索块和所述右侧视图搜索块内对应行的像素点的灰度值差的绝对值之和,所述第一运算子单元与所述逻辑bank群组、信息仓相连接,并将HSAD发送至所述信息仓。
优选地,当左侧视图搜索块中心首次滑动至左侧视图感兴趣区域的第A像素行时,所述控制单元发送控制信号至运算单元处,所述第一运算子单元进行初始化运算以确定当前位置n的HSAD,所述当前位置n为左侧视图感兴趣区域内第A像素行中的一个像素点的位置,A∈[1,感兴趣区域的像素总行数]。
优选地,第一运算子单元计算HSAD采用以下方式:
其中,HSADnmj表示左侧视图搜索块中心位于所述当前位置n时,对应的右侧视图搜索块中心在位置m时的第j行的HSAD;
l_sobeli表示在经过预处理的左侧视图l_sobel中当左侧视图搜索块中心在位置n时,左侧视图搜索块中第j行第i个像素点的灰度值;
r_sobeli表示在经过预处理的右侧视图r_sobel中当右侧视图搜索块中心在位置m时,右侧视图搜索块中第j行第i个像素点的灰度值;
其中,i,j=0…winsize-1,1≤m≤M,M为预设的最大视差。
优选地,所述运算单元还包括:
第二运算子单元,所述第二运算子单元包含多个减法器,与逻辑bank群组相连接;
第三运算子单元,所述第三运算子单元包括多个减法器,第三运算子单元与所述信息仓和所述第一运算子单元和所述第二运算子单元相连接;
第四运算子单元,所述第四运算子单元包含多个减法器,与逻辑bank群组相连接;
第五运算子单元,所述第五运算子单元包含多个加法器,所述第五运算子单元与所述第三运算单元和第二运算单元相连接。
优选地,所述第一运算子单元完成所述初始化运算后,所述左侧视图搜索块中心沿水平方向滑动,直至遍历左侧视图感兴趣区域内当前位置n所在行的所有像素点,所述运算单元进行双边运算以得到每个所述像素点对应的HSAD,并将上述HSAD保存在所述信息仓中。
优选地,所述双边运算是基于当前位置n的HSAD确定下一位置n+1的HSAD,所述下一位置n+1位于左侧视图感兴趣区域内。
优选地,所述下一位置n+1为左侧视图搜索块中心由当前位置n水平向右滑动一个像素点所在的位置;
所述第二运算子用于单元计算ADl,所述ADl为左侧视图搜索块中心在位置n时右侧视图搜索块第j行最左侧像素点与左侧视图搜索块第j行最左侧像素点的灰度值差的绝对值;
所述第三运算子单元用于计算所述HSADnmj和与其对应的ADl的差;
所述第四运算子单元用于计算ADr,所述ADr为左侧视图搜索块中心在n+1位置时右侧视图搜索块第j行最右侧像素点与左侧视图搜索块第j行最右侧像素点的灰度值差的绝对值;
所述第五运算子单元用于计算HSADn+1mj,其中HSADn+1mj为所述第三运算子单元计算结果与所述第四运算子单元计算结果的和,即HSADn+1mj=HSADnmj-ADl+ADr,其中,HSADn+1mj表示左侧视图搜索块中心向右水平移动一个像素时,对应的右侧视图搜索块中心在位置m时的第j行的HSAD。
优选地,所述下一位置n+1为左侧视图搜索块中心由当前位置n水平向左滑动一个像素点所在的位置;
所述第二运算子单元用于计算ADr,所述ADr为左侧视图搜索块中心在n+1位置时右侧视图搜索块第j行最右侧像素点与左侧视图搜索块第j行最右侧像素点的灰度值差的绝对值;
所述第三运算子单元用于计算所述HSADnmj和与其对应的ADr的差;
所述第四运算子单元用于计算ADl,所述ADl为左侧视图搜索块中心在位置n时右侧视图搜索块第j行最左侧像素点与左侧视图搜索块第j行最左侧像素点的灰度值差的绝对值;
所述第五运算子单元用于计算HSADn+1mj,其中HSADn+1mj为所述第三运算子单元计算结果与所述第四运算子单元计算结果的和,即HSADn+1mj=HSADnmj-ADr+ADl,其中,HSADn+1mj表示左侧视图搜索块中心向左水平移动一个像素时,对应的右侧视图搜索块中心在位置m时的第j行的HSAD。
优选地,当左侧视图搜索块中心由当前位置n滑动至所述下一位置n+1时,右侧视图的搜索范围向右平移一个像素,右侧视图搜索块在所述搜索范围内由右向左水平滑动M个位置。
优选地,当左侧视图搜索块中心由当前位置n滑动至所述下一位置n+1时,右侧视图的搜索范围向左平移一个像素,右侧视图搜索块在所述搜索范围内由右向左水平滑动M个位置。
优选地,所述运算单元还包括与所述信息仓相连接的第六运算子单元,所述第六运算子单元包括加法器,用于计算SAD。
优选地,所述第六运算子单元计算SAD采用以下方式:
其中,HSADj为当左侧视图搜索块中心位于左侧视图感兴趣区域内某一位置时,右侧视图搜索块中心位于右侧视图某一位置时第j行的HSAD,j=0…
winsize-1,1≤m≤M;
左侧视图搜索块中心在左侧视图感兴趣区域内每滑动一个像素点,所述运算单元对应计算得到M个SAD。
优选地,所述信息仓用于存储HSAD和SAD,以及左侧视图搜索块中心位置和右侧视图搜索块中心位置。
优选地,当所述左侧视图搜索中心遍历左侧视图感兴趣区域所有像素点时,所述控制单元发送控制信号至运算单元以停止运算。
优选地,当左侧视图搜索块中心在左侧视图感兴趣区域内由当前位置n滑动到下一位置n+1时,所述控制单元发送控制信号至所述比较单元以确定当前位置n对应的SAD的最小值所对应的右侧视图搜索块中心位置,确定所述右侧视图搜索块中心位置对应的像素点为匹配点。
本发明提供一种双目视觉系统视差信息提取硬件加速器的加速方法,其特征在于,所述加速方法包括以下步骤:
步骤一:设置匹配点获取单元,用于获取采用前述加速方法所得到的匹配点;
步骤二:设置摄像机坐标系生成单元,用于获取双目视觉系统内外参数,建立摄像机坐标系;
步骤三:设置,用于根据所述摄像机坐标系和所述匹配点,确定匹配点的视差。
本发明提供一种单目视觉系统视差信息提取硬件加速器的加速方法,其特征在于,所述加速方法包括以下步骤:
步骤一:设置匹配点获取单元,用于获取采用前述的加速方法所得到的匹配点;
步骤二:设置摄像机坐标系生成单元,用于获取双目视觉系统内外参数,建立摄像机坐标系;
步骤三:设置,用于根据所述摄像机坐标系和所述匹配点,确定匹配点的视差。
本发明提供一种深度信息提取硬件加速器的加速方法,其特征在于,所述加速方法包括以下步骤:
步骤一:设置信息获取单元,用于获取根据前述的双目视觉系统视差信息提取硬件加速器的加速方法或单目视觉系统视差信息提取硬件加速器的加速方法所得到的视差信息;
步骤二:设置深度信息确定单元,用于基于所述视差信息确定深度信息。
本发明公开了一种硬件加速器的加速方法,该加速方法通过设置信息仓和双边运算单元,将传统像素点匹配过程中基于点的运算改进为基于行的运算,再利用前一位置的计算结果迭代计算后续位置的结果。本领域技术人员可以明确,由基于点的运算改进为基于行的运算,这使得存储运算结果变得有意义,因为如果存储各个点的运算结果,这需要设置大量的存储元件,而存储像素点行的运算结果,可以大大降低存储元件的数量;并且,对于存储的像素点行的运算结果进行迭代运算,能够降低算法的计算量,提高算法的执行效率。另外,该加速方法可以充分发挥硬件电路所具有的速度优势,并且可以适应于通用计算机系统或者嵌入式系统或是其他处理系统,能够有效地提高CPU的运行效率,并且本身具有较高的鲁棒性。
附图说明
图1A是本发明实施例一所提供的一种硬件加速器加速方法的流程图。
图1是本发明实施例一提供的一种硬件加速器的结构图。
图2是本发明实施例一提供的一种逻辑bank群组示意图。
图3是本发明实施例一提供的运算单元的结构图。
图4是本发明实施例二提供的一种控制单元生成的搜索块的示意图。
图5是本发明实施例三提供的第一运算子单元的工作示意图。
图6是本发明实施例四提供的第二至五运算子单元的工作示意图。
图7是本发明实施例五提供的信息仓的电路结构图。
图8是本发明实施例七提供的硬件加速器的结构图。
图9是本发明实施例八提供的一种硬件加速器结构图。
图10是本发明实施例九提供的一种硬件加速器结构图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明具体实施例作进一步的详细描述。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。
另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
实施例一
图1A为本发明实施例一提供的一种硬件加速器加速方法的流程图。本实施例的方法具体包括以下步骤:
110、图像获取,获取的图像为左侧视图和右侧视图。
在本实施中,左侧视图和右侧视图具体是指从两个不同位置获取的包括同一目标物体的两幅图像,具体而言,即可以是通过不同位置的两个相同或不同的摄像头获取左侧视图和右侧视图,也可以是通过移动同一摄像头获取左侧视图和右侧视图,本实施例对此不进行限制。
图像获取之前还包括预先获取相机内外参数,建立摄像机坐标系。
图像获取之后还包括预处理左侧视图和右侧视图,对左侧视图和右侧视图进行SOBEL滤波处理。
其中,目标物体具体是指左侧视图的感兴趣区域包括的物体。可以理解的是,一般两幅图在进行图像匹配时,主要是将其中一幅图像中重要物体的图像区域与另外一幅图像的整体或一部分图像区域进行匹配,以确定两幅图的关联性,因此,在本实施例中,左侧视图和右侧视图应包括同一目标物体,以完成左侧视图和右侧视图的特征点匹配。
120、设置搜索块,在左侧视图和右侧视图中各设置一个搜索块,分别为左侧视图搜索块和右侧视图搜索块,搜索块在对应视图中水平滑动,覆盖搜索块大小的像素点。
进一步地,将左侧视图搜索块和右侧视图搜索块优化为:winsize×winsize大小的正方形搜索块,将winsize优化为奇数且5≤winsize≤21。
在本实施例中,通过左侧视图搜索块和右侧视图搜索块分别获取左侧视图和右侧视图中用于进行图像特征点匹配的所有像素点,左侧视图搜索块和右侧视图搜索块的尺寸应一致。
130、计算当前位置n的HSAD值。
具体地,当左侧视图搜索块中心首次滑动至左侧视图感兴趣区域的第A像素行时,所述控制单元发送控制信号至运算单元处,所述第一运算子单元进行初始化运算以确定当前位置n的HSAD,所述当前位置n为左侧视图感兴趣区域内第A像素行中的一个像素点的位置,A∈[1,感兴趣区域的像素总行数]。
在本实施例中,左侧视图的感兴趣区域具体是指用户选取的,用于与右侧视图进行图像特征点匹配的图像区域,进一步地,感兴趣区域既可以是规则的正方形或长方形等图形,也可以是不规则图像,本实施例对此不进行限制。
下面对当前位置n的HSAD的计算方法举例进行具体说明:
本领域技术人员可以理解的是,在现有的图像匹配技术中,可以通过对极几何等计算方法确定右侧视图中与左侧视图中的单一像素点相匹配的像素点搜索范围,该像素点搜索范围必包含与左侧视图中的该单一像素点相匹配的像素点,同样,在本实施例中,可以通过现有技术中的计算方法确定右侧视图中与当前位置n对应的搜索范围,这里需要说明的是,本实施例及之后的所有实施例中涉及的右侧视图中与感兴趣区域中的当前位置n对应的各个搜索范围必须均为右侧视图中某一像素行中的M个连续像素点,也就是说,与当前位置n对应的搜索范围不应包含不同像素行的像素点,其中,M是预设最大视差值。
在本实施例中,计算当前位置n的HSAD值时,左侧视图搜索块的中心应位于该当前位置n,右侧视图搜索块的中心在右侧视图中对应于该当前位置n的搜索范围内由右向左水平滑动M个位置,其中,M是预设最大视差值,其实通过现有的计算方法确定的右侧视图中与该当前位置n对应的搜索范围是某一整个像素行,但是,在本实施例及之后的所有实施例中所使用的搜索范围具体是该某一整个像素行中M个连续的像素点。
具体而言,右侧视图搜索块的中心每滑动一个位置就会计算一次HSAD值,每次计算得到的HSAD值的个数为左侧视图搜索块的行数(左侧视图搜索块与右侧视图搜索块的行数相同),可见,当前位置n所对应的HSAD值的个数均为M与左侧视图搜索块的行数的乘积。其中,当前位置n的HSAD值具体是指当左侧视图搜索块的中心位于该当前位置n时,右侧视图搜索块的中心位于右侧视图中对应于该当前位置n的搜索范围内的某一个像素点时,以左右视图搜索块的行为单位计算得到的左侧视图搜索块和右侧视图搜索块内对应像素点的灰度值差的绝对值之和。
示例性的,左侧视图搜索块和右侧搜索块均为5×5的正方形搜索块,左侧视图搜索块的中心位于当前位置n,左侧视图搜索块包含的所有像素点的灰度值如表1A所示,右侧视图搜索块的中心位于右侧视图中对应于该当前位置n的搜索范围内最右侧的像素点,右侧视图搜索块包含的所有像素点的灰度值如表1B所示。
100 105 112 134 150
90 98 110 122 140
95 99 98 130 142
99 95 98 125 139
97 96 98 128 130
表1A
50 65 66 70 65
70 85 89 92 80
75 90 95 95 82
78 92 95 90 88
75 90 96 93 92
表1B
那么,当左侧视图搜索块的中心位于当前位置n,右侧视图搜索块的中心位于右侧视图中对应于该当前位置n的搜索范围内最右侧的像素点时,该当前位置n的5个HSAD值分别为:
HSAD1=|100-50|+|105-65|+|112-66|+|134-70|+|150-65|=285
HSAD2=|90-70|+|98-85|+|110-89|+|122-92|+|140-80|=144
HSAD3=|95-75|+|99-90|+|98-95|+|130-95|+|142-82|=127
HSAD4=|99-78|+|95-92|+|98-95|+|125-90|+|139-88|=113
HSAD5=|97-75|+|96-90|+|98-96|+|128-93|+|130-92|=103
进一步地,当右侧视图搜索块的中心从右侧视图中对应于该当前位置n的搜索范围内最右侧的像素点向左滑动一个像素点之后,表1B中的灰度值会产生变化,此时需要继续计算当前位置n的另外5个HSAD值,直至右侧视图搜索块的中心滑动至右侧视图中对应于该当前位置n的搜索范围内最左侧的像素点并计算此位置对应于当前位置n的5个HSAD值,至此,该当前位置n的所有HSAD值计算完毕。
140、计算当前位置n对应的M个SAD值,并将当前位置n对应的M个SAD值中的最小值所对应的右侧视图搜索块的中心作为当前位置n的匹配特征点。
在本实施例中,在步骤130中计算完成当前位置n的所有HSAD值之后,会依据计算得到的所有HSAD值计算当前位置n对应的M个SAD值。其中,当前位置n的各个SAD值与右侧视图中对应于该当前位置n的搜索范围的各个像素点一一对应,也就是说,当左侧视图搜索块的中心位于当前位置n时,右侧视图搜索块的中心在右侧视图中对应于该当前位置n的搜索范围内滑动,当每滑动一个位置就计算一次HSAD值之后,会同时依据计算得到的HSAD值计算该滑动位置对应的SAD值。
示例性的,步骤130中计算得到5个HSAD值,此时左侧视图搜索块的中心位于当前位置n,右侧视图搜索块的中心位于右侧视图中对应于该当前位置n的搜索范围内最右侧的像素点,那么,对应于右侧视图中对应于该当前位置n的搜索范围内最右侧的像素点的当前位置n的SAD值为772,计算公式如下:
SAD=HSAD1+HSAD2+HSAD3+HSAD4+HSAD5=285+144+127+113+103=772
进一步地,在本实施例中,在计算得到当前位置n对应的M个SAD值之后,会将该M个SAD值中的最小值所对应的右侧视图搜索块的中心作为该当前位置n的匹配特征点。
150、基于当前位置n的HSAD确定下一位置n+1的HSAD。
在本实施例中,在计算完成当前位置n的HSAD值、SAD值,并确定当前位置n的匹配特征点之后,会依据计算得到的当前位置n的HSAD值以及双边计算确定在感兴趣区域内当前位置n所在像素行中其余像素点,在右侧视图中的匹配特征点。
在本实施例中,可选地,所述下一位置n+1为左侧视图搜索块中心由当前位置n水平向右滑动一个像素点所在的位置。示例性地,当左侧视图搜索块的中心位于下一位置n+1时,左侧视图搜索块包含的所有像素点的编号如表1C所示,当右侧视图搜索块的中心位于右侧视图中对应于该下一位置n+1的搜索范围内从右数第m个像素点时,右侧视图搜索块包含的所有像素点的编号如表1D所示,
A2 A3 A4 A5 A6
B2 B3 B4 B5 B6
C2 C3 C4 C5 C6
D2 D3 D4 D5 D6
E2 E3 E4 E5 E6
表1C
A’2 A’3 A’4 A’5 A’6
B’2 B’3 B’4 B’5 B’6
C’2 C’3 C’4 C’5 C’6
D’2 D’3 D’4 D’5 D’6
E’2 E’3 E’4 E’5 E’6
表1D
所以,当右侧视图搜索块的中心位于右侧视图中对应于该下一位置N+1的搜索范围内从右数第m个像素点时,该第n+1位置的HSAD值的计算公式为:
HSADn+1m1=HSADnm1-|A1-A`1|+|A6-A`6|
......
HSADn+1m5=HSADnm5-|E1-E`1|+|E6-E`6|
一般性地,当左侧视图搜索块中心由当前位置n滑动至所述下一位置n+1时,相应地,右侧视图的搜索范围向右平移一个像素,右侧视图搜索块在所述搜索范围内由右向左水平滑动M个位置。
可选地,下一位置n+1为左侧视图搜索块中心由当前位置n水平向左滑动一个像素点所在的位置。示例性地,当左侧视图搜索块的中心位于下一位置n+1时,左侧视图搜索块包含的所有像素点的编号如表1E所示,当右侧视图搜索块的中心位于右侧视图中对应于该下一位置n+1的搜索范围内从右数第m个像素点时,右侧视图搜索块包含的所有像素点的编号如表1F所示,
A0 A1 A2 A3 A4
B0 B1 B2 B3 B4
C0 C1 C2 C3 C4
D0 D1 D2 D3 D4
E0 E1 E2 E3 E4
表1E
A’0 A’1 A’2 A’3 A’4
B’0 B’1 B’2 B’3 B’4
C’0 C’1 C’2 C’3 C’4
D’0 D’1 D’2 D’3 D’4
E’0 E’1 E’2 E’3 E’4
表1F
所以,当右侧视图搜索块的中心位于右侧视图中对应于该下一位置N+1的搜索范围内从右数第m个像素点时,该第n+1位置的HSAD值的计算公式为:
HSADn+1m1=HSADnm1-|A5-A`5|+|A0-A`0|
......
HSADn+1m5=HSADnm5-|E5-E`5|+|E0-E`0|
一般性地,当左侧视图搜索块中心由当前位置n滑动至所述下一位置n+1时,相应地,右侧视图的搜索范围向右平移一个像素,右侧视图搜索块在所述搜索范围内由右向左水平滑动M个位置。
一般性地,第二运算子单元计算ADl,所述ADl表示左侧视图搜索块中心在位置n时右侧视图搜索块第j行最左侧像素点与左侧视图搜索块第j行最左侧像素点的灰度值差的绝对值;
所述第三运算子单元计算当前位置相对应的第j行HSAD和与其对应的ADl的差;
所述第四运算子单元计算ADr,所述ADr表示左侧视图搜索块中心在n+1位置时右侧视图搜索块第j行最右侧像素点与左侧视图搜索块第j行最右侧像素点的灰度值差的绝对值。
示例性地,当下一位置n+1为左侧视图搜索块中心由当前位置n水平向右滑动一个像素点所在的位置,左侧视图搜索块包含的所有像素点的编号如表5所示以及当右侧视图搜索块的中心位于右侧视图中对应于该下一位置n+1的搜索范围内从右数第m个像素点右侧视图搜索块包含的所有像素点的编号如表6所示时,ADl=|A1-A`1|,ADr=|A6-A`6|;
当下一位置n+1为左侧视图搜索块中心由当前位置n水平向左滑动一个像素点所在的位置,左侧视图搜索块包含的所有像素点的编号如表7所示以及当右侧视图搜索块的中心位于右侧视图中对应于该下一位置n+1的搜索范围内从右数第m个像素点右侧视图搜索块包含的所有像素点的编号如表8所示时,ADl=|A0-A`0|,ADr=|A5-A`5|。
本领域技术人员可以明确,可以根据左侧视图搜索块中心所在的起始位置(记作当前位置n)的具体情况来对上述两种可选方式进行选择或组合,即当左侧视图搜索块中心所在的起始位置为左侧视图感兴趣区域的第A像素行的左侧端点时,下一位置n+1为左侧视图搜索块中心由当前位置n水平向右滑动一个像素点所在的位置;当左侧视图搜索块中心所在的起始位置为左侧视图感兴趣区域的第A像素行的右侧端点时,下一位置n+1为左侧视图搜索块中心由当前位置n水平向左滑动一个像素点所在的位置;左侧视图搜索块中心所在的起始位置为左侧视图感兴趣区域的第A像素行的非端点位置时,则既要向右滑动也要向左滑动,以遍历第A像素行的所有感兴趣区域内的像素点。
160、计算左侧视图感兴趣区域内的各个位置对应的M个SAD值,并将各个位置对应的M个SAD值中的最小值所对应的右侧视图搜索块的中心作为各个位置的匹配特征点。
在本实施例中,在步骤150中计算完成各个位置的所有HSAD值之后,同样会依据计算得到的所有HSAD值计算各个位置对应的M个SAD值,各个位置对应的M个SAD值的计算方法与当前位置n对应的M个SAD值的计算方法一致。
其中,各个位置的各个SAD值与右侧视图中对应于该各个位置的搜索范围的各个像素点一一对应,也就是说,当左侧视图搜索块的中心位于感兴趣区域内某一位置时,右侧视图搜索块的中心在右侧视图中对应于该位置的搜索范围内滑动,当每滑动一个位置就计算一次HSAD值之后,会同时依据计算得到的HSAD值计算该滑动位置对应的SAD值。
进一步地,在本实施例中,在计算得到某一位置对应的M个SAD值之后,会将该M个SAD值中的最小值所对应的右侧视图搜索块的中心作为该位置的匹配特征点。
图1为本发明实施例一提供的一种硬件加速器的结构图。本实施例的硬件加速器具体包括:
获取单元(110),获取的图像数据包括左侧视图和右侧视图。
在本实施中,左侧视图和右侧视图具体是指从两个不同位置获取的包括同一目标物体的两幅图像,具体而言,既可以是通过不同位置的两个相同或不同的摄像头获取左侧视图和右侧视图,也可以是通过移动同一摄像头获取左侧视图和右侧视图,本实施例对此不进行限制。
其中,目标物体具体是指左侧视图的感兴趣区域包括的物体。可以理解的是,一般两幅图在进行图像匹配时,主要是将其中一幅图像中重要物体的图像区域与另外一幅图像的整体或一部分图像区域进行匹配,以确定两幅图的关联性,因此,在本实施例中,左侧视图和右侧视图应包括同一目标物体,以完成左侧视图和右侧视图的特征点匹配。
逻辑bank群组(120),所述逻辑bank群组由N条(n*winsize)*wide比特的ram组成,所述逻辑bank群组包括多个逻辑bank单元,所述逻辑bank单元由多条ram组成,所述多条ram以预定方式划分、组合以形成多块逻辑bank,每个所述逻辑bank单元由多块逻辑bank组成,所述多块逻辑bank可根据预定方式进行组合;例如,所述逻辑bank群组可以由N条(n*winsize)*wide比特的ram组成,所述逻辑bank群组划分为N块逻辑bank,其中wide与系统位宽相适应,所述N条ram由左至右依次编号并排列,以winsize为单位,自上而下的顺序将每条ram划分为n份,所述逻辑bank群组共包含N*n份ram,连续的n条ram作为一个逻辑bank单元,所述逻辑bank群组共包含N/n个逻辑bank单元,每个逻辑bank单元由n块逻辑bank组成,每块逻辑bank包括其对应的逻辑bank单元中的n份ram,所述每块逻辑bank中的任意两份ram均不属于同一条ram,这样任意两份ram均不属于同一条ram的设置方式能够最大限度的提高数据读取的效率,而不会因两份ram属于同一条ram而在数据读写时进行等待,并且可以提高系统的鲁棒性,逻辑bank单元中的各块逻辑bank可进行组合,例如两两组合、三三组合或是四者之间组合,这样在逻辑bank单元内部可以形成存储量可选的逻辑bank,并且各个逻辑bank单元可以进行自由组合,从而提供了丰富的存储空间的选择。
在本实施例中,如图2所示,假设逻辑bank群组由12条(4*21)*64bit的sram组成,将每条sram按照每21行划分一份的原则进行划分,则每条sram可分为4份,例如图中逻辑bank群组共包括48份sram,连续的4条sram作为一个逻辑bank单元,图中共有3个逻辑bank单元,每个逻辑bank单元由4块逻辑bank组成,图中左侧的逻辑bank单元包含4块逻辑bank,分别是bank0、bank3、bank6和bank9,每块逻辑bank包含4份sram,例如,bank0包含4份sram,每块逻辑bank只具有其所属逻辑bank单元中的4份sram,并且每块逻辑bank中的任意两份sram均不属于同一条sram,逻辑bank单元中的各块逻辑bank可进行组合,例如bank0、bank3、bank6和bank9可进行任意组合,例如两两组合、三三组合或是四者之间组合,这样可以形成存储量更大的逻辑bank,并且具有丰富的存储空间的选择。
运算单元(130),所述运算单元(130)读取逻辑bank群组(120)中的数据,进行运算并输出运算结果。
在本实施例中,如图3所示,所述运算单元(130)包括第一运算子单元(1301),第二运算子单元(1302),第三运算子单元(1303),第四运算子单元(1304),第五运算子单元(1305)和第六运算子单元(1306)。
所述第一运算子单元(1301)包含多个减法器和加法器,所述第二运算子单元(1302)包含多个减法器,所述第三运算子单元(1303)包含多个减法器,所述第四运算子单元(1304)包含多个减法器,所述第五运算子单元(1305)包含多个加法器,所述第六运算子单元(1306)包含多个加法器。
信息仓(140),用于存储运算单元输出的运算结果。
比较单元(150),读取信息仓(140)中存储的运算结果,得到比较结果。
控制单元(160),所述控制单元(160)发送控制信号至各单元,控制各单元的运行。
本发明实施例一提供了一种硬件加速器,通过对逻辑bank群组进行适应性地改进,使得逻辑bank群组中的块逻辑bank可以自由组合,形成丰富的存储资源规模,解决了现有技术中存储结构固定,浪费存储资源或是存储资源紧张的问题。
实施例二
图4是本发明实施例二提供的一种控制单元生成的搜索块的示意图。
控制单元(160)在左侧视图和右侧视图各设置一个搜索块,分别为左侧视图搜索块(1601)和右侧视图搜索块(1602),所述搜索块在视图中水平滑动,搜索块中心每滑动至一个位置,即可覆盖搜索块大小的像素点,所述左侧视图搜索块(1601)和右侧视图搜索块(1602)均为一winsize*winsize大小的正方形搜索块,所述winsize为奇数,且5≤winsize≤21。
如图4所示,搜索块(1601)中心在左侧视图感兴趣区域内的第A像素行水平向右滑动,搜索块(1602)中心在右侧视图搜索区域内对应的像素行水平向左滑动,A∈[1,感兴趣区域的像素总行数]。
本领域技术人员可以理解,搜索块(1601)中心也可以在左侧视图感兴趣区域内的第A像素行水平向左滑动,搜索块(1602)中心也可以在右侧视图搜索区域内对应的像素行水平向右滑动。这里需要说明的是,本实施例之后的所有实施例涉及的搜索块(1602)中心均为在右侧视图搜索区域内对应的像素行水平由右向左滑动。
本领域技术人员可以理解,搜索块(1601)中心在左侧视图感兴趣区域内的滑动可以在当搜索块(1601)中心滑动至感兴趣区域边界时停止,也可以继续滑动以遍历第A像素行的所有像素点。
当搜索块(1601)中心滑动至某一位置时,搜索块(1602)中心在右侧视图的对应搜索范围内进行滑动,并且滑动遍历M个位置。本领域技术人员可以理解的是,在现有的图像匹配技术中,可以通过对极几何等计算方法确定右侧视图中与左侧视图中的单一像素点相匹配的像素点搜索范围,该像素点搜索范围必包含与左侧视图中的该单一像素点相匹配的像素点,同样,在本实施例中,可以通过现有技术中的计算方法确定右侧视图中与搜索块(1601)中心所在位置对应的搜索范围,这里需要说明的是,本实施例及之后的所有实施例中涉及的右侧视图中与感兴趣区域中的搜索块(1601)中心位置对应的各个搜索范围必须均为右侧视图中某一像素行中的M个连续像素点,也就是说,与搜索块(1601)中心位置对应的搜索范围不应包含不同像素行的像素点,其中,M是预设最大视差值。
示例性的,搜索块(1601)和搜索块(1602)均为5×5的正方形搜索块,左侧视图搜索块包含的所有像素点的灰度值如表1所示,右侧视图搜索块的中心位于右侧视图中对应的搜索范围内最右侧的像素点,右侧视图搜索块包含的所有像素点的灰度值如表2所示。
表1
50 65 66 70 65
70 85 89 92 80
75 90 95 95 82
78 92 95 90 88
75 90 96 93 92
表2
实施例三
图5是本发明实施例三提供的第一运算子单元(1301)的工作示意图。
如图5所示,所述第一运算子单元(1301)包含多个减法器和加法器,所述第一运算单元(1301)与所述逻辑bank群组(120)相连接,用于计算初始化运算对应的HSAD,所述第一运算子单元(1301)还与所述信息仓(140)相连接,将计算结果发送至所述信息仓(140);
下面对初始化运算对应的HSAD的计算方法进行具体说明:
在本实施例中,当左侧视图搜索块中心首次滑动至左侧视图感兴趣区域的第A像素行时,此时控制单元发送控制信号至运算单元处,所述运算单元进行初始化运算,所述初始化运算确定当前位置n的HSAD,所述当前位置n为左侧视图感兴趣区域内第A像素行中的一个像素点的位置,A∈[1,感兴趣区域的像素总行数]。
本领域技术人员可以确定,感兴趣区域的像素总行数对应着初始化运算的次数,也对应着各个初始化运算所对应的当前位置n的数目。
左侧视图搜索块的中心位于该当前位置n,右侧视图搜索块的中心在右侧视图中对应于该当前位置n的搜索范围内由右向左水平滑动M个位置,其实通过现有的计算方法确定的右侧视图中与该当前位置n对应的搜索范围是某一整个像素行,但是,在本实施例及之后的所有实施例中所使用的搜索范围具体是该某一整个像素行中M个连续的像素点。
具体而言,右侧视图搜索块的中心每滑动一个位置就会计算一次HSAD值,每次计算得到的HSAD值的个数为左侧视图搜索块的行数(左侧视图搜索块与右侧视图搜索块的行数相同),可见,各个当前位置n所对应的HSAD值的个数均为M与左侧视图搜索块的行数的乘积。其中,当前位置n的HSAD值具体是指当左侧视图搜索块的中心位于该当前位置n时,右侧视图搜索块的中心位于右侧视图中对应于该当前位置n的搜索范围内的某一个像素点时,以左右视图搜索块的行为单位计算得到的左侧视图搜索块和右侧视图搜索块内对应像素点的灰度值差的绝对值之和。
示例性的,左侧视图搜索块和右侧搜索块均为5×5的正方形搜索块,左侧视图搜索块的中心位于当前位置n,左侧视图搜索块包含的所有像素点的灰度值如表1所示,右侧视图搜索块的中心位于右侧视图中对应于该当前位置n的搜索范围内最右侧的像素点,右侧视图搜索块包含的所有像素点的灰度值如表2所示。
那么,此时该当前位置n的5个HSAD值分别为:
HSAD1=|100-50|+|105-65|+|112-66|+|134-70|+|150-65|=285
HSAD2=|90-70|+|98-85|+|110-89|+|122-92|+|140-80|=144
HSAD3=|95-75|+|99-90|+|98-95|+|130-95|+|142-82|=127
HSAD4=|99-78|+|95-92|+|98-95|+|125-90|+|139-88|=113
HSAD5=|97-75|+|96-90|+|98-96|+|128-93|+|130-92|=103
进一步地,当右侧视图搜索块的中心从右侧视图中对应于该当前位置n的搜索范围内最右侧的像素点向左滑动一个像素点之后,表2中的灰度值会产生变化,此时需要继续计算当前位置n的另外5个HSAD值,直至右侧视图搜索块的中心滑动至右侧视图中对应于该当前位置n的搜索范围内最左侧的像素点并计算此位置对应于当前位置n的5个HSAD值。
更一般性地,初始化运算的HSAD具体采用以下方式:
其中,HSADnmj表示左侧视图搜索块中心位于所述当前位置n时,对应的右侧视图搜索块中心在位置m时的第j行的HSAD;
l_sobeli表示在经过预处理的左侧视图l_sobel中当左侧视图搜索块中心在位置n时,左侧视图搜索块中第j行第i个像素点的灰度值;
r_sobeli表示在经过预处理的右侧视图r_sobel中当右侧视图搜索块中心在位置m时,右侧视图搜索块中第j行第i个像素点的灰度值.
示例性地,左侧视图搜索块和右侧搜索块均为5×5的正方形搜索块,左侧视图搜索块的中心位于当前位置n,左侧视图搜索块包含的所有像素点的编号如表3所示,右侧视图搜索块的中心位于右侧视图中对应于该当前位置n的搜索范围内从右数第m个像素点,右侧视图搜索块包含的所有像素点的编号如表4所示。
A1 A2 A3 A4 A5
B1 B2 B3 B4 B5
C1 C2 C3 C4 C5
D1 D2 D3 D4 D5
E1 E2 E3 E4 E5
表3
A’1 A’2 A’3 A’4 A’5
B’1 B’2 B’3 B’4 B’5
C’1 C’2 C’3 C’4 C’5
D’1 D’2 D’3 D’4 D’5
E’1 E’2 E’3 E’4 E’5
表4
HSADnm1=|A1-A`1|+|A2-A`2|+|A3-A`3|+|A4-A`4|+|A5-A`5|
......
HSADnm5=|E1-E`1|+|E2-E`2|+|E3-E`3|+|E4-E`4|+|E5-E`5|
实施例四
图6是本发明实施例四提供的第二至五运算子单元的工作示意图。
如图所示,所述运算单元包含第二运算子单元(1302),所述第二运算子单元(1302)包含多个减法器,与逻辑bank群组(120)相连接;
所述运算单元还包括第三运算子单元(1303),所述第三运算子单元(1303)包含多个减法器,第三运算子单元(1303)与所述信息仓(140)和所述第二运算子单元(1302)相连接;
所述运算单元还包含第四运算子单元(1304),所述第四运算子单元(1304)包含多个减法器,与逻辑bank群组(120)相连接;
所述运算单元还包括第五运算子单元(1305),所述第五运算子单元(1305)包含多个加法器,所述第五运算子单元(1305)与所述第三运算单元(1303)和第二运算单元(1302)相连接,进行双边运算,将运算结果保存在所述信息仓(140)中。
通过双边运算确定下一位置n+1的HSAD,所述下一位置n+1位于左侧视图感兴趣区域内。
可选地,下一位置n+1为左侧视图搜索块中心由当前位置n水平向右滑动一个像素点所在的位置。示例性地,当左侧视图搜索块的中心位于下一位置n+1时,左侧视图搜索块包含的所有像素点的编号如表5所示,当右侧视图搜索块的中心位于右侧视图中对应于该下一位置n+1的搜索范围内从右数第m个像素点时,右侧视图搜索块包含的所有像素点的编号如表6所示,
A2 A3 A4 A5 A6
B2 B3 B4 B5 B6
C2 C3 C4 C5 C6
D2 D3 D4 D5 D6
E2 E3 E4 E5 E6
表5
A’2 A’3 A’4 A’5 A’6
B’2 B’3 B’4 B’5 B’6
C’2 C’3 C’4 C’5 C’6
D’2 D’3 D’4 D’5 D’6
E’2 E’3 E’4 E’5 E’6
表6
所以,当右侧视图搜索块的中心位于右侧视图中对应于该下一位置N+1的搜索范围内从右数第m个像素点时,该第n+1位置的HSAD值的计算公式为:
HSADn+1m1=HSADnm1-|A1-A`1|+|A6-A`6|
......
HSADn+1m5=HSADnm5-|E1-E`1|+|E6-E`6|
一般性地,当左侧视图搜索块中心由当前位置n滑动至所述下一位置n+1时,相应地,右侧视图的搜索范围向右平移一个像素,右侧视图搜索块在所述搜索范围内由右向左水平滑动M个位置
可选地,下一位置n+1为左侧视图搜索块中心由当前位置n水平向左滑动一个像素点所在的位置。示例性地,当左侧视图搜索块的中心位于下一位置n+1时,左侧视图搜索块包含的所有像素点的编号如表7所示,当右侧视图搜索块的中心位于右侧视图中对应于该下一位置n+1的搜索范围内从右数第m个像素点时,右侧视图搜索块包含的所有像素点的编号如表8所示,
表7
A’0 A’1 A’2 A’3 A’4
B’0 B’1 B’2 B’3 B’4
C’0 C’1 C’2 C’3 C’4
D’0 D’1 D’2 D’3 D’4
E’0 E’1 E’2 E’3 E’4
表8
所以,当右侧视图搜索块的中心位于右侧视图中对应于该下一位置N+1的搜索范围内从右数第m个像素点时,该第n+1位置的HSAD值的计算公式为:
HSADn+1m1=HSADnm1-|A5-A`5|+|A0-A`0|
......
HSADn+1m5=HSADnm5-|E5-E`5|+|E0-E`0|
一般性地,当左侧视图搜索块中心由当前位置n滑动至所述下一位置n+1时,相应地,右侧视图的搜索范围向右平移一个像素,右侧视图搜索块在所述搜索范围内由右向左水平滑动M个位置。本领域技术人员可以明确,可以根据左侧视图搜索块中心所在的起始位置(记作当前位置n)的具体情况来对上述两种可选方式进行选择或组合,即当左侧视图搜索块中心所在的起始位置为左侧视图感兴趣区域的第A像素行的左侧端点时,下一位置n+1为左侧视图搜索块中心由当前位置n水平向右滑动一个像素点所在的位置;当左侧视图搜索块中心所在的起始位置为左侧视图感兴趣区域的第A像素行的右侧端点时,下一位置n+1为左侧视图搜索块中心由当前位置n水平向左滑动一个像素点所在的位置;左侧视图搜索块中心所在的起始位置为左侧视图感兴趣区域的第A像素行的非端点位置时,则既要向右滑动也要向左滑动,以遍历第A像素行的所有感兴趣区域内的像素点。
一般性地,第二运算子单元计算ADl,所述ADl表示左侧视图搜索块中心在位置n时右侧视图搜索块第j行最左侧像素点与左侧视图搜索块第j行最左侧像素点的灰度值差的绝对值;
所述第三运算子单元计算当前位置相对应的第j行HSAD和与其对应的ADl的差;
所述第四运算子单元计算ADr,所述ADr表示左侧视图搜索块中心在n+1位置时右侧视图搜索块第j行最右侧像素点与左侧视图搜索块第j行最右侧像素点的灰度值差的绝对值。
示例性地,当下一位置n+1为左侧视图搜索块中心由当前位置n水平向右滑动一个像素点所在的位置,左侧视图搜索块包含的所有像素点的编号如表5所示以及当右侧视图搜索块的中心位于右侧视图中对应于该下一位置n+1的搜索范围内从右数第m个像素点右侧视图搜索块包含的所有像素点的编号如表6所示时,ADl=|A1-A`1|,ADr=|A6-A`6|;
当下一位置n+1为左侧视图搜索块中心由当前位置n水平向左滑动一个像素点所在的位置,左侧视图搜索块包含的所有像素点的编号如表7所示以及当右侧视图搜索块的中心位于右侧视图中对应于该下一位置n+1的搜索范围内从右数第m个像素点右侧视图搜索块包含的所有像素点的编号如表8所示时,ADl=|A0-A`0|,ADr=|A5-A`5|。
本发明实施例四提供了一种硬件加速器的加速方法,具体地,通过硬件加速器中的运算单元执行基于像素行的运算,并利用前一位置的计算结果迭代计算后续位置的结果,大大减少了硬件加速器中所需的元件数量,实现硬件结构的轻量化。
实施例五
图7是本发明实施例五提供的信息仓的电路结构图。
如图所示,所述信息仓(140)接收第一运算子单元(1301)、第五运算子单元(1305)、第六运算子单元(1306)输出的运算结果,并可将数据发送至第六运算子单元(1306)中进行运算。
其中,第一运算子单元(1301)计算初始化运算时的HSAD,示例性地如果感兴趣区域包括10行,则进行10次初始化运算,共计算获得10*winsize*M个HSAD;
第五运算子单元(1305)通过双边运算计算除初始化运算之外的HSAD,示例性地如果感兴趣区域包括10行,每行除初始化运算所在位置外有8个像素点,共计算获得10*8*winsize*M个HSAD;
第六运算子单元(1306)计算SAD,计算SAD具体采用以下方式:
其中,HSADj为当左侧视图搜索块中心位于左侧视图感兴趣区域内某一位置时,右侧视图搜索块中心位于右侧视图某一位置时第j行的HSAD,j=0…winsize-1,1≤m≤M,M为预设的最大视差;
示例性地,如果感兴趣区域包括10行,每行包括9个像素点,共计算获得10*9*M个SAD;
示例性地,本领域技术人员可以确定,信息仓保存有10*9*M个SAD,以及每个SAD所对应的左侧视图搜索块中心位置和右侧视图搜索块中心位置。
实施例六
在图1中,比较单元(150)用于读取信息仓(140)中存储的数据,并输出比较结果。
在信息仓中,对于感兴趣区域内的每一个像素点,对应保存了M个SAD和M个右侧视图搜索块中心位置。比较单元(150)对M个SAD进行比较,确定SAD的最小值所对应的右侧视图搜索块中心位置,确定所述右侧视图搜索块中心位置对应的像素点为匹配点。示例性地,如果感兴趣区域包括10行,每行包括9个像素点,则比较单元(150)进行90次的比较,每一次比较针对其中一个像素点,确定该像素点的SAD的最小值所对应的右侧视图搜索块中心位置,确定所述右侧视图搜索块中心位置对应的像素点为匹配点。
可选地,比较单元可以在信息仓中每保存一个像素点及其对应的SAD和右侧搜索块中心位置时进行比较,也可以在信息仓中已保存所有感兴趣区域内像素点及其对应的SAD和右侧搜索块中心位置时进行比较。
实施例七
图8是本发明实施例七提供的硬件加速器的结构图。
图中,硬件加速器还包括预处理单元(180)和去噪单元(170),预处理单元(180)连接获取单元(110)和逻辑bank群组(120),用于对图像进行预处理,可选地,预处理方式为sobel滤波。去噪单元(170)与比较单元(140)相连,对比较单元输出的比较结果进行去噪,可选地,采用唯一性验证与视差验证函数验证匹配点,去除噪声点。
实施例八
图9是本发明实施例八提供的一种硬件加速器的加速方法结构图。
图中,硬件加速器还包括匹配点获取单元(190),摄像机坐标系生成单元(200)和视差确定单元(210),匹配点获取单元(190)获取经过去噪处理的匹配点,摄像机坐标系生成单元(200)基于相机的内外参数建立相机坐标系,视差确定单元(210)确定匹配点的视差。
实施例九
图10是本发明实施例九提供的一种硬件加速器的加速方法结构图。
图中,硬件加速器还包括信息获取单元(220)和深度信息获取单元(230)信息获取单元(220)接收视差确定单元(210)输出的视差,深度信息获取单元(230)通过三角法确定匹配点所对应的目标的该点在相机坐标系中的深度信息。
在此请注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员可根据不同的技术需求有选择的对上述实施例中相关技术内容进行组合。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (27)

1.一种硬件加速器的加速方法,其特征在于所述方法包括以下步骤:
步骤一:设置获取单元,所述获取单元获取待运算的图像数据,所述图像数据为左、右视图数据;
步骤二:设置逻辑bank群组,所述逻辑bank群组由多条ram组成,用于存储所述图像数据;
步骤三:设置运算单元,所述运算单元用于对所述逻辑bank群组中的数据进行运算,并输出运算结果,其中,所述运算包括初始化运算,所述初始化运算具体包括以下步骤:确定左侧视图初始化位置和右侧视图对应的搜索范围,当搜索块中心位于初始化位置时,计算所述搜索块的每一行所覆盖的像素点与右侧视图搜索范围内对应行的像素点的灰度值差的绝对值之和;其中,所述搜索块中心以所述初始化位置为起点水平移动,所述搜索范围根据搜索块中心的移动而对应地进行水平移动;
步骤四:设置信息仓,所述信息仓用于存储所述运算单元输出的运算结果,所述步骤三中的所述运算还包括双边运算,所述双边运算根据信息仓所存储的运算结果通过迭代的方式计算所述搜索块中心水平移动后所述搜索块的每一行所覆盖的像素点与右侧视图搜索范围内对应行的像素点的灰度值差的绝对值之和;
步骤五:设置控制单元,所述控制单元用于发送控制信号,以周期性地控制所述运算单元进行图像数据运算;
步骤六:设置比较单元,所述比较单元读取信息仓中存储的运算结果,得到比较结果。
2.根据权利要求1所述的加速方法,其特征在于,所述加速方法还包括设置预处理单元,所述预处理单元对图像进行SOBEL滤波。
3.根据权利要求1所述的加速方法,其特征在于,所述比较结果为图像的特征匹配点;
所述加速方法还包括设置去噪单元,用于验证所述匹配点以去除噪声点。
4.根据权利要求1所述的加速方法,其特征在于,所述图像数据为左、右视图数据。
5.根据权利要求4所述的加速方法,其特征在于,所述左右视图来源于双目视觉系统,所述左侧视图由双目视觉系统中左侧相机拍摄得到,所述右侧视图由双目视觉系统中右侧相机拍摄得到。
6.根据权利要求4所述的加速方法,其特征在于,所述左右视图来源于单目视觉系统,所述左侧视图和右侧视图分别由单目视觉系统在不同位置拍摄得到。
7.根据权利要求4所述的加速方法,其特征在于,所述控制单元还被设置为用于在左侧视图和右侧视图中各设置一个搜索块,分别为左侧视图搜索块和右侧视图搜索块,所述左、右侧视图搜索块在相应的视图中水平滑动,覆盖搜索块大小的像素点。
8.根据权利要求7所述的加速方法,其特征在于,所述左侧视图搜索块和右侧视图搜索块均为一winsize*winsize大小的正方形搜索块,所述winsize为奇数,且5≤winsize≤21。
9.根据权利要求8所述的加速方法,其特征在于,每块逻辑bank用于保存所述搜索块在视图中滑动所覆盖的像素点的灰度值。
10.根据权利要求8所述的加速方法,其特征在于,所述运算单元包括由减法器和加法器组成的第一运算子单元,所述第一运算子单元用于计算HSAD,所述HSAD为所述左侧视图搜索块和所述右侧视图搜索块内对应行的像素点的灰度值差的绝对值之和,所述第一运算子单元与所述逻辑bank群组、信息仓相连接,并将HSAD发送至所述信息仓。
11.根据权利要求10所述的加速方法,其特征在于,当左侧视图搜索块中心首次滑动至左侧视图感兴趣区域的第A像素行时,所述控制单元发送控制信号至运算单元处,所述第一运算子单元进行初始化运算以确定当前位置n的HSAD,所述当前位置n为左侧视图感兴趣区域内第A像素行中的一个像素点的位置,A∈[1,感兴趣区域的像素总行数]。
12.根据权利要求11所述的加速方法,其特征在于,第一运算子单元计算HSAD采用以下方式:
其中,HSADnmj表示左侧视图搜索块中心位于所述当前位置n时,对应的右侧视图搜索块中心在位置m时的第j行的HSAD;
l_sobeli表示在经过预处理的左侧视图l_sobel中当左侧视图搜索块中心在位置n时,左侧视图搜索块中第j行第i个像素点的灰度值;
r_sobeli表示在经过预处理的右侧视图r_sobel中当右侧视图搜索块中心在位置m时,右侧视图搜索块中第j行第i个像素点的灰度值;
其中,i,j=0…winsize-1,1≤m≤M,M为预设的最大视差。
13.根据权利要求12所述的加速方法,其特征在于,所述运算单元还包括:
第二运算子单元,所述第二运算子单元包含多个减法器,与逻辑bank群组相连接;
第三运算子单元,所述第三运算子单元包括多个减法器,第三运算子单元与所述信息仓和所述第一运算子单元和所述第二运算子单元相连接;
第四运算子单元,所述第四运算子单元包含多个减法器,与逻辑bank群组相连接;
第五运算子单元,所述第五运算子单元包含多个加法器,所述第五运算子单元与所述第三运算单元和第二运算单元相连接。
14.根据权利要求13所述的加速方法,其特征在于,所述第一运算子单元完成所述初始化运算后,所述左侧视图搜索块中心沿水平方向滑动,直至遍历左侧视图感兴趣区域内当前位置n所在行的所有像素点,所述运算单元进行双边运算以得到每个所述像素点对应的HSAD,并将上述HSAD保存在所述信息仓中。
15.根据权利要求14所述的加速方法,其特征在于,所述双边运算是基于当前位置n的HSAD确定下一位置n+1的HSAD,所述下一位置n+1位于左侧视图感兴趣区域内。
16.根据权利要求15所述的加速方法,其特征在于,所述下一位置n+1为左侧视图搜索块中心由当前位置n水平向右滑动一个像素点所在的位置;
所述第二运算子用于单元计算ADl,所述ADl为左侧视图搜索块中心在位置n时右侧视图搜索块第j行最左侧像素点与左侧视图搜索块第j行最左侧像素点的灰度值差的绝对值;
所述第三运算子单元用于计算所述HSADnmj和与其对应的ADl的差;
所述第四运算子单元用于计算ADr,所述ADr为左侧视图搜索块中心在n+1位置时右侧视图搜索块第j行最右侧像素点与左侧视图搜索块第j行最右侧像素点的灰度值差的绝对值;
所述第五运算子单元用于计算HSADn+1mj,其中HSADn+1mj为所述第三运算子单元计算结果与所述第四运算子单元计算结果的和,即HSADn+1mj=HSADnmj-ADl+ADr,其中,HSADn+1mj表示左侧视图搜索块中心向右水平移动一个像素时,对应的右侧视图搜索块中心在位置m时的第j行的HSAD。
17.根据权利要求15所述的加速方法,其特征在于,所述下一位置n+1为左侧视图搜索块中心由当前位置n水平向左滑动一个像素点所在的位置;
所述第二运算子单元用于计算ADr,所述ADr为左侧视图搜索块中心在n+1位置时右侧视图搜索块第j行最右侧像素点与左侧视图搜索块第j行最右侧像素点的灰度值差的绝对值;
所述第三运算子单元用于计算所述HSADnmj和与其对应的ADr的差;
所述第四运算子单元用于计算ADl,所述ADl为左侧视图搜索块中心在位置n时右侧视图搜索块第j行最左侧像素点与左侧视图搜索块第j行最左侧像素点的灰度值差的绝对值;
所述第五运算子单元用于计算HSADn+1mj,其中HSADn+1mj为所述第三运算子单元计算结果与所述第四运算子单元计算结果的和,即HSADn+1mj=HSADnmj-ADr+ADl,其中,HSADn+1mj表示左侧视图搜索块中心向左水平移动一个像素时,对应的右侧视图搜索块中心在位置m时的第j行的HSAD。
18.根据权利要求16所述的加速方法,其特征在于,当左侧视图搜索块中心由当前位置n滑动至所述下一位置n+1时,右侧视图的搜索范围向右平移一个像素,右侧视图搜索块在所述搜索范围内由右向左水平滑动M个位置。
19.根据权利要求17所述的加速方法,其特征在于,当左侧视图搜索块中心由当前位置n滑动至所述下一位置n+1时,右侧视图的搜索范围向左平移一个像素,右侧视图搜索块在所述搜索范围内由右向左水平滑动M个位置。
20.根据权利要求14所述的加速方法,其特征在于,所述运算单元还包括与所述信息仓相连接的第六运算子单元,所述第六运算子单元包括加法器,用于计算SAD。
21.根据权利要求20所述的加速方法,其特征在于,所述第六运算子单元计算SAD采用以下方式:
其中,HSADj为当左侧视图搜索块中心位于左侧视图感兴趣区域内某一位置时,右侧视图搜索块中心位于右侧视图某一位置时第j行的HSAD,j=0…
winsize-1,1≤m≤M;
左侧视图搜索块中心在左侧视图感兴趣区域内每滑动一个像素点,所述运算单元对应计算得到M个SAD。
22.根据权利要求21所述的加速方法,其特征在于,所述信息仓用于存储HSAD和SAD,以及左侧视图搜索块中心位置和右侧视图搜索块中心位置。
23.根据权利要求22所述的加速方法,其特征在于,当所述左侧视图搜索中心遍历左侧视图感兴趣区域所有像素点时,所述控制单元发送控制信号至运算单元以停止运算。
24.根据权利要求23所述的加速方法,其特征在于,当左侧视图搜索块中心在左侧视图感兴趣区域内由当前位置n滑动到下一位置n+1时,所述控制单元发送控制信号至所述比较单元以确定当前位置n对应的SAD的最小值所对应的右侧视图搜索块中心位置,确定所述右侧视图搜索块中心位置对应的像素点为匹配点。
25.一种双目视觉系统视差信息提取硬件加速器的加速方法,其特征在于,所述加速方法包括以下步骤:
步骤一:设置匹配点获取单元,用于获取采用权利要求1-24之一所述的加速方法所得到的匹配点;
步骤二:设置摄像机坐标系生成单元,用于获取双目视觉系统内外参数,建立摄像机坐标系;
步骤三:设置,用于根据所述摄像机坐标系和所述匹配点,确定匹配点的视差。
26.一种单目视觉系统视差信息提取硬件加速器的加速方法,其特征在于,所述加速方法包括以下步骤:
步骤一:设置匹配点获取单元,用于获取采用权利要求1-24之一所述的加速方法所得到的匹配点;
步骤二:设置摄像机坐标系生成单元,用于获取双目视觉系统内外参数,建立摄像机坐标系;
步骤三:设置,用于根据所述摄像机坐标系和所述匹配点,确定匹配点的视差。
27.一种深度信息提取硬件加速器的加速方法,其特征在于,所述加速方法包括以下步骤:
步骤一:设置信息获取单元,用于获取根据权利要求25或26之一所述的加速方法所得到的视差信息;
步骤二:设置深度信息确定单元,用于基于所述视差信息确定深度信息。
CN201810380087.8A 2018-04-25 2018-04-25 一种硬件加速器的加速方法 Active CN108665406B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810380087.8A CN108665406B (zh) 2018-04-25 2018-04-25 一种硬件加速器的加速方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810380087.8A CN108665406B (zh) 2018-04-25 2018-04-25 一种硬件加速器的加速方法

Publications (2)

Publication Number Publication Date
CN108665406A true CN108665406A (zh) 2018-10-16
CN108665406B CN108665406B (zh) 2022-06-28

Family

ID=63781047

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810380087.8A Active CN108665406B (zh) 2018-04-25 2018-04-25 一种硬件加速器的加速方法

Country Status (1)

Country Link
CN (1) CN108665406B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1195255A (zh) * 1997-03-31 1998-10-07 三星电子株式会社 运动图像的运动估算方法
CN102263957A (zh) * 2011-07-25 2011-11-30 北京航空航天大学 一种基于搜索窗口自适应的视差估计方法
CN102609937A (zh) * 2012-01-12 2012-07-25 中国人民解放军国防科学技术大学 一种面向硬件加速器的图像匹配方法
CN104700414A (zh) * 2015-03-23 2015-06-10 华中科技大学 一种基于车载双目相机的前方道路行人快速测距方法
US9836433B1 (en) * 2012-04-02 2017-12-05 Rockwell Collins, Inc. Image processing using multiprocessor discrete wavelet transform

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1195255A (zh) * 1997-03-31 1998-10-07 三星电子株式会社 运动图像的运动估算方法
CN102263957A (zh) * 2011-07-25 2011-11-30 北京航空航天大学 一种基于搜索窗口自适应的视差估计方法
CN102609937A (zh) * 2012-01-12 2012-07-25 中国人民解放军国防科学技术大学 一种面向硬件加速器的图像匹配方法
US9836433B1 (en) * 2012-04-02 2017-12-05 Rockwell Collins, Inc. Image processing using multiprocessor discrete wavelet transform
CN104700414A (zh) * 2015-03-23 2015-06-10 华中科技大学 一种基于车载双目相机的前方道路行人快速测距方法

Non-Patent Citations (9)

* Cited by examiner, † Cited by third party
Title
SUSANDEBUG: "双目匹配与视差计算", 《BLOG.CSDN.NET/U010025211/ARTICLE/DETAILS/53197337》 *
TINGTING HU ET AL: "FPGA Implementation of High Frame Rate and Ultra-Low Delay Tracking with Local-Search Based Block Matching", 《2017 INTERNATIONAL CONFERENCE ON MACHINE VISION AND INFORMATION TECHONOLOGY》 *
丁莹,等: "《复杂环境运动目标检测技术及应用》", 31 January 2014, 国防工业出版社 *
张淑琴,等: "《空间交会对接测量技术及工程应用》", 31 October 2005, 中国宇航出版社 *
杨洁等: "小型无人机动平台的双目立体匹配方法研究", 《计算机工程与设计》 *
毛苗等: "快速视差范围估计算法及其应用", 《计算机辅助设计与图形学学报》 *
罗庆生,等: "《仿生四足机器人技术》", 30 April 2016, 北京理工大学出版社 *
谷会涛等: "一种基于块匹配算法的SAD运算加速器", 《计算机工程与科学》 *
赵小川: "《现代数字图像处理技术提高及应用案例详解MATLAB版》", 30 April 2012, 北京航空航天大学出版社 *

Also Published As

Publication number Publication date
CN108665406B (zh) 2022-06-28

Similar Documents

Publication Publication Date Title
CN108537876B (zh) 三维重建方法、装置、设备及存储介质
CN108961390B (zh) 基于深度图的实时三维重建方法
JP6457648B2 (ja) 位置特定およびマッピングの方法
Nießner et al. Real-time 3D reconstruction at scale using voxel hashing
US8953024B2 (en) 3D scene model from collection of images
JP4372477B2 (ja) 2分木を巡回する方法およびシステム
EP1131789B1 (fr) Procede de construction d'un modele de scene 3d par analyse de sequence d'images
CN108898630A (zh) 一种三维重建方法、装置、设备和存储介质
US20100142828A1 (en) Image matching apparatus and method
CN107329962B (zh) 图像检索数据库生成方法、增强现实的方法及装置
US20130215239A1 (en) 3d scene model from video
US20130215221A1 (en) Key video frame selection method
CN109859314A (zh) 三维重建方法、装置、电子设备和存储介质
Li et al. kANN on the GPU with shifted sorting
CN111047596A (zh) 一种三维点云实例分割方法、系统及电子设备
CN106156281A (zh) 基于Hash‑Cube空间层次划分结构的最近邻点集快速检索方法
CN104851127A (zh) 一种基于交互的建筑物点云模型纹理映射方法及装置
CN109584355A (zh) 基于手机gpu的三维模型快速重建方法
GB2586157A (en) System and method for performing 3D imaging of an object
CN112734837A (zh) 图像匹配的方法及装置、电子设备及车辆
US9454554B1 (en) View dependent query of multi-resolution clustered 3D dataset
CN111882613B (zh) 基于边缘语义的视觉里程计方法、装置、存储介质及设备
CN111402429B (zh) 一种尺度还原、三维重建方法、系统、存储介质及设备
CN108665406A (zh) 一种硬件加速器的加速方法
CN107301618A (zh) 基于gpu并行加速的基础矩阵和单应矩阵估计方法和系统

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