发明内容
鉴于上述问题,本发明提供一种双目测距方法及其装置,以解决现有技术中双目测距准确性不高的问题。
本发明实施例,第一方面,提供一种双目测距方法,方法包括:
对双目相机采集的左图和右图进行特征提取得到左特征图和右特征图;
从左特征图和右特征图中选取其中一个为标准特征图,采用块匹配算法对左特征图和右特征图进行相关性计算,得到标准特征图的代价体积;
对所述代价体积中每个像素点的差异维度上的所有差异值的计算代价进行归一化处理,得到置信体积;
对所述置信体积中每个像素点的差异维度上的所有差异值的置信度取最大值,得到置信度图;
将所述置信度图中置信度大于预置阈值的像素点映射为1,将置信度小于等于所述阈值的像素点映射为0,得到掩码图;
对所述置信体积中每个像素点的差异维度上的所有差异值的置信度取argmax值,得到差异图;
将所述掩码图与所述差异图相乘得到目标差异图;
根据所述目标差异图进行距离估计。
本发明实施例,第二方面,提供一种双目测距装置,装置包括:
特征提取单元,用于对双目相机采集的左图和右图进行特征提取得到左特征图和右特征图;
代价体积生成单元,用于从左特征图和右特征图中选取其中一个为标准特征图,采用块匹配算法对左特征图和右特征图进行相关性计算,得到标准特征图的代价体积;
置信体积生成单元,用于对所述代价体积中每个像素点的差异维度上的所有差异值的计算代价进行归一化处理,得到置信体积;
置信度图生成单元,用于对所述置信体积中每个像素点的差异维度上的所有差异值的置信度取最大值,得到置信度图;
掩码图生成单元,用于将所述置信度图中置信度大于预置阈值的像素点映射为1,将置信度小于等于所述阈值的像素点映射为0,得到掩码图;
差异图生成单元,用于对所述置信体积中每个像素点的差异维度上的所有差异值的置信度取argmax值,得到差异图;
目标差异图生成单元,用于将所述掩码图与所述差异图相乘得到目标差异图;
测距单元,用于根据所述目标差异图进行距离估计。
本发明实施例,第三方面,提供一种双目测距方法,包括:
对双目相机采集的左图和右图进行特征提取得到左特征图和右特征图;
以左特征图作为标准特征图、以右特征图作为参考特征图,执行目标差异图生成步骤得到第一目标差异图;
以右特征图作为标准特征图、以左特征图作为参考特征图,执行目标差异生成步骤得到第二目标差异图;
从第一目标差异图和第二目标差异图中选取一个作为标准目标差异图,将另一个作为参考目标差异图;将标准目标差异图的像素点中与参考目标差异图中相应像素点不一致的像素点过滤掉,得到第三目标差异图;
根据第三目标差异图进行距离估计;
其中,所述目标差异生成步骤包括:采用块匹配算法对左特征图和右特征图进行相关性计算,得到标准特征图的代价体积;对所述代价体积中每个像素点的差异维度上的所有差异值的计算代价进行归一化处理,得到置信体积;对所述置信体积中每个像素点的差异维度上的所有差异值的置信度取最大值,得到置信度图;将所述置信度图中置信度大于预置阈值的像素点映射为1,将置信度小于等于所述阈值的像素点映射为0,得到掩码图;对所述置信体积中每个像素点的差异维度上的所有差异值的置信度取argmax值,得到差异图;将所述掩码图与所述差异图相乘得到目标差异图。
本发明实施例,第四方面,提供一种双目测距装置,包括:
特征提取单元,用于对双目相机采集的左图和右图进行特征提取得到左特征图和右特征图;
第一目标差异图生成单元,用于以左特征图作为标准特征图、以右特征图作为参考特征图,利用目标差异生成单元生成第一目标差异图;
第二目标差异图生成单元,用于以右特征图作为标准特征图、以左特征图作为参考特征图,利用目标差异生成单元生成第二目标差异图;
第三目标差异图生成单元,用于从第一目标差异图和第二目标差异图中选取一个作为标准目标差异图,将另一个作为参考目标差异图;将标准目标差异图的像素点中与参考目标差异图中相应像素点不一致的像素点过滤掉,得到第三目标差异图;
测距单元,用于根据所述第三目标差异图进行距离估计;
目标差异图生成单元,用于采用块匹配算法对左特征图和右特征图进行相关性计算,得到标准特征图的代价体积;对所述代价体积中每个像素点的差异维度上的所有差异值的计算代价进行归一化处理,得到置信体积;对所述置信体积中每个像素点的差异维度上的所有差异值的置信度取最大值,得到置信度图;将所述置信度图中置信度大于预置阈值的像素点映射为1,将置信度小于等于所述阈值的像素点映射为0,得到掩码图;对所述置信体积中每个像素点的差异维度上的所有差异值的置信度取argmax值,得到差异图;将所述掩码图与所述差异图相乘得到目标差异图。
本发明提供的技术方案,在通过匹配算法得到标准特征图的代价体积之后,对代价体积中每个像素点的差异维度上的所有差异值进行归一化处理,得到置信体积;在得到置信体积之后,一方面,对所述置信体积中每个像素点的差异维度上的所有差异值的置信度取argmax值作为输出,即可得到一个完整的、稠密的差异图,但是这个差异图包含了许多置信度不高或者匹配错误的像素点;另一方面,对所述置信体积中每个像素点的差异维度上的所有差异值的置信度取最大值得到置信度图,并对置信度图进行0和1的转换得到掩码图;最后,将掩码图与差异图进行相乘即可将差异图中匹配错误、置信度低的像素点滤除,仅保留置信度高的像素点,即得到目标差异图;根据该目标差异图能够得到更加准确地距离估计。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
三维世界中的同一个点在双目相机的左图和右图中的位置不同,假设三维世界中有一个点P,该点P在左图中的位置为像素点A,在右图中的位置为像素点B;假设以左图为标准图,右图为参考图,则参考图中像素点B即为像素点A匹配的参考像素点,计算像素点A与像素点B之间的位置差值即得到像素点A的差异值D(即Disparity,差异值为n则表示像素点A和像素点B相差n个像素),根据该差异值D即可估算点P与双目相机之间的距离。具体可采用以下公式(1)计算得到:
式(1)中,L为点P与双目相机的距离,B为双目相机的基线(即baseline),f为双目相机的焦距,D为差异值。
在自动驾驶领域,一般基于该种双目测距方式对目标物体进行测距,测距方式可如下:首先,得到标准图中每个像素点对应的差异值;再结合目标检测算法得到该标准图中哪些像素点属于同一个目标物体;根据该目标物体对应的多个像素点的差异值即可估计该目标物体与双目相机之间的距离。以目标物体为车辆进行描述,假设双目相机同时拍摄的左图和右图中包含某一车辆,以左图为标准图,以右图为参考图,计算得到左图中所有像素点的差异值,结合目标检测算法得到左图中与所述车辆对应的多个像素点,可以取该多个像素点的差异值的平均值/中位值,将平均值或者中位值作为D代入式(1)中,计算得到的L即为该车辆与双目相机之间的距离。
实施例一
参见图2,为本发明实施例中双目测距方法的流程图,该方法包括:
步骤101、对双目相机采集的左图和右图进行特征提取得到左特征图和右特征图。
步骤102、从左特征图和右特征图中选取其中一个为标准特征图,采用块匹配算法对左特征图和右特征图进行相关性计算,得到标准特征图的代价体积(即cost volume)。
步骤103、对所述代价体积中每个像素点的差异维度上的所有差异值的计算代价进行归一化处理,得到置信体积(即confidence volume)。
步骤104、对所述置信体积中每个像素点的差异维度上的所有差异值的置信度取最大值,得到置信度图(即confidence map)。
步骤105、将所述置信度图中置信度大于预置阈值的像素点映射为1,将置信度小于等于所述阈值的像素点映射为0,得到掩码图。
本发明实施例中,阈值的取值可以根据实际需求灵活设置,例如设置为0.5,本申请不作严格限定。
步骤106、对所述置信体积中每个像素点的差异维度上的所有差异值的置信度取argmax值,得到差异图。
步骤107、将所述掩码图与所述差异图相乘得到目标差异图。
步骤108、根据所述目标差异图进行距离估计。
在得到目标差异图时,本领域技术人员可以结合目标检测算法,得到左图中目标物体对应的像素点,从目标差异图中寻找这些目标物体对应的多个像素点的差异值,基于该多个像素点的差异值、前述公式(1)即可计算得到目标物体与双目相机之间的距离。
本发明实施例中,前述步骤104与步骤106之间没有严格的先后执行顺序,步骤106可以在步骤104之前执行,步骤106也可以是在步骤105之后执行,还可以是步骤104与步骤106同时执行,本申请不作严格限定。
本发明实施例中,步骤101可通过但不仅限于以下任意一种方式实现:
方式A1、将左图和右图依次输入到同一个卷积神经网络中,通过该卷积神经网络对左图和右图进行特征提取,得到左特征图和右特征图。
方式A2、将所述左图输入预置的第一卷积神经网络得到左特征图;将所述右图输入预置的第二卷积神经网络得到右特征图,其中所述第一卷积神经网络与所述第二卷积神经网络为孪生网络。所谓孪生网络是指两支结构、参数均完全相同的网络,孪生网络可用于双目测距和光流估计等应用场景。
优选地,本发明实施例中,前述卷积神经网络、第一卷积神经网络、第二卷积神经网络的网络结构可以是类ResNet结构或者是类VGG结构等,本领域技术人员可以根据实际需求灵活设置,本申请不做严格限定。
在三维世界中,同一个点在双目相机的左图和右图中的位置不同,该点在右图中的位置相比左图会靠左,如图3所示,假设三维世界中有一个点P,该点P在左图中的位置为点A,在右图中的位置为点B,若把左图和右图放置在同一个参考平面坐标系下,则点B在点A的左侧。基于该原理,本发明实施例的步骤102中,可以以左特征图为标准特征图、以右特征图为参考特征图,并在参考特征图以左特征图中的像素点的坐标为基准向左寻找与该像素点匹配的像素点;当然,还可以以右特征图为标准特征图、以左特征图为参考特征图,并在参考特征图中以右特征图中的像素点的坐标为基准向右寻找与该像素点匹配的像素点。
前述步骤102具体可通过但不仅限于以下方式实现,该方式包括以下步骤:
步骤A、从左特征图和右特征图中选取其中一个作为标准特征图,将另一个作为参考特征图;
步骤B、对标准特征图中的每一个标准像素点执行以下步骤(步骤b1~步骤b3),以得到所述标准特征图对应的代价体积:
步骤b1、在参考特征图中以标准像素点的坐标为基准,按照预置的与标准特征图对应的水平移动方向从参考特征图中选取与标准像素点对应的d个参考像素点;
步骤b2、对标准像素点与对应的每个参考像素点进行内积操作,得到标准像素点与参考像素点之间的计算代价(计算代价表示两个像素点之间的相似性),并建立标准像素点与各参考像素点的差异值和计算代价的对应关系;
步骤b3、将d个计算代价按照对应的差异值从小到大的顺序设置在标准像素点的差异维度上,得到所述标准特征图对应的代价体积。
当然,本发明实施例中,也可以将d个计算代价按照对应的差异值从大到小的顺序设置在标准像素点的差异维度上,本申请对于将d个计算代价按什么顺序设置在标准像素点的差异维度上的顺序不做严格限定。
假设标准像素点A对应的参考像素点为A1、A2、A3,标准像素点A与参考像素点为A1、A2、A3的差异值分别为1、2、3,标准像素点A与参考像素点为A1、A2、A3之间的计算代价分别为x1、x2和x3,则建立各差异值与计算代价的关系为:差异值1对应计算代价x1、差异值2对应计算代价x2、差异值3对应计算代价x3,并在标准像素点A的差异维度上按照差异值从小到大的顺序依次设置计算代价x1、x2、x3,计算代价x1、x2、x3在差异维度上的顺序号为1、2、3,如图4A所示。
本发明实施例中,前述步骤103中,将每个像素点的差异维度上的各差异值的计算代价进行归一化处理得到各差异值对应的置信度。以图4A为例,对标准像素点A的差异值1、2、3对应的计算代价x1、x2、x3进行归一化处理,得到差异值1、2、3对应的置信度为y1、y2、y3,即得到如图4B所示的置信体积。
本发明实施例中,前述步骤104,以图4B为例,对标准像素点的差异维度上的差异值1、2、3的置信度y1、y2、y3取最大值,假设y2最大,则max(y1,y2,y3)=y2,即可得到如图4C所示的二维的置信度图。
本发明实施例中,前述步骤106中,以图4B为例,对标准像素点A的差异值1、2、3对应的置信度取argmax值,假设y2取值最大,y2对应的顺序号为2,则argmax(y1,y2,y3)=2,得到如图4D所示的二维的差异图。
本发明实施例中,若标准特征图为左特征图,则与该标准特征图对应的水平移动方向为水平向左;若标准特征图为右特征图,则与该标准特征图对应的水平移动方向为水平向右。
前述步骤b1具体是通过但不仅限于以下任意一种方式实现:
方式B1、在参考特征图中以标准像素点的坐标为基准,按照所述水平移动方向以预置步长逐步滑动d次,每滑动一次得到一个与标准像素点对应的参考像素点。
方式B1即实现在每一个当前参考像素点的基础上在水平移动方向以所述步长滑动一次即得到下一个参考像素点,直到滑动累积次数达到d次为止。本发明实施例中,步长可以设置为相邻两个像素点之间的距离的整数倍。假设步长设置为相邻两个像素点之间的距离的1倍,假设左特征图为标准特征图,左特征图中的标准像素点A,按照方式B1可以在参考特征图中找到与标准像素点A对应的参考像素点A1、A2、A3,则标准像素点A与参考像素点A1、A2、A3的差异值分别为1、2、3(差异值为n表示差n个像素),如图5A所示,图5A中像素点X是指参考特征图中坐标与标准像素点一致的像素点;若以右特征图为标准特征图,处理方式同理,在此不再赘述。假设步长设置为相邻两个像素点之间的距离的2倍,假设左特征图为标准特征图,左特征图中的标准像素点A,按照方式B1可在参考特征图中找到与标准像素点A对应的参考像素点A1、A2、A3,则标准像素点A与参考像素点A1、A2、A3的差异值分别为2、4、6(差异值为n表示差n个像素),如图5B所示,图5B中像素点X是指参考特征图中坐标与标准像素点一致的像素点;若以右特征图为标准特征图,处理方式同理,在此不在赘述。该步长可以由本领域技术人员根据需求进行灵活设置,本申请不作严格限定。
方式B2、在参考特征图中以标准像素点坐标为基准,按照所述水平移动方向选取连续多个像素点作为与标准像素点对应的多个参考像素点。
方式B2即实现直接将参考特征图中坐标与标准像素点坐标一致的像素点的在水平移动方向上的连续d个像素作为标准像素点对应的参考像素点。假设左特征图为标准特征图,左特征图中的标准像素点A,右特征图中坐标与标准像素点A坐标一致的像素点X,则将像素点X左侧的连续3个像素点A1、A2、A3作为标准像素点A对应的参考像素点,如图5C所示。假设右特征图为标准特征图,右特征图中的标准像素点B,左特征图中坐标与标准像素点B坐标一致的像素点X,则将像素点X右侧的连续3个像素点B1、B2、B3作为标准像素点B对应的参考像素点,如图5D所示。
本发明实施例中,所述d为预先设置的滑动范围(即最大搜索范围,代表最大差异值),d的取值可以为经验值,可由本领域技术人员根据实际需要灵活设置,本申请不作严格限定。
为便于本领域技术人员进一步对本方案的理解,以下通过示例1对选取左特征图作为标准特征图得到代价体积的技术方案进行详细描述;通过示例2对选取右特征图作为标准特征图得到代价体积的技术方案进行详细描述。
示例1和示例2中,假设双目相机同时采集的左图和右图分别为PL和PR;通过孪生网络分别对PL和PR进行特征提取,得到左特征图(用FL表示)和右特征图(用FR表示),其中FL,FR∈R(h×w×c),其中h、w、c分别为特征图的高、宽和特征数,下面通过两个示例分别对采用前述方式B1和方式B2得到代价体积进行详细描述。
示例1
以左特征图为标准特征图,以右特征图为参考特征图,设置滑动范围为d,水平移动方向为水平向左,步长设置为相邻两个像素点的距离的1倍;将标准特征图中的像素点称为标准像素点,将参考特征图中的像素点称为参考像素点,对左特征图中的每个标准像素点进行以下步骤1a~步骤3a,即可得到代价体积。以标准像素点A为例执行以下步骤1a~步骤3a进行描述:
步骤1a、在右特征图中以标准像素点A的坐标为基准向左滑动1次,得到参考像素点A1;在右特征图中以前一个参考像素点A1为基准再向左滑动1次,得到参考像素点A2;…,在右特征图中以前一个参考像素点Ad-1为基准再向左滑动1次,得到参考像素点Ad,依此可以在右特征图中确定出与标准像素点A对应的d个参考像素点,分别为A1、A2、…、Ad。
当然,在步骤1a中,左特征图中每一行中靠近左侧的连续d个标准像素点在右特征图中并不能完全找到对应的d个参考像素点,此时需要在右特征图中为这些标准像素点虚拟一些参考像素点。以左特征图中某一行像素从左到右的顺序为例,第1个标准像素点,需要在右特征图中相应行的最左侧连续虚拟d个参考像素点;第2个标准像素点,需要在右特征图中相应行的最左侧连续虚拟d-1个参考像素点;第3个标准像素点,需要在右特征图中相应行的最左侧连续虚拟d-2个参考像素点;…;依此类推,第d个标准像素点,需要在右特征图中相应行的最左侧虚拟1个参考像素点;从第d+1个像素点开始,不需要在相应行虚拟参考像素点。如图6所示,为针对左特征图中的第1行第1个标准像素点A,在右特征图中第一行的左侧虚拟d个参考像素点,分别为A1、A2、…、Ad。
步骤2a、依次对标准像素点A与d个参考像素点进行内积操作,得到标准像素点A分别与d个参考像素点之间的计算代价。假设任意一个标准像素点A的特征用表示/>计算得到标准像素点A分别与参考像素点A1、A2…、An的d个内积值依次为C_(x,y,1)、C_(x,y,2)、…、C_(x,y,d),其中/>其中<.,.>为内积操作;
步骤3a、将d个计算代价按照对应的差异值从小到大的顺序设置在标准像素点A的差异维度上。
当然,本领域技术人员还可以使用替代方案,例如,将前述步骤1a与步骤2a进行合并,每向左移动1次得到一个参考像素点时执行一次标准像素点与该参考像素点的内积操作,再进行下一次的向左移动。
示例2
以右特征图为标准特征图,以左特征图为参考特征图,设置滑动范围为d,水平移动方向为水平向右,步长设置为相邻两个像素点的距离的1倍;将标准特征图中的像素点称为标准像素点,将参考特征图中的像素点称为参考像素点,对右特征图中的每个标准像素点进行以下步骤1b~步骤3b,即可得到代价体积。以标准像素点B为例执行以下步骤1b~步骤3b进行描述:
步骤1b、在左特征图中以标准像素点B的坐标为基准向右滑动1次,得到参考像素点B1;在左特征图中以前一个参考像素点B1为基准再向右滑动1次,得到参考像素点B2;…,在左特征图中以前一个参考像素点Bd-1为基准再向右滑动1次,得到参考像素点Bd,依此可以在左特征图中确定出与标准像素点B对应的d个参考像素点,分别为参考像素点B1、B2、…、Bd。
当然,在步骤1b中,右特征图中每一行中靠近右侧的连续d个标准像素点在左特征图中并不能完全找到对应的d个参考像素点,此时需要在左特征图中为这些标准像素点虚拟一些参考像素点。以右特征图中某一行像素从右到左的顺序为例,第1个标准像素点,需要在左特征图中相应行的最右侧连续虚拟d个参考像素点;第2个标准像素点,需要在左特征图中相应行的最右侧连续虚拟d-1个参考像素点;第3个标准像素点,需要在左特征图中相应行的最右侧连续虚拟d-2个参考像素点;…;依此类推,第d个标准像素点,需要在左特征图中相应行的最右侧虚拟1个参考像素点;从第d+1个像素点开始,不需要在相应行虚拟参考像素点。如图7所示为针对右特征图中的第1行第1个标准像素点B,在左特征图中第1行的最右侧虚拟d个参考像素点,分别为像素点B1、B2、…、Bd。
本发明实施例中,可以将每一个虚拟的参考像素点设置为取值为0的像素点。
步骤2b、依次对标准像素点B与d个参考像素点进行内积操作,得到标准像素点B分别与d个参考像素点之间的计算代价。假设任意一个标准像素点B的特征用表示/>计算得到标准像素点B分别与参考像素点B1、B2…、Bn的d个内积值依次为C_(x,y,1)、C_(x,y,2)、…、C_(x,y,d),其中/>其中<.,.>为内积操作;
步骤3b、将d个计算代价按照相应差异值从小到大的顺序设置在标准像素点B的差异维度上。
当然,本领域技术人员还可以使用替代方案,例如,将前述步骤1b与步骤2b进行合并,每向右移动1次得到一个参考像素点时执行一次标准像素点与该参考像素点的内积操作,在进行下一次的向右移动。
优选地,本发明实施例中,前述步骤103具体实现可如下:采用softmax函数对代价体积中每个像素点的差异维度上的所有差异值的计算代价进行归一化处理,得到每个像素点的差异维度上各差异值的置信度,依此得到所述置信体积。softmax值即为置信度。
本发明实施例中,Softmax函数是指可以将向量的取值进行归一化的函数,表示成概率的形式。Softmax函数的数学表达式可如下式(2):
其中j=1,2,...,K 式(2)
图8为根据图2所示的方法流程进行距离估计的其中一个示意图,双目相机同时采集的左图和右图,用PL和PR表示;通过孪生网络分别对左图和右图进行特征提取,得到左特征图(用FL表示)和右特征图(用FR表示),其中FL,FR∈R(h×w×c),其中h、w、c分别为特征图的高、宽和特征数;采用匹配算法计算左特征图和右特征图之间的相关性,得到代价体积C∈R(h×w×d)其中h、w、c分别为代价体积的高、宽和差异维度上的计算代价数量;对所述代价体积中每个像素点的差异维度上的所有差异值的计算代价进行归一化处理得到置信体积Z∈R(h ×w×d);针对置信体积进行两个分支的处理:分支一、对所述置信体积中每个像素点的差异维度上的所有差异值的置信度取最大值,得到置信度图,并将所述置信度图中置信度大于预置阈值的像素点映射为1,将置信度小于等于所述阈值的像素点映射为0,得到掩码图;分支二、采用argmax函数对所述置信体积中每个像素点的差异维度上的所有差异值的置信度取argmax值(即选取差异维度上取值最大的置信度在差异维度上的顺序号)得到完整的、稠密的差异图,该差异图包含一些置信度不高或匹配错误的像素点;将分支一得到的掩码图与分支二得到的差异图进行相乘,将差异图中的置信度不高、匹配错误的像素点滤除得到目标差异图;最后,根据目标差异图进行距离估计。
优选地,本发明实施例中,将第一卷积神经网络和第二卷积神经网络作为一个整体网络,整体网络可以进行端到端的训练。训练网络时,整个算法只需要输出到置信体积为止,整个网络的训练可以看做在每个像素点做分类任务的训练。
实施例二
基于前述实施例一提供的一种双目测距方法的相同构思,本发明实施例还提供一种双目测距装置,该装置的结构如图9所示,包括特征提取单元11、代价体积生成单元12、置信体积生成单元13、置信度图生成单元14、掩码图生成单元15、差异图生成单元16、目标差异图生成单元17和测距单元18,其中:
特征提取单元11,用于对双目相机采集的左图和右图进行特征提取得到左特征图和右特征图;
代价体积生成单元12,用于从左特征图和右特征图中选取其中一个为标准特征图,采用块匹配算法对左特征图和右特征图进行相关性计算,得到标准特征图的代价体积;
置信体积生成单元13,用于对所述代价体积中每个像素点的差异维度上的所有差异值的计算代价进行归一化处理,得到置信体积;
置信度图生成单元14,用于对所述置信体积中每个像素点的差异维度上的所有差异值的置信度取最大值,得到置信度图;
掩码图生成单元15,用于将所述置信度图中置信度大于预置阈值的像素点映射为1,将置信度小于等于所述阈值的像素点映射为0,得到掩码图;
差异图生成单元16,用于对所述置信体积中每个像素点的差异维度上的所有差异值的置信度取argmax值,得到差异图;
目标差异图生成单元17,用于将所述掩码图与所述差异图相乘得到目标差异图;
测距单元18,用于根据所述目标差异图进行距离估计。
优选地,所述特征提取单元11具体实现如下:将所述左图输入预置的第一卷积神经网络,得到左特征图;将所述右图输入预置的第二卷积神经网络,得到右特征图,其中所述第一卷积神经网络与所述第二卷积神经网络为孪生网络。具体实现可参见实施例一中方式A2的内容,在此不再赘述。
当然,特征提取单元11的另一种可替代实现方式可如下:将左图和右图依次输入到同一个卷积神经网络中,通过该卷积神经网络对左图和右图进行特征提取,得到左特征图和右特征图。
优选地,所述代价体积生成单元12的结构如图10所示,包括选取子单元121和生成子单元122,其中:
选取子单元121,用于从左特征图和右特征图中选取其中一个作为标准特征图,将另一个作为参考特征图;
生成子单元122,用于对标准特征图中的每一个标准像素点执行以下步骤,以得到所述标准特征图对应的代价体积:在参考特征图中以标准像素点的坐标为基准,按照预置的与标准特征图对应的水平移动方向从参考特征图中选取与标准像素点对应的d个参考像素点;对标准像素点与对应的每个参考像素点进行内积操作,得到标准像素点与参考像素点之间的计算代价,并建立标准像素点与各参考像素点的差异值和计算代价的对应关系;将d个计算代价按照对应的差异值从小到大的顺序设置在标准像素点的差异维度上,得到所述标准特征图对应的代价体积。
优选地,所述生成子单元122在参考特征图中以标准像素点的坐标为基准,按照预置的与标准特征图对应的水平移动方向从参考特征图中选取与标准像素点对应的d个参考像素点,具体可通过但不仅限于以下任意一种方式实现:
方式C1、在参考特征图中以标准像素点的坐标为基准,按照所述水平移动方向以预置步长逐步滑动d次,每滑动一次得到一个与标准像素点对应的参考像素点。方式C1对应于实施例一中的方式B1,在此不再赘述。
方式C2、在参考特征图中以标准像素点坐标为基准,按照所述水平移动方向选取连续d个像素点作为与标准像素点对应的d个参考像素点。方式C2对应于实施例一中的方式B2,在此不再赘述。
本发明实施例中,若标准特征图为左特征图,则对应的水平移动方向为水平向左;若标准特征图为右特征图,则对应的水平移动方向为水平向右。
优选地,所述置信体积生成单元13,具体用于:采用softmax函数对代价体积中每个像素点的差异维度上的所有差异值的计算代价进行归一化处理,得到每个像素点的差异维度上各差异值的置信度,依此得到所述置信体积。
本发明实施例中,前述图9所示的装置可以运行在DSP(Digital SignalProcessing,数字信号处理器)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)控制器、工业电脑、行车电脑、ECU(Electronic Control Unit,电子控制单元)或者VCU(Vehicle Control Unit,整车控制器)的处理器上,例如CPU。
实施例三
基于前述实施例一提供的双目测距方法的相同构思,本发明实施例三提供另一种双目测距方法,该方法的流程如图11所示,包括:
步骤201、对双目相机采集的左图和右图进行特征提取得到左特征图和右特征图;
步骤202、以左特征图作为标准特征图、以右特征图作为参考特征图,执行步骤206得到第一目标差异图;
步骤203、以右特征图作为标准特征图、以左特征图作为参考特征图,执行步骤206得到第二目标差异图;
步骤204、从第一目标差异图和第二目标差异图中选取一个作为标准目标差异图,将另一个作为参考目标差异图;将标准目标差异图的像素点中与参考目标差异图中相应像素点不一致的像素点过滤掉,得到第三目标差异图;
步骤205、根据第三目标差异图进行距离估计;
步骤206、生成目标差异图。
步骤206具体包括以下步骤前述实施例一中的步骤102~步骤107,如图12所示,具体请参见实施例一中相关的内容,在此不在赘述。
实施例四
基于前述实施例三提供的双目测距方法,本发明实施例四提供一种双目测距装置,该装置的结构如图13所示,包括:
特征提取单元21,用于对双目相机采集的左图和右图进行特征提取得到左特征图和右特征图;
第一目标差异图生成单元22,用于以左特征图作为标准特征图、以右特征图作为参考特征图,利用目标差异生成单元26生成第一目标差异图;
第二目标差异图生成单元23,用于以右特征图作为标准特征图、以左特征图作为参考特征图,利用目标差异生成单元26生成第二目标差异图;
第三目标差异图生成单元24,用于从第一目标差异图和第二目标差异图中选取一个作为标准目标差异图,将另一个作为参考目标差异图;将标准目标差异图的像素点中与参考目标差异图中相应像素点不一致的像素点过滤掉,得到第三目标差异图;
测距单元25,用于根据所述第三目标差异图进行距离估计;
目标差异图生成单元26,用于生成目标差异图。
优选地,本发明实施例中,目标差异图生成单元26的结构可如图14所示,包括代价体积生成子单元261、置信体积生成子单元262、置信度图生成子单元263、掩码图生成子单元264、差异图生成子单元265和目标差异图生成子单元266,其中:
代价体积生成子单元261,用于从左特征图和右特征图中选取其中一个为标准特征图,采用块匹配算法对左特征图和右特征图进行相关性计算,得到标准特征图的代价体积;
置信体积生成子单元262,用于对所述代价体积中每个像素点的差异维度上的所有差异值的计算代价进行归一化处理,得到置信体积;
置信度图生成子单元263,用于对所述置信体积中每个像素点的差异维度上的所有差异值的置信度取最大值,得到置信度图;
掩码图生成子单元264,用于将所述置信度图中置信度大于预置阈值的像素点映射为1,将置信度小于等于所述阈值的像素点映射为0,得到掩码图;
差异图生成子单元265,用于对所述置信体积中每个像素点的差异维度上的所有差异值的置信度取argmax值,得到差异图;
目标差异图生成子单元266,用于将所述掩码图与所述差异图相乘得到目标差异图。
本发明实施例中,代价体积生成子单元261、置信体积生成子单元262、置信度图生成子单元263、掩码图生成子单元264、差异图生成子单元265和目标差异图生成子单元266的具体实现,可依次参见实施例二中的代价体积生成单元12、置信体积生成单元13、置信度图生成单元14、掩码图生成单元15、差异图生成单元16和目标差异图生成单元17,在此不再赘述。
本发明实施例中,前述图12所示的装置可以运行在DSP、FPGA控制器、工业电脑、行车电脑、ECU或者VCU的处理器上,例如CPU。
采用块匹配算法对左特征图和右特征图进行相关性计算,得到标准特征图的代价体积;对所述代价体积中每个像素点的差异维度上的所有差异值的计算代价进行归一化处理,得到置信体积;对所述置信体积中每个像素点的差异维度上的所有差异值的置信度取最大值,得到置信度图;将所述置信度图中置信度大于预置阈值的像素点映射为1,将置信度小于等于所述阈值的像素点映射为0,得到掩码图;对所述置信体积中每个像素点的差异维度上的所有差异值的置信度取argmax值,得到差异图;将所述掩码图与所述差异图相乘得到目标差异图。
采用块匹配算法对左特征图和右特征图进行相关性计算,得到标准特征图的代价体积;对所述代价体积中每个像素点的差异维度上的所有差异值的计算代价进行归一化处理,得到置信体积;对所述置信体积中每个像素点的差异维度上的所有差异值的置信度取最大值,得到置信度图;将所述置信度图中置信度大于预置阈值的像素点映射为1,将置信度小于等于所述阈值的像素点映射为0,得到掩码图;对所述置信体积中每个像素点的差异维度上的所有差异值的置信度取argmax值,得到差异图;将所述掩码图与所述差异图相乘得到目标差异图。
以上结合具体实施例描述了本发明的基本原理,但是,需要指出的是,对本领域普通技术人员而言,能够理解本发明的方法和装置的全部或者任何步骤或者部件可以在任何计算装置(包括处理器、存储介质等)或者计算装置的网络中,以硬件固件、软件或者他们的组合加以实现,这是本领域普通技术人员在阅读了本发明的说明的情况下运用它们的基本编程技能就能实现的。
本领域普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的上述实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括上述实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。