随着高科技的迅猛发展, 许多行业开始和高科技融合起来提高效率, 如体育竞技运动中高科技已经开始大范围渗入了. 在乒乓球比赛中战况时常是很激烈的, 对战双方的快节奏使比赛一直处于迅速变换中, 许多精彩瞬间都是一闪而过, 之前通过慢动作和肉眼来捕捉落点处和运动轨迹已经不太适应如今的需求. 利用双目立体视觉系统对乒乓球[1,2]的运行轨迹进行三维重现, 不仅可以在比赛中精确判定落点, 还可以在日常训练中用来提高训练效果. 在日常训练中长期依靠教练的肉眼观察和经验去判定运动员的训练情况是比较受限的, 获得乒乓球的三维运动信息可以用来辅助分析运动员的击球技术及训练情况, 及时制定合适的训练方案.
随着各种智能机器人的出现, 乒乓球机器人也开始出现在人们的视野中, 而视觉系统是研究这类机器人的重中之重. 双目视觉系统相似于人类的视觉系统, 从二维图像中获取三维信息, 这就是三维重建技术实现的目的. 目前三维重建技术[3-5]已经日渐成熟, 许多行业都开始应用该技术, 例如在医学影像、化石结构重现、影视动画设计等方面. 最初的三维重建技术主要是针对静态建筑或处于静止状态的物体等, 随着该技术的成熟和广泛的应用范围, 近几年来, 三维重建也开始应用在物体的运动捕捉方面[6], 比如人体的动作、物体的运动轨迹以及柔性物体的变形[7,8]等等, 这些都可以通过三维重建技术重建出他们在三维空间中不同时刻的三维坐标, 从而重建出该物体的运动轨迹.
本文主要提出了一种基于图像序列的乒乓球三维运动轨迹重建方法, 通过双目立体相机系统来采集乒乓球运动的序列图像, 对采集的图像进行处理, 并重构出该乒乓球的运动轨迹, 对不同帧的图像中乒乓球所处的位置进行处理可得到一定时刻内乒乓球的运动速度及加速度.
1 立体标定和立体校正通过搭建起来的双目立体相机系统采集棋盘处于不同位置时的图像, 一共20组, 并对采集的图像进行立体标定[9,10], 得出左右相机的内参矩阵、畸变系数, 以及关于左右相机之间的平移和旋转矩阵.
先通过立体校正获得的左右相机畸变系数对左右图像进行畸变校正, 消除相机畸变; 然后再对消除畸变的两幅图像旋转使其共面, 并使其同行对准, 完成图像的立体校正.
2 图像提取本文主要基于乒乓球的颜色和形状进行特征检测, 先通过颜色识别过滤图像, 再通过改进的Hough圆检测算法准确地定位乒乓球在图像中的位置. 乒乓球检测算法的主要步骤如下: ① 颜色识别过滤图像; ② 图像预处理(形态学操作和滤波); ③ Canny边缘检测算法; ④ 设置轮廓面积范围, 粗略筛选所提取轮廓; ⑤ 霍夫圆检测[11], 确定球心位置.
2.1 颜色识别通常我们所获取的图像都是RGB模型, 相比RGB模型, HSV颜色模型更符合人对颜色的描述, 它包括色调(H)、饱和度(S)、亮度(V). 首先将BGR图像转换为HSV图像, 并对转换后图像的第三通道进行均衡化处理, 增强图像的对比度; 接下来就是对增强对比度后的图像进行颜色检测, 通过分别设置图像三通道的最小值和最大值, 来筛选出和乒乓球颜色相同或相近的背景, 得到二值图像.
由于采集的图像序列容易受光照和背景的影响, 为了提高图像颜色检测的速度和准确度, 将图像二值化的阈值参数设置为动态, 可根据图像背景自动调节.
2.2 图像预处理为了更好地消除图像中的噪声, 需对二值图像进行预处理, 先对获取到的目标二值图进行开运算, 剔除掉一些细小的噪声, 然后再用中值滤波平滑处理图像 . 中值滤波的工作原理就是用像素点的一个领域内各点灰度值的中值来替换该像素点原来的灰度值, 使周围的像素值比较接近真实值.
2.3 Canny边缘检测算法边缘检测算法的效果影响后续霍夫圆检测的精度, 本文选用比较经典的Canny边缘检测算法. Canny算法的实现步骤:
(1)首先用高斯滤波来消除噪声, 高斯内核示例(size=5)如下:
$K = \frac{1}{{139}}\left[ {\begin{array}{*{20}{c}} 2&4&5&4&2 \\ 4&9&{12}&9&4 \\ 5&{12}&{15}&{12}&5 \\ 4&9&{12}&9&4 \\ 2&4&5&4&2 \end{array}} \right]$ | (1) |
(2)依照Sobel算子的原理来计算梯度幅值和方向.
${G_x} = \left[ {\begin{array}{*{20}{c}} { - 1}&0&{ + 1} \\ {{\rm{ - }}2}&0&{ + 2} \\ {{\rm{ - }}1}&0&{ + 1} \end{array}} \right],{G_y} = \left[ {\begin{array}{*{20}{c}} { - 1}&{ - 2}&{ - 1} \\ 0&0&0 \\ { + 1}&{ + 2}&{ + 1} \end{array}} \right]$ | (2) |
幅值和方向:
$G = \sqrt {G_{{x}}^2 + G_y^2} $ | (3) |
$\theta = {\rm{arctan}}\left( {\frac{{{G_{{y}}}}}{{{G_x}}}} \right)$ | (4) |
(3)沿着梯度方向对幅值进行非极大值抑制.
(4)设置滞后阈值, 如果像素位置的幅值低于最小阈值则被排除, 若高于最大阈值则保留为边缘, 处于两者之间则根据具体情况判断.
2.4 粗筛选轮廓由于霍夫圆检测算法计算量大, 比较耗时, 为了提高算法的运行效率, 将先进行一次粗略筛选, 再进行圆检测. 对边缘检测后的图像提取轮廓, 用contourArea函数来计算所有轮廓的面积, 设置符合目标条件的轮廓面积范围, 排除一些面积相对比较大或者比较小的轮廓.
2.5 霍夫圆检测霍夫圆检测[11-14]的原理和霍夫线检测的原理类似, 就是将二维图像空间中的圆转换为三维参数空间中的点, 通过投票方式, 生成累计坐标平面, 设置一个累积权重来定位圆的位置.
图像空间中的圆方程一般为:
${\left( {{{x - a}}} \right)^2} + {\left( {y - b} \right)^2} = {r^2}$ | (5) |
其中, 圆心坐标为(a,b), 半径为r.
将圆坐标方程转换为极坐标方程如下:
$\left\{ {\begin{array}{*{20}{c}} {{{a}} = x - r\cos \theta } \\ {b = y - r\sin \theta } \end{array}} \right.$ | (6) |
圆转换为三维参数空间的点其实就是将圆方程转换为极坐标方程(即:
为了提高霍夫圆检测的速度和准确度, 减少不必要的计算, 可以提前设置所需检测圆的半径范围.
3 序列图像的特征点匹配要重构出乒乓球的运动轨迹, 就需要对运动目标进行不同帧序列图像的匹配. 在比赛中兵乓球的运动速度是较快的, 因此采用高速相机来进行拍摄, 本文使用的相机为168帧/s, 所以不同帧图像中的物体运动范围不是很大, 通过设置前后两帧图像的特征点坐标差值(由采集的运动图像获得)在一定范围内, 在该范围内进行搜索检测乒乓球, 可以实现不同帧图像的匹配, 此方法也能排除有些帧图像中误检测的其他特征点, 从而提高准确度.
假设第
$ \left\{ {\begin{array}{*{20}{c}} {x_i^n - \Delta {\sigma _x} \le x_i^{n + 1} \le x_i^n + \Delta {\sigma _x}} \\ {y_i^n - \Delta {\sigma _y} \le y_i^{n + 1} \le y_i^n + \Delta {\sigma _y}} \end{array}} \right. $ | (7) |
在匹配特征点后, 会得到一系列不同帧所对应的特征点坐标, 通过对这些坐标点进行平滑处理, 排除一些波动太大的坐标点.
4 三维重建空间点的三维重建[15]上就是图像坐标系向世界坐标系转换的过程, 求出特征点在空间中的位置是建立在双目立体系统的基础上, 两个相机水平放置, 已知两相机之间的距离T, 由于所采集的双目图像已经立体校正过,此时两个图像平面完全共面, 且像素行已对准, 因此可将该双目立体系统认定为理想的, 光轴完全平行的系统, 因此可通过视差和深度之间的关系求出特征点的三维坐标.
以左相机为世界坐标系原点建立坐标系, 假设特征点在左相机图像坐标系中的坐标为
$\left\{ {\begin{array}{l} {{X_i} = - \dfrac{{\left( {{x_{Li}} - {c_x}} \right)*T}}{{{x_{Ri}} - {x_{Li}}}}} \\ {{Y_i} = - \dfrac{{\left( {{y_{Li}} - {c_y}} \right)*T}}{{{x_{Ri}} - {x_{Li}}}}} \\ {{Z_i} = - \dfrac{{F*T}}{{{x_{Ri}} - {x_{Li}}}}} \end{array}} \right. \left( {{{i}} = 1,2, \cdots } \right)$ | (8) |
使用张正友标定法对两台相机标定, 标定后获得两个相机的内参矩阵
${K_L} = \left[ {\begin{array}{*{20}{c}} {1403.369\;84}&0&{947.695\;51} \\ 0&{1402.421\;10}&{605.997\;120} \\ 0&0&1 \end{array}} \right]$ | (9) |
$r = \left[ {\begin{array}{*{20}{c}} {0.002\;98}&{0.003\;51}&{0.016\;51} \end{array}} \right]$ | (10) |
$t = \left[ {\begin{array}{*{20}{c}} { - 3741.095\;89}&{ - 31.710\;03}&{ - 1.792\;99} \end{array}} \right]$ | (11) |
$\begin{split} &{D_L} =\\ &\left[\!\! {\begin{array}{*{20}{c}} { - 0.153\;74}\!\!&\!\!{0.079\;73}\!\!&\!\!{ - 0.000\;71}\!\!&\!\!{ - 0.000\;51} \!\!&\!\!{0.000\;00} \end{array}} \right] \end{split}$ | (12) |
$\begin{split} &{D_R} = \\ &\left[ {\begin{array}{*{20}{l}} { - 0.197\;85}\!\!&\!\!{0.140\;72}\!\!&\!\!{0.001\;35}\!\!&\!\!{0.002\;66}\!\!&\!\!{0.000\;00} \end{array}} \right] \end{split}$ | (13) |
${K_R} = \left[ {\begin{array}{*{20}{c}} {1405.729\;39}&0&{943.589\;33} \\ 0&{1410.127\;35}&{601.903\;01} \\ 0&0&1 \end{array}} \right]$ | (14) |
为了更好地体现本文算法检测的效果, 将与其他检测算法做比较. 图1(a)是图像阈值分割后, 然后筛选出符合乒乓球的特征(如面积、周长等)的轮廓并拟合轮廓的结果, 而图1(b)是由本文算法检测出来的效果, 由以下效果图的比较可知, 本文检测出的乒乓球轮廓更贴合乒乓球的形状, 这样会更加精确地定位乒乓球的球心位置.
在图2中的复杂背景中, 由于球刚好接近乒乓球台的表面, 从图片可看出接近的区域表面正好反光, 会使乒乓球的识别困难, 用以上两种算法分别检测, 只有本文算法可以检测出乒乓球, 可见本文算法有很好的适应性, 在背景复杂的情况下依然可以检测出目标.
5.3 序列图像的特征匹配结果本文将提取图像序列中前6帧匹配好的特征点坐标数据来更好体现乒乓球运动在图像中的特点, 因左右图像在时间序列上的特征匹配相差不大, 表1将仅以左图像特征点在时间序列上的匹配为代表.
由表1可知, 在相邻帧下乒乓球球心的图像坐标波动不大,
利用Matlab软件将重建出的一系列三维坐标点重现出来, 这些坐标表示了乒乓球在空间中处于不同时刻的位置, 为了更好地显示出乒乓球的运动轨迹, 将对重建出的数据进行非线性曲线拟合. 本文将提取乒乓球比赛或训练中的一些片段来进行轨迹重现, 如图3所示.
5.5 乒乓球的运动速度和加速度分析在重构出乒乓球相对比较精确的运动轨迹后, 可对乒乓球的运动形态进行进一步的分析, 计算出在某一段时间内乒乓球的运动速度和加速度, 对物体在空间中的运动形态描述的更加具体,更有助于时刻了解乒乓球的动态变化.
提取出乒乓球在某一段时刻的速度和加速度数据来加以验证, 由图4, 图5可看出比赛中的乒乓球速度和加速度变化挺大, 说明在比赛中节奏挺快.
6 结论与展望
本文在基于三维重建的基础上实现了对运动物体乒乓球的动态重建. 通过canny边缘检测和霍夫变换检测出乒乓球的轮廓, 并求出球体的球心; 再通过一系列序列图像匹配出不同时刻的乒乓球位置, 从而得出乒乓球在空间中的运动轨迹.
通过乒乓球的运动轨迹进而获得乒乓球的三维运动数据, 本文计算了乒乓球的速度和加速度等数据, 这些数据后续都可以用来分析乒乓球在空中的运动形态, 有很好的研究价值, 也可以后续用来实现在乒乓球比赛中乒乓球运动轨迹的跟踪, 从而预测乒乓球的落点范围. 本文研究还存在一些不足, 未考虑拖影情况下的乒乓球情况, 后续可展开具体研究.
[1] |
刘子召, 陈劲杰, 刘步才, 等. 视频图像中乒乓球的检测与跟踪方法. 工业控制计算机, 2011, 24(11): 58-59, 61. DOI:10.3969/j.issn.1001-182X.2011.11.026 |
[2] |
李新华, 宋承祥, 刘弘. 双目视觉测量在乒乓球运动速度分析中的应用. 计算机科学, 2008, 35(3): 256-257. DOI:10.3969/j.issn.1002-137X.2008.03.080 |
[3] |
Wei Q, Xu ZD, Wang J. Research and implementation of 3D reconstruction technique based on images. Proceedings of 2015 2nd International Conference on Information Science and Control Engineering. Shanghai, China. 2015. 408–411.
|
[4] |
黄林超. 基于双目立体视觉的三维重建技术研究[硕士学位论文]. 广州: 华南理工大学, 2019.
|
[5] |
张如如, 葛广英, 申哲, 等. 基于双目立体视觉的三维重建方法. 扬州大学学报(自然科学版), 2018, 21(3): 5-10. DOI:10.19411/j.1007-824x.2018.03.002 |
[6] |
罗忠祥, 庄越挺, 潘云鹤, 等. 基于视频的运动捕获. 中国图象图形学报, 2002, 7(8): 752-758. DOI:10.3969/j.issn.1006-8961.2002.08.002 |
[7] |
廖芳, 史金龙, 龚肖. 点状特征柔性物体三维运动捕获方法. 计算机系统应用, 2018, 27(7): 230-235. DOI:10.15888/j.cnki.csa.006447 |
[8] |
龚肖, 史金龙, 廖芳. 点特征柔性物体三维运动恢复方法. 红外与激光工程, 2018, 47(9): 0917009. |
[9] |
潘军. 一种基于双目摄像机标定的模型问题研究[硕士学位论文]. 长沙: 湖南大学, 2009.
|
[10] |
李小艳. 双目立体视觉系统的标定. 信息记录材料, 2019, 20(12): 112-113. DOI:10.16009/j.cnki.cn13-1295/tq.2019.12.070 |
[11] |
Zhou B, He Y. Fast circle detection using spatial decomposition of hough transform. International Journal of Pattern Recognition and Artificial Intelligence, 2017, 31(3): 1755006. DOI:10.1142/S0218001417550060 |
[12] |
孟德欣, 谢二莲. 基于Hough变换的汽车零件中圆形检测的改进算法. 计算机工程与应用, 2015, 51(11): 172-174, 211. DOI:10.3778/j.issn.1002-8331.1307-0380 |
[13] |
秦开怀, 王海颍, 郑辑涛. 一种基于Hough变换的圆和矩形的快速检测方法. 中国图象图形学报, 2010, 15(1): 109-115. DOI:10.11834/jig.20100118 |
[14] |
黄永林, 叶玉堂, 陈镇龙, 等. 一种新的快速Hough变换圆检测方法. 电子测量与仪器学报, 2010, 24(9): 837-841. |
[15] |
杨靖, 王茂森, 戴劲松. 基于立体视觉的3维模型重建. 兵工自动化, 2020, 39(3): 71-76. |