APP下载

双目测距在Android人机交互平台上的实现

2021-09-08汪元礼

关键词:双目测距标定

李 丹,汪元礼

(安徽工业大学电气与信息工程学院,安徽马鞍山 243032)

随着科学计算的发展,服务机器人正在进入人们的生活。在常见人机交互,如人脸立体识别、手势识别和眼动追踪等应用场景中,与服务机器人的人机交互体验会因人距离机器人远近的不同,直接影响机器人响应的准确性,进而对人机交互体验产生不良影响。随着Android 的发展,越来越多的消费级市场服务机器人逐渐使用Android 平台进行人机交互。双目视觉因具有低成本、高精度和强鲁棒性等特点,被广泛用于测距领域。在基于Android 的人机交互平台上实现双目测距,根据设定的多段距离阈值给用户不同的提示,对优化人机交互体验具有重要的应用价值。

国内外学者对双目视觉测距已有一定的研究,2015 年,英特尔推出了一款基于主动发射红外线与双目测距相结合的景深获取摄像头RealSense3D,用其可完成距离测算,但价格昂贵,对于已部署的普通双目摄像头需重新购置;Ma等在个人电脑上,使用归一化互相关(normalized cross correlation,NCC)算法模板匹配寻找匹配点,通过中心匹配点的二维坐标计算目标与相机的距离来进行双目测距,减少了光照不均匀带来的影响,但对匹配模板的选取要求较高、运算量较大、移植困难;瑚琦等在ARM(advanced RISC machine)平台上使用区域生长的广度优先标记算法实现了双目视觉测距,运算量虽有降低,但测量精度在300~800 mm 范围内误差率较高,达10%;黄青丹等基于半全局匹配(semi-global block matching,SGBM)算法实现电力仪表空间坐标的计算,测距精度在380~460 mm 范围平均相对误差不超过1.84%,但SGBM 算法时间在8 s 左右,耗时长,很难用于服务机器人中对时间较敏感的场景。为解决上述问题,提出使用运算量较小的块匹配(block matching,BM)算法,结合左右一致性检测和快速均值滤波,在保证算法快速的同时提高测距精度,以期实现Android人机交互平台准确快速测距的目的,提升用户人机交互体验。

1 双目视觉测距系统

1.1 双目视觉测距系统的设计

图1 系统处理流程Fig.1 System processing flow

1.2 双目视觉测距的实现

1.2.1 相机标定

双目相机标定的目的是建立相机成像几何模型,获取各项参数矩阵,寻找目标物体在图像与现实世界间转换的定量数学描述。通过相机标定需获取相机的内参和外参。

1.2.2 直方图均衡和双目图像矫正

为适应Android端图像处理的计算复杂度要求,使用插值加速方法降低变换函数的计算次数。通过限制对比度的自适应直方图均衡化,改进图像的局部对比度,获取更多的图像细节。

使用相机标定结果中左右相机各自的内参矩阵和畸变系数分别对左右相机的图像进行畸变校正;采用Bouguet 方法对图像进行立体矫正,通过极点约束将后续的立体匹配由二维匹配降至一维匹配,大大减少Android端的计算量;对矫正过的图片进行剪裁,获取最大有效匹配区域。

1.2.3 BM算法

使用灰度绝对误差累计窗口(sum of absolute differences,SAD)寻找左右两幅图像之间的最优匹配点,主要有归一化过滤、块代价聚集和视差图计算等过程。归一化处理可减少弱匹配点的误匹配,另在减少亮度差异的同时增加局部的纹理强度。通过寻找左右两幅图像在极线上滑动的窗口匹配代价最小值,获取最佳匹配点。使用的匹配代价计算公式为

其中:

E

为左匹配窗口的灰度均值;

E

为右匹配窗口的灰度均值;

D

为匹配窗口;

d

为视差;

C

(

x

,

y

,

d

)为匹配代价。对于给定的(

x

,

y

),寻找使

C

(

x

,

y

,

d

)最小的

d

,此时

d

被认为是该点的视差。式(1)代表窗口匹配的代价,代价越小,匹配程度越高,效果越好。通过视差

d

可获取深度信息

Z

,计算公式为

③YANG R.,“Chinese ways of thinking in the transformation of China’s higher education system”,J.Ryan(ed.),China’s Higher Education Reform and Internationalization,London and New York:Routledge,2011,pp.34 ~47.

其中:

f

为归一化焦距,即相机标定后得到内参中的

f

b

为两个相机光心之间的距离,即相机标定外参中的平移矩阵中的第一个参数。

1.2.4 改进的BM算法

BM 算法在图像灰度和深度不连续的区域表现不足,特别是在物体边界处和遮挡处易造成视差图空洞。通过式(2)可知,视差图空洞处的深度信息无穷大,严重影响测距性能。故采用左右一致性检测(left-right consistency check,LRC Check)和快速均值滤波对BM 立体匹配算法的后处理部分进行改进。左右一致性检测即通过遮挡检测得到相应的遮挡图像,根据遮挡点邻域内有效点的值为遮挡点重新赋值。

如图2 所示,

I

为左图像对应的视差图,

I

为右图像对应的视差图,点

p

I

视差图中某投影点。该投影点的视差值为

d

,记为

I

(

p

),该投影点在右图像中对应的匹配点为投影点

p

,视差值记为

I

(

p

)。设置视差阈值为

T

,则LRC遮挡检测的表达式为

图2 左右一致性检测示意图Fig.2 Schematic diagram of left-right consistency check

其中

O

(

p

)为

p

点是否遮挡的标志,即某点具体的视差值。当左右两边视差值之差大于设定的阈值时,该点被检测为遮挡点,对其重新赋值,完成遮挡填充。

左右一致性检测可处理因遮挡而产生的空洞,但对于其他未匹配的点或误匹配最后被剔除的点造成的空洞却没有填充。传统的解决方案是使用较大的卷积核对图像进行均值滤波,但这种方法计算量大,不适用于Android平台。使用快速均值滤波对已处理过的视差图进行均值滤波,采用邻域内累加值维持交集内像素累加和,即

2 实验

2.1 实验平台

双目视觉硬件实验平台如图3。使用USB OV9732 双目同步摄像头采集图像,搭载Android8.1系统的Cortex-A72 双核处理器ARM 板对采集到的双目图像进行分析处理。在正常环境下测试双目测距方案,通过点击事件发生处像素坐标系下的像素点坐标获取世界坐标系下的三维坐标。

图3 双目视觉硬件实验平台Fig.3 Experimental platform of binocular vision hardware

2.2 实验结果与分析

使用间距为25 mm的7×9棋盘格,利用MATLAB标定工具箱进行双目标定。内参标定结果如表1,外参标定结果如表2。

表1 双目相机内参数标定结果Tab.1 Calibration result of internal parameter of binocular camera

表2 双目相机外参数标定结果Tab.2 Calibration result of external parameter of binocular camera

正常环境下使用双目相机进行拍摄,获取的原图如图4。由图4 可知,受光照影响,图像局部对比度小,左右图像亮度分布不均匀,且存在极线不共线的情况。使用限制对比度的自适应直方图均衡的方式进行预处理,预处理后的图像如图5。由图5可看出:处理后的图像局部对比度有所提高,图像噪声有所减弱;图像仍存在图像极线不共线和畸变的情况。对图像进行畸变和Bouguet 立体校正,校正后的结果如图6。对比图5,6可发现:畸变校正和立体校正后,理想的平行双目图像,图像极线对齐;对预处理后的图像进行剪裁,只保留有效区域,使感兴趣区域最大化,为后续的目标立体匹配做准备。

图4 原图像Fig.4 Original image

图5 预处理后的图像Fig.5 Preprocessed image

图6 校正和有效区域裁剪后的图像Fig.6 Image after correction and effective region clipping

为验证校正和有效区域裁剪对生成视差图的影响,对原图、校正和有效区域裁剪后的图像使用BM 算法进行立体匹配并生成视差图,统计当前条件下两份图片生成各自视差图的时间,对比分析生成视差图的效果。原图及校正和裁剪后生成的左视差图如图7。由图7 可看出,相较于原图,校正和裁剪后的图像生成的左视差图整块空洞变少,匹配准确性更高。原图生成的左视差图耗时167 ms,校正和裁剪后图像生成的左视差图耗时153 ms。由此可见,校正和有效区域裁剪能减少匹配时间、提升匹配效果。

图7 左视差图Fig.7 Left parallax map

从图7 还可看出,校正和有效区域裁剪后图像生成的视差图中仍存在未匹配或误匹配被剔除的点,这些点对应的视差值为0,即深度信息无限大。考虑到距离测算的要求,为保证测算准确,对这些空洞进行填充,并由积分图滤波窗口内其他有效深度信息的加权为其深度信息重新赋值,效果如图8。由图8可见,空洞填充后,视差图中深度信息无限大的错误点显著减少,深度信息更准确。

图8 空洞填充后的视差图Fig.8 Parallax map after hole filling

通过调整标定板与摄像头的距离,测试给定阈值下系统对不同距离的响应,结果如图9。图9 显示:在距离小于400 mm 时,提示距离摄像头太近;距离在400~900 mm之间,显示距离合适;距离大于900 mm时,提示距离摄像头太远。由此看出,设计的双目视觉系统能够对3种阈值距离进行正确识别,并在提示框给出文字提示。

图9 不同阈值下实际测试结果Fig.9 Actual test results under different thresholds

为排除偶然性误差。测量摄像头和被测标定板在多组不同距离下BM 算法的系统测量值、误差率和不同检测距离的提示文字,结果见表3。由表3可知,BM 算法的误差率随距离的增加而增大,900 mm内的误差率在1.05%以内,满足人机交互时测距精度要求。

表3 多距离测量结果对比Tab.3 Comparison of multi-distance measurement results

相同测试环境下,BM 算法和SGBM 两种算法的测试时间和误差率如表4。由表4可见:SGBM 算法测距精度比BM 算法稍好,但响应的测试时间长,较长的时间意味着用户等待时间增加,使用体验下降;BM 算法在900 mm 内的误差率在1.05%以内,大于SGBM 算法的误差率(0.80%),但耗时却远低于SGBM 的秒级耗时,仅维持在156 ms 内,满足人机交互时测距精度和时延的要求。

表4 两种常见算法的测距结果Tab.4 Ranging results of two common algorithms

3 结 论

设计基于Android 嵌入式平台的小型双目测距系统,在Android 嵌入式人机交互平台上使用BM 算法进行立体匹配,结合限制对比度的自适应直方图均衡化对图像进行预处理,加入左右一致性检测和快速均值滤波获取最终视差图。使用标定板测距模拟人机交互场景下距离的检测,针对不同的检测距离给用户不同的交互提示。实验结果表明,对于设计的双目视觉测距系统,其测距误差率随双目相机和标定板间距离的增大而增加;在900 mm以内时,测距误差率在1.05%以内,检测时间低于156 ms,基本满足Android平台人机交互体验的测距精度和时间要求。

猜你喜欢

双目测距标定
采用双目视觉和自适应Kalman滤波的作物行识别与跟踪
霜 降 苏美玲
基于双目视觉的机器人定位与导航算法
机械手的双目视觉定位抓取研究
CT系统参数标定及成像—2
CT系统参数标定及成像—2
基于傅立叶变换的CT系统参数标定成像方法探究
基于傅立叶变换的CT系统参数标定成像方法探究
标定电流与额定最大电流的探讨
电力电缆故障测距分析与应用