首页> 中国专利> 视差图确定方法和装置、计算机可读存储介质、电子设备

视差图确定方法和装置、计算机可读存储介质、电子设备

摘要

本公开实施例公开了一种视差图确定方法和装置、计算机可读存储介质、电子设备,其中,方法包括:获得双目相机采集的左图和右图;针对所述左图中的每个左图像素点,结合所述右图中与所述左图像素点对应的多个右图像素点确定所述左图像素点的代价聚合,基于所述代价聚合确定所述左图像素点对应的视差值;基于所述左图中所有左图像素点中每个所述左图像素点对应的视差值,确定所述左图和右图对应的视差图;本实施例通过对左图中的每个像素单独确定视差值,相对现有技术中基于整个左图确定视差图的方法,降低了对内存的要求,本实施例提供的视差图可以在内存空间较小的芯片中运行,扩展了视差图确定方法的应用场景。

著录项

  • 公开/公告号CN113345001A

    专利类型发明专利

  • 公开/公告日2021-09-03

    原文格式PDF

  • 申请/专利权人 智车优行科技(北京)有限公司;

    申请/专利号CN202110548369.6

  • 发明设计人 曹红胜;何君舰;

    申请日2021-05-19

  • 分类号G06T7/55(20170101);G06T3/40(20060101);

  • 代理机构11657 北京思源智汇知识产权代理有限公司;

  • 代理人王晓多

  • 地址 100020 北京市朝阳区北三环北路27号嘉铭中心B座2层

  • 入库时间 2023-06-19 12:25:57

说明书

技术领域

本公开涉及计算机视觉技术,尤其是一种视差图确定方法和装置、计算机可读存储介质、电子设备。

背景技术

视差图是以图像对中任一幅图像为基准,其大小为该基准图像的大小,元素值为视差值的图像。由于视差图包含了场景的距离信息,因此从立体图像对中提取视差图的图像匹配,一直是双目视觉研究中最为活跃的领域,值得我们去深度的学习;现有技术中,常用的视差图计算方法是SGM算法,但是由于SGM算法需要较大内存,在内存较小的芯片上难以运行,限制了视差图计算的实用性。

发明内容

为了解决上述技术问题,提出了本公开。本公开的实施例提供了一种视差图确定方法和装置、计算机可读存储介质、电子设备。

根据本公开实施例的一个方面,提供了一种视差图确定方法,包括:

获得双目相机采集的左图和右图;

针对所述左图中的每个左图像素点,结合所述右图中与所述左图像素点对应的多个右图像素点确定所述左图像素点的代价聚合,基于所述代价聚合确定所述左图像素点对应的视差值;

基于所述左图中所有左图像素点中每个所述左图像素点对应的视差值,确定所述左图和右图对应的视差图。

可选地,所述结合所述右图中与所述左图像素点对应的多个右图像素点确定所述左图像素点的代价聚合,基于所述代价聚合确定所述左图像素点对应的视差值,包括:

结合所述右图中与所述左图像素点对应的多个右图像素点,确定所述左图像素点在第一方向上的多个第一代价值和在第二方向上的多个第二代价值;

基于所述多个第一代价值和所述多个第二代价值,确定所述左图像素点对应的代价聚合;

基于所述左图像素点对应的代价聚合确定所述左图像素点对应的视差值。

可选地,所述结合所述右图中与所述左图像素点对应的多个右图像素点,确定所述左图像素点在第一方向上的多个第一代价值和在第二方向上的多个第二代价值,包括:

基于所述左图像素点在所述右图中对应的行,确定所述左图像素点对应的多个右图像素点;

基于所述多个右图像素点和保存的所述左图像素点的上一像素点对应的第一方向的历史第一代价值,确定所述左图像素点在第一方向上的多个所述第一代价值,并将所述多个第一代价值存入缓存;

基于所述多个右图像素点对应的汉明距离值和保存的所述左图像素点的上一像素点对应的第二方向的历史第二代价值,确定所述左图像素点在第二方向上的多个所述第二代价值,并将所述多个第二代价值存入缓存。

可选地,在基于所述多个右图像素点和保存的所述左图像素点的上一像素点对应的第一方向的历史第一代价值,确定所述左图像素点在第一方向上的多个所述第一代价值并保存之后,还包括:

从所述多个第一代价值中确定最小第一代价值存入缓存;

在基于所述多个右图像素点对应的汉明距离值和保存的所述左图像素点的上一像素点对应的第二方向的历史第二代价值,确定所述左图像素点在第二方向上的多个所述第二代价值并保存之后,还包括:

从所述多个第二代价值中确定最小第二代价值存入缓存。

可选地,在基于所述左图像素点对应的代价聚合确定所述左图像素点对应的视差值之后,还包括:

释放所述左图像素点对应的上一个像素点占用的缓存空间。

可选地,所述基于所述多个右图像素点和保存的所述左图像素点的上一像素点对应的第一方向的历史第一代价值,确定所述左图像素点在第一方向上的多个所述第一代价值,并将所述多个第一代价值存入缓存,包括:

分别计算所述左图像素点与所述多个右图像素点中每个右图像素点之间的汉明距离,得到多个汉明距离值并保存;

利用匹配代价算法,基于所述多个汉明距离值中的每个汉明距离值和所述多个历史第一代价值中的每个历史第一代价值,确定所述左图像素点在第一方向上的多个所述第一代价值并保存。

可选地,所述基于所述多个右图像素点对应的汉明距离值和保存的所述左图像素点的上一像素点对应的第二方向的历史第二代价值,确定所述左图像素点在第二方向上的多个所述第二代价值,并将所述多个第二代价值存入缓存,包括:

利用匹配代价算法,基于所述多个汉明距离值中的对应的汉明距离值和保存的所述左图像素点的上一像素点对应的第二方向的历史第二代价值,确定所述左图像素点在第二方向上的多个所述第二代价值并保存。

可选地,所述基于所述左图像素点在所述右图中对应的行,确定所述左图像素点对应的多个右图像素点,包括:

基于所述左图像素点在所述左图中的行,确定所述左图像素点在所述右图中对应的行;

以所述右图中对应的行中的每个像素点为起始点,在设定扩大范围内确定一个所述右图像素点,得到多个所述右图像素点。

可选地,在获得双目相机采集的左图和右图之后,还包括:

分别对所述左图和所述右图进行图像变换,得到变换后的左图和右图。

根据本公开实施例的另一方面,提供了一种视差图确定装置,包括:

图像获取模块,用于获得双目相机采集的左图和右图;

点视差值确定模块,用于针对所述左图中的每个左图像素点,结合所述右图中与所述左图像素点对应的多个右图像素点确定所述左图像素点的代价聚合,基于所述代价聚合确定所述左图像素点对应的视差值;

视差图确定模块,用于基于所述左图中所有左图像素点中每个所述左图像素点对应的视差值,确定所述左图和右图对应的视差图。

可选地,所述点视差值确定模块,包括:

代价确定单元,用于结合所述右图中与所述左图像素点对应的多个右图像素点,确定所述左图像素点在第一方向上的多个第一代价值和在第二方向上的多个第二代价值;

代价聚合单元,用于基于所述多个第一代价值和所述多个第二代价值,确定所述左图像素点对应的代价聚合;

视差确定单元,用于基于所述左图像素点对应的代价聚合确定所述左图像素点对应的视差值。

可选地,所述代价确定单元,具体用于基于所述左图像素点在所述右图中对应的行,确定所述左图像素点对应的多个右图像素点;基于所述多个右图像素点和保存的所述左图像素点的上一像素点对应的第一方向的历史第一代价值,确定所述左图像素点在第一方向上的多个所述第一代价值,并将所述多个第一代价值存入缓存;基于所述多个右图像素点对应的汉明距离值和保存的所述左图像素点的上一像素点对应的第二方向的历史第二代价值,确定所述左图像素点在第二方向上的多个所述第二代价值,并将所述多个第二代价值存入缓存。

可选地,所述代价确定单元,还用于从所述多个第一代价值中确定最小第一代价值存入缓存;从所述多个第二代价值中确定最小第二代价值存入缓存。

可选地,所述点视差值确定模块,还包括:

空间释放单元,用于释放所述左图像素点对应的上一个像素点占用的缓存空间。

可选地,所述代价确定单元在基于所述多个右图像素点和保存的所述左图像素点的上一像素点对应的第一方向的历史第一代价值,确定所述左图像素点在第一方向上的多个所述第一代价值,并将所述多个第一代价值存入缓存时,用于分别计算所述左图像素点与所述多个右图像素点中每个右图像素点之间的汉明距离,得到多个汉明距离值并保存;利用匹配代价算法,基于所述多个汉明距离值中的每个汉明距离值和所述多个历史第一代价值中的每个历史第一代价值,确定所述左图像素点在第一方向上的多个所述第一代价值并保存。

可选地,所述代价确定单元在基于所述多个右图像素点对应的汉明距离值和保存的所述左图像素点的上一像素点对应的第二方向的历史第二代价值,确定所述左图像素点在第二方向上的多个所述第二代价值,并将所述多个第二代价值存入缓存时,用于利用匹配代价算法,基于所述多个汉明距离值中的每个汉明距离值和保存的所述左图像素点的上一像素点对应的第二方向的历史第二代价值,确定所述左图像素点在第二方向上的多个所述第二代价值并保存。

可选地,所述代价确定单元在基于所述左图像素点在所述右图中对应的行,确定所述左图像素点对应的多个右图像素点时,用于基于所述左图像素点在所述左图中的行,确定所述左图像素点在所述右图中对应的行;以所述右图中对应的行中的每个像素点为中心,在设定扩大范围内确定一个所述右图像素点,得到多个所述右图像素点。

可选地,还包括:

图像变换模块,用于分别对所述左图和所述右图进行图像变换,得到变换后的左图和右图。

根据本公开实施例的又一方面,提供了一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序用于执行上述任一实施例所述的视差图确定方法。

根据本公开实施例的还一方面,提供了一种电子设备,所述电子设备包括:

处理器;

用于存储所述处理器可执行指令的存储器;

所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现上述任一实施例所述的视差图确定方法。

根据本公开实施例的再一方面,提供了一种计算机程序,包括计算机可读代码,其特征在于,当所述计算机可读代码在设备上运行时,所述设备中的处理器执行用于实现上述任一项实施例所述视差图确定方法中各步骤的指令。

基于本公开上述实施例提供的一种视差图确定方法和装置、计算机可读存储介质、电子设备,获得双目相机采集的左图和右图;针对所述左图中的每个左图像素点,结合所述右图中与所述左图像素点对应的多个右图像素点确定所述左图像素点的代价聚合,基于所述代价聚合确定所述左图像素点对应的视差值;基于所述左图中所有左图像素点中每个所述左图像素点对应的视差值,确定所述左图和右图对应的视差图;本实施例通过对左图中的每个像素单独确定视差值,相对现有技术中基于整个左图确定视差图的方法,降低了对内存的要求,本实施例提供的视差图可以在内存空间较小的芯片中运行,扩展了视差图确定方法的应用场景。

下面通过附图和实施例,对本公开的技术方案做进一步的详细描述。

附图说明

通过结合附图对本公开实施例进行更详细的描述,本公开的上述以及其他目的、特征和优势将变得更加明显。附图用来提供对本公开实施例的进一步理解,并且构成说明书的一部分,与本公开实施例一起用于解释本公开,并不构成对本公开的限制。在附图中,相同的参考标号通常代表相同部件或步骤。

图1是本公开一示例性实施例提供的视差图确定方法的流程示意图。

图2是本公开图1所示的实施例中步骤104的一个流程示意图。

图3是本公开图2所示的实施例中步骤1041的一个流程示意图。

图4是本公开一示例性实施例提供的视差图确定装置的结构示意图。

具体实施方式

下面,将参考附图详细地描述根据本公开的示例实施例。显然,所描述的实施例仅仅是本公开的一部分实施例,而不是本公开的全部实施例,应理解,本公开不受这里描述的示例实施例的限制。

应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。

本领域技术人员可以理解,本公开实施例中的“第一”、“第二”等术语仅用于区别不同步骤、设备或模块等,既不代表任何特定技术含义,也不表示它们之间的必然逻辑顺序。

还应理解,在本公开实施例中,“多个”可以指两个或两个以上,“至少一个”可以指一个、两个或两个以上。

还应理解,对于本公开实施例中提及的任一部件、数据或结构,在没有明确限定或者在前后文给出相反启示的情况下,一般可以理解为一个或多个。

另外,本公开中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本公开中字符“/”,一般表示前后关联对象是一种“或”的关系。

还应理解,本公开对各个实施例的描述着重强调各个实施例之间的不同之处,其相同或相似之处可以相互参考,为了简洁,不再一一赘述。

同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。

以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。

对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。

本公开实施例可以应用于终端设备、计算机系统、服务器等电子设备,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与终端设备、计算机系统、服务器等电子设备一起使用的众所周知的终端设备、计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统、大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。

终端设备、计算机系统、服务器等电子设备可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。

根据目前市场上能够用于高级驾驶辅助系统(ADAS)复杂计算的芯片很少,而为了满足辅助驾驶,计算视差图是必不可少的,目前,现有技术中的SGM算法,如果在s32v上运行,在动态规划算法所需的内存远远超过APEX模块(最大可适用内存为240K)可适用内存的最大上限,不能符合ADAS开发的要求。

APEX模块:APU(Array Processor Unit,APU),即阵列处理单元,是APEX端的并行加速单元。APU体系结构采用混合策略来实现流水线并行,即标量指令(Scalarinstruction)和向量指令(Vector instruction)分别有自己的流水线和存储器,两者是以并行方式工作的。每个APU有自己的数据内存(DMEM);128kbytes的向量内存(CMEM);32个CU(计算单元,computational units)用于向量操作(其中每个CU有4kbyes)。而且每个APU可以控制其它APU的向量操作。标量加速器是ARM端的加速单元,标量加速器可以对ARM端的相关算法作优化,使访问内存与数据传输有更好的加速。向量加速器是APEX端的加速单元。含有扩展的像素矩阵寄存器。

图1是本公开一示例性实施例提供的视差图确定方法的流程示意图。本实施例可应用如APEX模块等任意设备上,为智能驾驶实时提供视差图,如图1所示,包括如下步骤:

步骤102,获得双目相机采集的左图和右图。

本实施例中的双目相机可以是设置在任意位置的双目相机,例如,设置在车辆上,为智能驾驶提供包括障碍物距离等信息的前方路面信息。

步骤104,针对左图中的每个左图像素点,结合右图中与左图像素点对应的多个右图像素点确定左图像素点的代价聚合,基于代价聚合确定左图像素点对应的视差值。

本实施例中,将左图中的每个左图像素点作为独立对象进行处理,针对每个左图像素点进行匹配代价和视差值确定,由于每次在芯片中仅处理一个像素点的相关信息,极大的减少了内存的占用,并且,加快了视差计算的速度。

步骤106,基于左图中所有左图像素点中每个左图像素点对应的视差值,确定左图和右图对应的视差图。

通过将左图中每个左图像素点确定的视差值按照每个左图像素点在左图中的位置进行拼接,即可得到视差图。

本公开上述实施例提供的一种视差图确定方法,获得双目相机采集的左图和右图;针对所述左图中的每个左图像素点,结合所述右图中与所述左图像素点对应的多个右图像素点确定所述左图像素点的代价聚合,基于所述代价聚合确定所述左图像素点对应的视差值;基于所述左图中所有左图像素点中每个所述左图像素点对应的视差值,确定所述左图和右图对应的视差图;本实施例通过对左图中的每个像素单独确定视差值,相对现有技术中基于整个左图确定视差图的方法,降低了对内存的要求,本实施例提供的视差图可以在内存空间较小的芯片中运行,扩展了视差图确定方法的应用场景。

如图2所示,在上述图1所示实施例的基础上,步骤104可包括如下步骤:

步骤1041,结合右图中与左图像素点对应的多个右图像素点,确定左图像素点在第一方向上的多个第一代价值和在第二方向上的多个第二代价值。

现有技术中的SGM算法对于左图中的每个点分别计算8个方向上的代价值,对于左图中每行输入数据640*4*2=10240个字节(byte),经过汉明距离计算后的数据的大小为640*64*4=102400个byte,每个方向计算结束后需要保存用于下一行计算的COST需要640*64=40960byte,以其中三个方向为例:对于三个方向需要327680byte,保存每个方向每个点的64个COST最小值的缓存为640,三个方向需要1920byte,用于保存上一个方向COST的缓存为64*64*3=12288byte,以及每行输出数据640个byte。按照三个方向计算需要的内存大小为:2560+102400+122880x2+1920+12288+640=244.5K,如果再加上运行时分配的内存,则远超APEX模块提供的能使用的240K内存的上限;并且,为了提高效率,需要一次加载多行的数据,以提高帧率,所以内存使用越少,可以提高帧率。

步骤1042,基于多个第一代价值和多个第二代价值,确定左图像素点对应的代价聚合。

可选地,代价聚合的计算可基于以下公式(1)确定:

S(p,d)=∑

其中,S(p,d)表示像素点p,选择视差d的代价聚合;L

步骤1043,基于左图像素点对应的代价聚合确定左图像素点对应的视差值。

在确定左图像素点对应的代价聚合之后,可通过胜者为王(Winner-take-all,WTA)算法,确定该左图像素点的最小视差作为该左图像素点对应的视差值。本实施例针对以上内存占用过多的问题,除了对每个像素点分别计算视差值之外,对每个像素点仅计算两个方向的代价值,进一步减少了计算视差的内存占用,提高了帧率。

如图3所示,在上述图2所示实施例的基础上,步骤1041可包括如下步骤:

步骤301,基于左图像素点在右图中对应的行,确定左图像素点对应的多个右图像素点。

由于双目相机采集的左图和右图在标准情况下(如果存在误差,可通过图像矫正使其对齐),仅在横坐标上存在差异,而在纵向是不变的,因此,在确定视差时,左图像素点在右图中的对应点可能存在于对应行的任意位置,基于此,本实施例以右图中的一行中所有的像素点作为左图像素点对应的右图像素点。可选地,每个左图像素点对应多个右图像素点,对多个右图像素点执行编码,得到一个二进制编码值,基于该二进制编码值可确定左图像素点与右图对应像素点的汉明距离。

步骤302,基于多个右图像素点和保存的左图像素点的上一像素点对应的第一方向的历史第一代价值,确定左图像素点在第一方向上的多个第一代价值,并将多个第一代价值存入缓存。

可选地,从多个第一代价值中确定最小第一代价值存入缓存。

本实施例中,上一像素点是当前计算的左图像素点之前的左图中的像素点,而将当前计算的左图像素点对应的多个第一代价值存入缓存,可以在之后计算下一个像素点的所有第一代价值和最小第一代价值存入缓存,以备在计算下一个左图中的像素点对应的第一代价值时进行调用,提高了计算效率。

步骤303,基于多个右图像素点对应的汉明距离值和保存的左图像素点的上一像素点对应的第二方向的历史第二代价值,确定左图像素点在第二方向上的多个第二代价值,并将多个第二代价值存入缓存。

可选地,从多个第二代价值中确定最小第二代价值存入缓存。

本实施例中,以缓存中的左图像素点对应的汉明距离值和上一像素点对应的多个第二代价值确定多个第二代价值,实现快速确定代价值,并将多个第二代价值和最小第二代价值存入缓存,为下一个左图像素点计算代价值提供了计算基础,进一步提高了计算效率。而为了减小内存占用,在基于左图像素点对应的代价聚合确定左图像素点对应的视差值之后,还包括:释放左图像素点对应的上一个像素点占用的缓存空间;通过释放上一个像素点占用的缓存空间,使该缓存空间可以继续存储下一个需要计算的像素点对应的数据内容,即,整个左图的视差图确定过程仅需要保存两个左图像素点对应的相关数据,极大的减小了内存占用。

例如,上一个方向的代价值(COST,对应本实施例中的多个上一代价值)只申请640*64的大小,当处理更新L3方向(右上方向)的COST值时,需要将前64个COST矢量值(每个左图像素点对应64个右图像素点)先保存在一个缓存变量中,以保证当取最后一个向量时,可以取出此64个矢量进行计算;当计算L1方向(左上方向)的COST值时,需要将当前点的L1方向的COST先保存在一个缓存变量中,再更新当前经过计算后得到的COST,以保证当移动到下一个像素时,可以取出L1方向的COST值,同时达到减少内存,达到不超过240K的目的。

在一些可选的实施例中,步骤302可以包括:

分别计算左图像素点与多个右图像素点中每个右图像素点之间的汉明距离,得到多个汉明距离值并保存。

本实施例中,可基于现有技术计算左图像素点与每个右图像素点之间的汉明距离,其中,将分别以左图像素点和右图像素点为中心的25个像素点表达为二进制串,通过确定两个字符串之间的差异得到左图像素点和右图像素点之间的汉明距离,通过该二进制编码可以减少光照和图像噪声,提高鲁棒性。可选地,得到的每行像素的汉明距离并存入缓存中。

利用匹配代价算法,基于多个汉明距离值中的每个汉明距离值和第一方向的上一个方向对应的多个上一代价值中的每个上一代价值,确定左图像素点在第一方向上的多个第一代价值并保存。

其中,第一代价值的数量与多个右图像素点的精度需要的最大视差相对应,需要的精度越高,对应的数量越多。

在一些可选的实施例中,步骤303可以包括:

利用匹配代价算法,基于多个汉明距离值中的每个汉明距离值和多个保存的左图像素点的上一像素点对应的第二方向的历史第二代价值保存的左图像素点的上一像素点对应的第二方向的历史第二代价值,确定左图像素点在第二方向上的多个第二代价值并保存。

其中,第二代价值的数量与多个右图像素点的精度需要的最大视差相对应,需要的精度越高,对应的数量越多。

本实施例中,利用现有技术中的匹配代价算法确定第一代价值和第二代价值。其中,匹配代价计算公式,可如以下公式(2)所示:

其中,r指某个指向当前像素p的方向(在本实施例中为第一方向或第二方向),在此可以理解为像素p左边的相邻像素。L

在一些可选的实施例中,步骤301可以包括:

基于左图像素点在左图中的行,确定左图像素点在右图中对应的行;

以右图中对应的行中的每个像素点为中心,在设定扩大范围内确定一个右图像素点,得到多个右图像素点。

以右图中对应的行中的每个像素点为起始点,向右在设定扩大范围内确定一个右图像素点,得到多个右图像素点。

基于互信息的匹配代价计算由于需要初始视差值,所以需要通过分层迭代的方式得到较为准确的匹配代价值,而且概率分布计算稍显复杂,这导致代价计算的效率并不高。本公开上述实施例中,为了降低内存空间占用,对每个像素点仅计算两个方向的代价值,可能会影响计算得到的视差值的准确性,为此提出本实施例,通过扩大匹配范围,将右图中对应左图像素点的范围由原来的直接以对应位置确定5x5像素点,扩大到在25x25得到的625个像素点中确定25个像素点的方式,确定每次与左图像素点匹配的右图像素点的位置,降低错误匹配的概率,提升了稳定性,以增加匹配范围。

在一些可选的实施例中,在获得双目相机采集的左图和右图之后,还可以包括:

分别对左图和右图进行图像变换,得到变换后的左图和右图。

可选地,图像变换可以通过Census变换实现,在实际场景中,造成亮度差异的原因有很多,如由于左右摄像机不同的视角接受到的光强不一致,摄像机增益、电平可能存在差异,以及图像采集不同通道的噪声不同等,Census变换方法保留了窗口中像素的位置特征,并且对亮度偏差较为鲁棒,简单讲就是能够减少光照差异引起的误匹配。

另外,可选地,在得到视差图之后,还可以包括视差图的后处理方法,包括但不限于:滤波去噪(例如,中值滤波或双边滤波等)、连通域检测和左右一致性检测。滤波去躁主要用于去除视差图中由于误匹配造成的孤立噪点,视差图后处理中常用的两种滤波方法有中值滤波和双边滤波。左右一致性检测:根据左图、右图两幅输入图像,分别得到左右两幅视差图。对于左图中的一个点p,求得的视差值是d1,那么p在右图里的对应点应该是(p-d1),(p-d1)的视差值记作d2。若|d1-d2|>threshold(设定阈值),p标记为遮挡点(occludedpoint)。

本公开上述实施例提供的方法,速度和帧率可以满足智能驾驶过程中实时计算视差图的要求,并且,由于内存需求较小,芯片的选择范围扩大,还可以增加方向(例如,增加到3、4、5、6、7或8个方向等)以改善视差结果。

本公开实施例提供的任一种视差图确定方法可以由任意适当的具有数据处理能力的设备执行,包括但不限于:终端设备和服务器等。或者,本公开实施例提供的任一种视差图确定方法可以由处理器执行,如处理器通过调用存储器存储的相应指令来执行本公开实施例提及的任一种视差图确定方法。下文不再赘述。

图4是本公开一示例性实施例提供的视差图确定装置的结构示意图。本实施例可应用在任意芯片设备上,例如,APEX模块等,如图4所示,包括:

图像获取模块41,用于获得双目相机采集的左图和右图。

点视差值确定模块42,用于针对左图中的每个左图像素点,结合右图中与左图像素点对应的多个右图像素点确定左图像素点的代价聚合,基于代价聚合确定左图像素点对应的视差值;

视差图确定模块43,用于基于左图中所有左图像素点中每个左图像素点对应的视差值,确定左图和右图对应的视差图。

本公开上述实施例提供的一种视差图确定装置,获得双目相机采集的左图和右图;针对所述左图中的每个左图像素点,结合所述右图中与所述左图像素点对应的多个右图像素点确定所述左图像素点的代价聚合,基于所述代价聚合确定所述左图像素点对应的视差值;基于所述左图中所有左图像素点中每个所述左图像素点对应的视差值,确定所述左图和右图对应的视差图;本实施例通过对左图中的每个像素单独确定视差值,相对现有技术中基于整个左图确定视差图的方法,降低了对内存的要求,本实施例提供的视差图可以在内存空间较小的芯片中运行,扩展了视差图确定方法的应用场景。

在一些可选的实施例中,点视差值确定模块42,包括:

代价确定单元,用于结合右图中与左图像素点对应的多个右图像素点,确定左图像素点在第一方向上的多个第一代价值和在第二方向上的多个第二代价值;

代价聚合单元,用于基于多个第一代价值和多个第二代价值,确定左图像素点对应的代价聚合;

视差确定单元,用于基于左图像素点对应的代价聚合确定左图像素点对应的视差值。

可选地,代价确定单元,具体用于基于左图像素点在右图中对应的行,确定左图像素点对应的多个右图像素点;基于多个右图像素点和保存的左图像素点的上一像素点对应的第一方向的历史第一代价值,确定左图像素点在第一方向上的多个第一代价值,并将多个第一代价值存入缓存;基于多个右图像素点对应的汉明距离值和保存的左图像素点的上一像素点对应的第二方向的历史第二代价值,确定左图像素点在第二方向上的多个第二代价值,并将多个第二代价值存入缓存。

可选地,代价确定单元,还用于从多个第一代价值中确定最小第一代价值存入缓存;从多个第二代价值中确定最小第二代价值存入缓存。

可选地,点视差值确定模块42,还包括:

空间释放单元,用于释放左图像素点对应的上一个像素点占用的缓存空间。

在一些可选的实施例中,代价确定单元在基于多个右图像素点和保存的左图像素点的上一像素点对应的第一方向的历史第一代价值,确定左图像素点在第一方向上的多个第一代价值,并将多个第一代价值存入缓存时,用于分别计算左图像素点与多个右图像素点中下一个方向的代价计算并保存;利用匹配代价算法,基于多个汉明距离值中的每个汉明距离值和多个历史第一代价值中的每个历史第一代价值,确定左图像素点在第一方向上的多个第一代价值并保存。

可选地,代价确定单元在基于多个右图像素点对应的汉明距离值和保存的左图像素点的上一像素点对应的第二方向的历史第二代价值,确定左图像素点在第二方向上的多个第二代价值,并将多个第二代价值存入缓存时,用于利用匹配代价算法,基于多个汉明距离值中的每个汉明距离值和保存的左图像素点的上一像素点对应的第二方向的历史第二代价值,确定左图像素点在第二方向上的多个第二代价值并保存。

在一些可选的实施例中,代价确定单元在基于左图像素点在右图中对应的行,确定左图像素点对应的多个右图像素点时,用于基于左图像素点在左图中的行,确定左图像素点在右图中对应的行;以右图中对应的行中的每个像素点为中心,在设定扩大范围内确定一个右图像素点,得到多个右图像素点。

在一些可选的实施例中,本实施例提供的装置还包括:

图像变换模块,用于分别对左图和右图进行图像变换,得到变换后的左图和右图。

除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的视差图确定方法中的步骤。

所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。

此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的视差图确定方法中的步骤。

所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。

以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。

本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于系统实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。

可能以许多方式来实现本公开的方法和装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法和装置。用于所述方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。

还需要指出的是,在本公开的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。

提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。

为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号