华东理工大学 李承泽 毛丹程 叶秉华 谢思远
在相机标定中,人物目标定位是相当重要的应用领域。人物识别的准确性与快速性决定了系统的可靠性。本实验使用单目相机,基于MATLAB软件对所拍摄的照片进行标定,并获得镜头参数。进而配合Yolo v3图像识别技术,对图片中的人物进行识别而后获取相应的目标定位。实验结果表明,本实验设计能取得良好的人物目标识别并定位的结果。
三维世界的物体标定在当今的生活中起到的作用越来越明显,在实际运用中,精准快速地识别一片区域内的人数,统计瞬时人流作为参考数据,也可以协助分散大量人流,避免人员的大量聚集带来的危险。监控设备也可以通过该技术来自动提示敏感区域的人员出入信息,保护用户自身的利益安全。精确,快速的识别与定位是人们所一直追求的,而基于不同算法的标定,三维识别本领各有千秋。本实验使用单目相机来获得三维世界目标,以MATLAB及Yolo v3作为工具。在三维物体转换为二维图像时,相机自身引起的相机畸变会引来图像失真,影响识别精确度。本实验使用MATLAB的相机标定功能技术成熟,其采用的张正友方法精度高,公式理论成熟,且通过MATLAB操作便捷。而在图像识别技术上,通过Yolo v3识别物体轮廓,找到二维图像中的物体坐标,最后使用张正友方法的反向思维,实现物体的三维定位。使用工具便捷,步骤简洁,趣味性强,适合相机标定初学者。
该方法是张正友教授于1998年提出的单平面棋盘格的相机标定方法。传统的标定方法虽然标定精度较高,可用于任意的摄像机模型,但是标定的过程复杂,需要高精度的已知结构信息。张正友方法是介于传统标定方法与自标定方法之间的一种简易标定方法,该方法根据位于同一平面上的特征点可以建立起关于相机内部参数的两个方程这一特点,提出了通过不同位置和方向的几个平面来求解相机的内参矩阵,然后再计算相机的外参矩阵。这种标定方法不需要昂贵的标定材料,只需要一张打印出来的棋盘格,因此成本较为低廉,同时也具备良好的鲁棒性,是一种灵活而又简便的相机标定方法。
相机标定主要用于进行像素坐标到三维世界坐标的转换。在本次实验中,主要通过两个步骤进行,第一步,是像素坐标到标定板坐标的转换,第二步,是标定板坐标到世界坐标的转换。
其转换公式如下:
Step1:像素坐标转换为标定板坐标
关于扭转因子的求解:
在像素坐标到世界坐标的过程中根据公式(1),并且在获得了图片中相关已知的点坐标之后可以求得。
Step2:将求得的标定板坐标转换为未知的世界坐标
图1 标定板图片
本小节主要对相机标定的过程进行详细介绍,主要包括相机标定所需的准备工作以及相关参数的计算,如相机内参、外参,以及通过yolov3进行人像识别进而获取其坐标的过程。
对实验所用到的摄像机进行标定,则首先需要求解该摄像机的内参,此过程中,本文基于matlab自带工具栏中的“camera calibrator”平台对所拍得的一系列标定板照片进行标定。
所用到的标定板图片如图1所示,本文用A3尺寸的纸张打印,得到格子边长为5.88cm的标定板。而后将纸张平放在桌面,使用实验所用摄像机对标定板从多个角度进行拍照,将所得的20张相片导入到上述应用软件中,点击“calibrate”按钮后进行相机标定,在运行后可以初步得到角点识别后的结果,如图2所示。其中对所有图片的识别都存在一个统一的识别起点,即坐标原点(Checkerboard Origin),因为实验中所用到的张氏标定法默认标定板在三维坐标中,因此只需要识别X和Y轴两个坐标方向,在成功识别角点之后,即可进行后续的计算。
图2 角点识别结果
摄像机标定后得到的内参如下所示:
接下来是对所需目标定位的照片进行外参的计算,外参的计算仍然是基于上述matlab平台进行。
目标定位首先需要进行目标识别,此过程是应用python+yolov3实现的对图片中的人物进行识别,其识别后的结果如图3(a)所示,根据人物外边框底边的两个点可以得到目标人物在图片中的像素坐标为(1320,3046)。识别后输出的像素坐标信息会在后续的目标定位中使用。在此图片中人为确定了世界坐标系原点(如图3(b)中蓝色点所示,水平方向为x轴,竖直方向为y轴),以便于后续对坐标的计算。
图3 人物识别及目标定位结果
在经过与内参计算相同的步骤之后可以得到旋转矩阵及平移向量,如表1所示。
表1 相机外参
至此,目标定位所需测量的参数均已获取,在后续将根据以上参数以及第二小节中的公式应用matlab进行相关计算。
将上一小节计算后得到像素坐标参数带入到公式(1)、(2)中,计算后得到相应的世界坐标结果,其示意图如图3(b)所示,蓝色点为定义的世界坐标系原点,红色点为识别后的定位结果。为了检测目标定位的准确性,本文后续在图2中取了几个不同的像素点进行检验,其定位结果以及定位误差如表2所示。其中定位误差为图像中检测点的实际三维坐标到定位坐标的欧氏距离(cm)。
表2 目标定位结果及误差分析
本章节主要通过yolov3对图片中的人物进行识别并且获得其坐标,结合相机标定的原理进行目标定位。此种标定方法可以实现初步的目标定位,但是通过比对标定坐标的结果与已知坐标可知,标定的结果存在一定误差,根据实验过程分析误差产生的原因:(1)在求解内参的过程中照片数量较少,可能在运算过程中存在一定误差。(2)人物识别存在一定误差,通过图2可以看到,人物识别的边框其实并不是严格与人物外边缘相切,所以在获取像素坐标时可能存在十几像素的误差,从而对后续计算产生影响。(3)因为在应用参数计算的过程中,存在有效数字的取舍,所以可能导致所取的计算参数与实际参数存在一定出入,导致误差出现。
但是分析计算结果与实际世界坐标的欧氏距离得出结论,可以在一定误差范围内,对图片中的目标人物进行三维定位。
后续的改进意见:
(1)可以采用精度更高、尺寸更大的标定板来使内外参等计算所需的参数更加接近真实值。
(2)对目标识别程序进行改进,使其可以输出更加精确的人物像素坐标。
(3)在试验场地增设坐标尺,从而减少因世界坐标系的测量误差对实验结果造成的影响。