一种基于手机视频的物体长度测量方法

文档序号:27402163发布日期:2021-11-15 23:33阅读:399来源:国知局
一种基于手机视频的物体长度测量方法

1.本发明属于计算机视觉和图像处理方法技术领域,涉及一种基于手机视频的物体长度测量方法。


背景技术:

2.物体的长度测量贯穿于人们的生活之中。传统的测量方式是人工采用软尺、刻度尺等标准辅助工具进行测量,不仅效率低下,而且需要大量的人工成本。在生产和生活朝着智能化发展的趋势下,传统的测量方法早已不能满足人们生产和生活的需求。随着计算机技术的不断革新,计算机辅助的物体测量方法逐渐发展起来。虽然目前有各种测量设备,但是基于相机的机器视觉测量方法由于其简易性和方便性受到人们的青睐。
3.基于相机的机器视觉测量方法从数据获取上可分为基于单图像的测量方法和基于多图像的测量方法。但是基于单图像的测量方法测量精度相对较低,基于多图像的测量需要不断变换相机的位置来获取不同视角的数据,实际操作相对困难。因此,实现一种操作过程简单灵活、满足多幅图像在测量精度方面优势的目标物体长度测量方法仍然是十分必要且具有挑战性的。


技术实现要素:

4.本发明的目的是提供一种基于手机视频的物体长度测量方法,解决了现有技术中存在的测量精度相对较低的问题。
5.本发明所采用的技术方案是,一种基于手机视频的物体长度测量方法,具体按照如下步骤实施:
6.步骤1,通过手机相机采集视频数据,并对视频数据进行预处理;
7.步骤2,基于视觉坐标系统之间的转换关系来求解手机相机的内参数;
8.步骤3,在计算机中保存一张包含目标物体和参照物的参考图像,对步骤1中手机相机采集的视频数据进行特征点提取,之后将视频的每一帧与参考图像进行特征点匹配得到匹配点对;
9.步骤4,在获取到经步骤3产生的匹配点对的前提下,计算出参考图像和视频帧的单应性矩阵,根据单应性矩阵更新参照物顶点在每一帧图像中的坐标并估计参照物的边框,通过参照物的边框推导出相机位姿,根据相机位姿得到相机到参照物表面的距离;
10.步骤5,获取到视频初始帧中的目标物体像素大小,结合相机焦距、步骤3中参照物与相机间距离和步骤5获取的物体像素大小计算出目标物体的真实长度。
11.本发明的特征还在于,
12.步骤1中采集视频时,在手机移动过程中采集视频数据且手机在空间中水平匀速运动;
13.步骤1中对视频进行预处理具体为:
14.对采集的视频数据进行双边滤波去噪,然后采用canny算子来获取视频各帧的边
缘信息。
15.步骤2具体为:
16.步骤2.1,将6
×
8的棋盘格图像布满整个电脑屏幕,将电脑屏幕作为标定板,其中,每个小格的长度为37mm;
17.步骤2.2,使用手机相机在电脑屏幕的上、下、左、右、左上、左下、右上、右下、正前9个方位拍摄20张棋盘格图像;
18.步骤2.3,将步骤2.2中拍摄的20张棋盘格图像保存到指定目录下;
19.步骤2.4,对步骤2.3得到的20张棋盘格图像进行降采样,调用 findchessboardcorners()函数进行初始化角点提取;
20.步骤2.5,在步骤2.4初步提取角点之上进一步使用cornersubpix()函数提取亚像素信息,降低相机标定偏差,再调用drawchessboardcorners()函数将角点用不同颜色绘制到棋盘格图像上并保存图像;
21.步骤2.6,初始化标定板上的三维坐标,使用calibratecamera函数()进行相机标定,得到相机参数;
22.步骤2.7,根据步骤2.6得到的相机参数对角点进行重新投影计算,得到角点在步骤2.3保存的棋盘格图像上新的投影点坐标,计算投影坐标和步骤 2.5中亚像素提取之后的角点坐标之间的偏差对获得的相机参数进行评估,并删除偏差大于设定的阈值的图像;
23.步骤2.8,重新按照步骤2.4

2.6计算相机参数,之后返回步骤2.7对相机参数进行重新评估,直到没有图像再被删除为止;
24.步骤2.9,将标定结果写入到txt文件中。
25.步骤3具体为:
26.步骤3.1,在计算机中保存一张包含目标物体和参照物的参考图像,对步骤1中手机相机采集的视频数据和保存的参考图像采用surf算子进行特征点提取;
27.步骤3.2,将步骤3.1中特征点提取之后的视频的每一帧与参考图像采用 knn算法完成初始特征匹配,得到匹配点对;
28.步骤3.3,根据步骤3.2得到的匹配点对连接线长度和斜率相等的几何特征构建最佳几何约束,完成初始匹配优化;
29.步骤3.4,用ransac算法对步骤3.3的优化结果进行二次优化,获得最终匹配结果。
30.步骤3.2具体为:
31.步骤3.2.1,步骤3.1得到的每个特征点利用k近邻查找法找到k个与其邻近的点,k=2;
32.步骤3.2.2,设置阈值,若最近邻点和次近邻点的距离的比小于阈值,则将最近邻的点作为匹配点,最终得到步骤1中手机相机采集的视频数据和步骤3.1中保存的参考图像的匹配点对。
33.步骤3.3具体为:
34.步骤3.3.1,在计算机中初始化存储步骤3.2得到的匹配点对连接线的集合,设连接线的长度的集合为map_d,连接线的斜率集合为map_k;
35.步骤3.3.2,统计每对匹配点对连接线的长度d
i
,斜率k
i
,将长度d
i
作为map_d的键key,map_d的value为匹配线是该长度的条数,map_k的键key为每条匹配线的斜率k
i
,map_k
的value为匹配线是该斜率的条数,其中,每对匹配点中的两个点p
1i
(x
i
,y
i
)和p
2j
(x
j
,y
j
)的距离d
i
的计算公式如下:
[0036][0037]
两点p
1i
(x
i
,y
i
)和p
2j
(x
j
,y
j
)确定的直线斜率k
i
的计算公式如下:
[0038][0039]
步骤3.3.3,求map_d中value最大的key作为长度的基准,设为d,求 map_k中value最大的key作为斜率的基准,设为k,当d

m≤d
i
≤d+m或者k

n≤k
i
≤k+n时,保留该匹配点对连接线,否则删除,其中,m为匹配线长度的误差,n为匹配线斜率的误差,m=15,n=0.03;
[0040]
步骤3.4具体为:
[0041]
步骤3.4.1,初始化投影误差的阈值λ,内点集合i,最优内点集合 i_best,迭代次数k;
[0042]
步骤3.4.2,从经过步骤3.3.3得到的剩余连接线对应的匹配点对中随机抽取4个不共线的样本数据;
[0043]
步骤3.4.3,根据样本数据计算变换矩阵,记作m,具体为:
[0044]
根据公式:
[0045][0046]
其中,(x,y)和(x',y')是步骤3.4.2中样本数据中一对匹配点坐标,s为尺度参数,计算变换矩阵并记作m;
[0047]
步骤3.4.4,计算步骤3.3.3得到的剩余匹配点集中所有数据与m的投影误差δ
i
,计算投影误差δ
i
的公式如下:
[0048][0049]
如果δ
i
<λ,将该数据加入到内点集合i中;
[0050]
步骤3.4.5,重复步骤3.4.2

3.4.4,找到存在最大元素个数的内点集合,并把该内点集合存入i_best,同时更新迭代次数k;
[0051]
步骤3.4.6,若迭代次数k大于最大迭代次数,则最终i_best中的匹配点对即为优化后的匹配点对。
[0052]
步骤4具体为:
[0053]
步骤4.1,根据步骤3获得的特征匹配点对,计算出参考图像和视频帧的单应性矩阵;
[0054]
步骤4.2,根据步骤4.1得到的单应性矩阵更新参照物顶点在每一帧图像中的坐标并估计参照物的边框;
[0055]
步骤4.3,根据参照物的边框推导出相机位姿,根据相机位姿得到相机到参照物表面的距离。
[0056]
步骤4.1具体为:
[0057]
步骤4.1.1,设参考图像中的某个像点为p1(x1,y1),视频中某一帧图像的像点p2(x2,y2)是p1(x1,y1)的匹配点,单应性矩阵为h通过下式建立两个像点间的关系:
[0058][0059]
步骤4.1.2,将矩阵乘法展开,可得下式:
[0060][0061]
步骤4.1.3,将步骤4.1.2中公式(6)转化为两个公式,如下所示:
[0062][0063]
将上面公式(7)变换为a
x
=0的形式,如下所示:
[0064][0065]
步骤4.1.4,将步骤3.1.3中公式(8)改写为向量积的形式,由于单应性矩阵是齐次的,令h=(h
11
,h
12
,h
13
,h
21
,h
22
,h
23
,h
31
,h
32
,1)
t
,因此公式(8) 改写为:
[0066][0067]
其中,a
x
=(x1,y1,1,0,0,0,

x2x1,

x2y1,

x2)
t a
y
=(0,0,0,x1,y1,1,

x1y2,

y1y2,

y2)
t
,设有n对匹配点对,则得到ah=0,求出h,再根据h=(h
11
,h
12
,h
13
,h
21
,h
22
,h
23
,h
31
,h
32
,1)
t
得到单应性矩阵 h。
[0068]
步骤4.2具体为:
[0069]
步骤4.2.1,获取步骤3.4.6得到的参考图像和第i帧图像对应的匹配点对,分别保存在集合src_pts和集合dst_pts中;
[0070]
步骤4.2.2,根据匹配点按照步骤4.1的方法得到其对应的单应矩阵m
i

[0071]
步骤4.2.3,计算参考图像中参照物的顶点坐标,即参照物的左上角顶点、右上角顶点、右下角顶点、左下角顶点,并保存到集合pts中;
[0072]
步骤4.2.4,利用步骤4.1.1中公式(5)通过步骤3.4.3得到的单应矩阵m
i
计算集合pts中参照物的顶点在视频第i帧图像中的坐标,记为a
i
、b
i
、c
i
、 d
i
,分别是视频第i帧图像
中参照物的左上角顶点、右上角顶点、右下角顶点、左下角顶点,并保存在集合dst中;
[0073]
步骤4.2.5,依次连接a
i
、b
i
、c
i
、d
i
得到第i帧图的边框图像,并将完成边框绘制的第i帧图像添加到集合found_list中;
[0074]
步骤4.2.6,重复步骤4.2.1

4.2.5得到所有匹配点对对应的边框图像,将集合found_list中的图像合成完整的视频,保存视频,得到参照物的边框。
[0075]
步骤4.3具体为:
[0076]
步骤4.3.1,相机线性模型表示为:
[0077]
p
c
=rp
w
+t
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(10)
[0078]
其中,p
c
、p
w
分别指同一空间点在相机坐标系和世界坐标系下的坐标,t为平移向量,r为旋转矩阵;
[0079]
相机的内参矩阵k表示为:
[0080][0081]
其中,f为相机焦距,α为像素比例因子;
[0082]
步骤4.3.2,将世界坐标系o
w

x
w
y
w
z
w
建立在平面上,则p
a
、p
b
、p
c
、 p
d
四个点在o
w

x
w
y
w
z
w
中的坐标为p
a
(x
a
,y
a
,0)、p
b
(x
b
,y
b
,0)、p
c
(x
c
,y
c
,0) 和p
d
(x
d
,y
d
,0),则相机坐标系中的对应的点p
a
'、p
b
'、p
c
'、p
d
'表示为:
[0083]
p
i
'=rp
i
+t=(r
1 r
2 r3)p
i
+t
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(12)
[0084]
其中,p
i
'为相机坐标系下的对应的点,i为a或b或c或d,p
i
为世界坐标系下的点,r1,r2,r3分别为旋转矩阵r的3个列向量,t为平移向量;
[0085]
步骤4.3.3,用相机坐标系中的点表示图像坐标系中的点,如下:
[0086][0087]
其中s
i
为常数因子,(u
i
,v
i
)为点p
i
'在图像坐标系中的坐标,由公式(11)、公式(12)和公式(13)得下式:
[0088][0089]
其中x
i
和y
i
分别为p
a
、p
b
、p
c
、p
d
四个点在o
w

x
w
y
w
z
w
中的坐标 p
a
(x
a
,y
a
,0)、p
b
(x
b
,y
b
,0)、p
c
(x
c
,y
c
,0)和p
d
(x
d
,y
d
,0)中x
a
,y
a
,x
b
,y
b
,x
c
,y
c
,x
d
和y
d

[0090]
步骤4.3.4,利用单应性矩阵描述两幅图像中对应像点的关系,得到:
[0091]
[0092]
由公式(14)、公式(15)得到:
[0093][0094]
由公式(16)得到:
[0095][0096]
由于r
1t
r2=0,且|r1|=|r2|=1,可得到:
[0097][0098]
通过公式(18)确定f和α,将f和α代入公式(17)可以求出r1,r2和t,通过r3=r1×
r2求出r3,从而得到了旋转矩阵r和平移向量t;
[0099]
步骤4.3.5,通过旋转矩阵r和平移向量t表示相机位姿 came_rpaosit:
[0100]
camera_position=

r
t
×
t
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(19)
[0101]
从而求出了相机在世界坐标系中的坐标camera_position,其中, camera_position中的z轴坐标即为相机到参照物表面的垂直距离。
[0102]
步骤5具体为:
[0103]
步骤5.1,获取到视频初始帧中的目标物体像素大小,具体为:
[0104]
步骤5.1.1,读取包含参照物和待测物体的视频的第一帧;
[0105]
步骤5.1.2,根据medianflow追踪器手动选择包含目标物体的矩形窗口,返回数组{x,y,w,h},其中,x为窗口最小的x值,y为窗口最小的y 值,w为窗口的宽,h为窗口的高;
[0106]
步骤5.1.3,用第一帧图像和步骤5.1.2中矩形窗口初始化跟踪器;
[0107]
步骤5.1.4,读取下一帧,重复步骤5.1.2

5.1.4,更新追踪器,返回新窗口数组{x
i
,y
i
,w
i
,h
i
}直到视频没有下一帧;
[0108]
步骤5.1.5,如果追踪器成功追踪到目标物体,更新新窗口的左上角坐标 p1(x
i
,y
i
)和右上角坐标p2(x
i
+w
i
,y
i
+h
i
);
[0109]
步骤5.1.6,根据p1、p2的坐标绘制矩形框,保存并打印第i帧图像窗口的宽w
i
和高h
i

[0110]
步骤5.2,根据小孔成像模型中的相似三角形关系,结合相机焦距、步骤4中参照物与相机间距离和步骤5.1获取的物体像素大小计算出目标物体的真实长度。
[0111]
步骤5.2具体为:
[0112]
步骤5.2.1,据小孔成像模型中的物和像的相似三角形关系,设l为目标物体的长
度,h为目标物体的像素长度,f为相机焦距,d为相机到物体的距离,则:
[0113][0114]
得到:
[0115][0116]
即得到了目标物体的长度l。
[0117]
本发明的有益效果是:
[0118]
本发明首先选择了双边滤波算法实现了本文视频帧的去噪效果,提高了图像质量,基于canny算子确保了目标物体能够被准确地定位和测量,并估计了相机内参;然后选择了特征点质量较高且数量较多的surf算法和knn 算法实现了特征点的初始匹配,并采用最佳几何约束和ransac算法完成了精细化匹配,很大程度上保证了特征点匹配的质量;接着计算单应性矩阵,根据单应性矩阵更新参照物顶点在视频各帧中的二维坐标,同时估计参照物边框,计算参照物与相机间的距离,能为物体长度测量提供很好的数据支撑;最后基于小孔成像模型的相似三角形关系,通过目标跟踪计算出目标物体的真实长度,能够基本满足非精密的日常测量任务。本发明的目标物体长度测量工作,不仅基本能够满足日常的测量需求,并且在有效性,稳定性和准确性上都有了很大的提高,拥有较好的鲁棒性,丰富了计算机图形学和视觉智能的方法体系。
附图说明
[0119]
图1是本发明一种基于手机视频的物体长度测量方法实施例的步骤1中某个视频数据的第一帧图像;
[0120]
图2是本发明一种基于手机视频的物体长度测量方法实施例的步骤1中得到的双边滤波结果;
[0121]
图3是本发明一种基于手机视频的物体长度测量方法实施例的步骤1中采用canny算子得到的边缘检测结果;
[0122]
图4是本发明一种基于手机视频的物体长度测量方法实施例的步骤2中选取的棋盘格图像;
[0123]
图5是本发明一种基于手机视频的物体长度测量方法实施例的步骤3中得到的surf特征点提取结果;
[0124]
图6是本发明一种基于手机视频的物体长度测量方法实施例的步骤3中得到的knn特征匹配结果;
[0125]
图7是本发明一种基于手机视频的物体长度测量方法实施例的步骤3中得到的采用ransac匹配优化结果;
[0126]
图8是本发明一种基于手机视频的物体长度测量方法实施例的步骤4中得到的参照物的边框估计结果;
[0127]
图9是本发明一种基于手机视频的物体长度测量方法实施例的步骤5中获得的medianflow目标跟踪算法结果;
[0128]
图10是本发明一种基于手机视频的物体长度测量方法实施例的步骤5 中对目标物体长度的测量结果。
具体实施方式
[0129]
下面结合附图和具体实施方式对本发明进行详细说明。
[0130]
本发明一种基于手机视频的物体长度测量方法,具体按照如下步骤实施:
[0131]
步骤1,通过手机相机采集视频数据,并对视频数据进行预处理,采集视频时,在手机移动过程中采集视频数据且手机在空间中水平匀速运动,如图1所示,对视频进行预处理具体为:对采集的视频数据进行双边滤波去噪,然后采用canny算子来获取视频各帧的边缘信息;本发明比较了高斯滤波、均值滤波、中值滤波、双边滤波四种滤波方法,根据四种滤波方法在输入数据中的去噪效果,选择效果最好的双边滤波算法实现对图像的去噪处理,去噪效果如图2所示;用canny算子来获取视频各帧的边缘信息如图3所示;
[0132]
步骤2,基于视觉坐标系统之间的转换关系来求解手机相机的内参数;具体为:
[0133]
步骤2.1,将6
×
8的棋盘格图像布满整个电脑屏幕,将电脑屏幕作为标定板,其中,每个小格的长度为37mm;
[0134]
步骤2.2,使用手机相机在电脑屏幕的上、下、左、右、左上、左下、右上、右下、正前9个方位拍摄20张棋盘格图像;
[0135]
步骤2.3,将步骤2.2中拍摄的20张棋盘格图像保存到指定目录下;
[0136]
步骤2.4,对步骤2.3得到的20张棋盘格图像进行降采样,调用findchessboardcorners()函数进行初始化角点提取;
[0137]
步骤2.5,在步骤2.4初步提取角点之上进一步使用cornersubpix()函数提取亚像素信息,降低相机标定偏差,再调用drawchessboardcorners()函数将角点用不同颜色绘制到棋盘格图像上并保存图像;
[0138]
步骤2.6,初始化标定板上的三维坐标,使用calibratecamera函数()进行相机标定,得到相机参数;
[0139]
步骤2.7,根据步骤2.6得到的相机参数对角点进行重新投影计算,得到角点在步骤2.3保存的棋盘格图像上新的投影点坐标,计算投影坐标和步骤 2.5中亚像素提取之后的角点坐标之间的偏差对获得的相机参数进行评估,并删除偏差大于设定的阈值的图像;
[0140]
步骤2.8,重新按照步骤2.4

2.6计算相机参数,之后返回步骤2.7对相机参数进行重新评估,直到没有图像再被删除为止;
[0141]
步骤2.9,将标定结果写入到txt文件中;
[0142]
本发明通过实验对比了几种特征点提取算法的优缺点,然后基于步骤1 中的输入数据的特点采用surf算法进行特征点提取,接着采用bf算法和knn算法完成初始匹配,构建最佳几何约束粗略地完成匹配优化,接着使用ransac算法二次优化以获得高质量的匹配结果,具体如下:
[0143]
步骤3,在计算机中保存一张包含目标物体和参照物的参考图像,对步骤1中手机相机采集的视频数据进行特征点提取,之后将视频的每一帧与参考图像进行特征点匹配得到匹配点对;具体为:
[0144]
步骤3.1,在计算机中保存一张包含目标物体和参照物的参考图像,对步骤1中手
机相机采集的视频数据和保存的参考图像采用surf算子进行特征点提取,如图5所示;
[0145]
步骤3.2,将步骤3.1中特征点提取之后的视频的每一帧与参考图像采用 knn算法完成初始特征匹配,得到匹配点对,匹配结果如图6所示,具体为:
[0146]
步骤3.2.1,步骤3.1得到的每个特征点利用k近邻查找法找到k个与其邻近的点,k=2;
[0147]
步骤3.2.2,设置阈值,若最近邻点和次近邻点的距离的比小于阈值,则将最近邻的点作为匹配点,最终得到步骤1中手机相机采集的视频数据和步骤3.1中保存的参考图像的匹配点对;
[0148]
步骤3.3,根据步骤3.2得到的匹配点对连接线长度和斜率相等的几何特征构建最佳几何约束,完成初始匹配优化;具体为:
[0149]
步骤3.3.1,在计算机中初始化存储步骤3.2得到的匹配点对连接线的集合,设连接线的长度的集合为map_d,连接线的斜率集合为map_k;
[0150]
步骤3.3.2,统计每对匹配点对连接线的长度d
i
,斜率k
i
,将长度d
i
作为map_d的键key,map_d的value为匹配线是该长度的条数,map_k的键key为每条匹配线的斜率k
i
,map_k的value为匹配线是该斜率的条数,其中,每对匹配点中的两个点p
1i
(x
i
,y
i
)和p
2j
(x
j
,y
j
)的距离d
i
的计算公式如下:
[0151][0152]
两点p
1i
(x
i
,y
i
)和p
2j
(x
j
,y
j
)确定的直线斜率k
i
的计算公式如下:
[0153][0154]
步骤3.3.3,求map_d中value最大的key作为长度的基准,设为d,求 map_k中value最大的key作为斜率的基准,设为k,当d

m≤d
i
≤d+m或者k

n≤k
i
≤k+n时,保留该匹配点对连接线,否则删除,其中,m为匹配线长度的误差,n为匹配线斜率的误差,m=15,n=0.03;
[0155]
步骤3.4,用ransac算法对步骤3.3的优化结果进行二次优化,获得最终匹配结果;具体为:
[0156]
步骤3.4.1,初始化投影误差的阈值λ,内点集合i,最优内点集合 i_best,迭代次数k;
[0157]
步骤3.4.2,从经过步骤3.3.3得到的剩余连接线对应的匹配点对中随机抽取4个不共线的样本数据;
[0158]
步骤3.4.3,根据样本数据计算变换矩阵,记作m,具体为:
[0159]
根据公式:
[0160][0161]
其中,(x,y)和(x',y')是步骤3.4.2中样本数据中一对匹配点坐标,s为尺度参数,
计算变换矩阵并记作m;
[0162]
步骤3.4.4,计算步骤3.3.3得到的剩余匹配点集中所有数据与m的投影误差δ
i
,计算投影误差δ
i
的公式如下:
[0163][0164]
如果δ
i
<λ,将该数据加入到内点集合i中;
[0165]
步骤3.4.5,重复步骤3.4.2

3.4.4,找到存在最大元素个数的内点集合,并把该内点集合存入i_best,同时更新迭代次数k;
[0166]
步骤3.4.6,若迭代次数k大于最大迭代次数,则最终i_best中的匹配点对即为优化后的匹配点对,如图7所示;
[0167]
步骤4,在获取到经步骤3产生的匹配点对的前提下,计算出参考图像和视频帧的单应性矩阵,根据单应性矩阵更新参照物顶点在每一帧图像中的坐标并估计参照物的边框,通过参照物的边框推导出相机位姿,根据相机位姿得到相机到参照物表面的距离,具体为:
[0168]
步骤4.1,根据步骤3获得的特征匹配点对,计算出参考图像和视频帧的单应性矩阵;具体为:
[0169]
步骤4.1.1,设参考图像中的某个像点为p1(x1,y1),视频中某一帧图像的像点p2(x2,y2)是p1(x1,y1)的匹配点,单应性矩阵为h通过下式建立两个像点间的关系:
[0170][0171]
步骤4.1.2,将矩阵乘法展开,可得下式:
[0172][0173]
步骤4.1.3,将步骤4.1.2中公式(6)转化为两个公式,如下所示:
[0174][0175]
将上面公式(7)变换为a
x
=0的形式,如下所示:
[0176][0177]
步骤4.1.4,将步骤3.1.3中公式(8)改写为向量积的形式,由于单应性矩阵是齐次的,令h=(h
11
,h
12
,h
13
,h
21
,h
22
,h
23
,h
31
,h
32
,1)
t
,因此公式(8) 改写为:
[0178][0179]
其中,a
x
=(x1,y1,1,0,0,0,

x2x1,

x2y1,

x2)
t a
y
=(0,0,0,x1,y1,1,

x1y2,

y1y2,

y2)
t
,设有n对匹配点对,则得到ah=0,求出h,再根据h=(h
11
,h
12
,h
13
,h
21
,h
22
,h
23
,h
31
,h
32
,1)
t
得到单应性矩阵 h。
[0180]
步骤4.2,根据步骤4.1得到的单应性矩阵更新参照物顶点在每一帧图像中的坐标并估计参照物的边框;具体为:
[0181]
步骤4.2.1,获取步骤3.4.6得到的参考图像和第i帧图像对应的匹配点对,分别保存在集合src_pts和集合dst_pts中;
[0182]
步骤4.2.2,根据匹配点按照步骤4.1的方法得到其对应的单应矩阵m
i

[0183]
步骤4.2.3,计算参考图像中参照物的顶点坐标,即参照物的左上角顶点、右上角顶点、右下角顶点、左下角顶点,并保存到集合pts中;
[0184]
步骤4.2.4,利用步骤4.1.1中公式(5)通过步骤3.4.3得到的单应矩阵m
i
计算集合pts中参照物的顶点在视频第i帧图像中的坐标,记为a
i
、b
i
、c
i
、d
i
,分别是视频第i帧图像中参照物的左上角顶点、右上角顶点、右下角顶点、左下角顶点,并保存在集合dst中;
[0185]
步骤4.2.5,依次连接a
i
、b
i
、c
i
、d
i
得到第i帧图的边框图像,并将完成边框绘制的第i帧图像添加到集合found_list中;
[0186]
步骤4.2.6,重复步骤4.2.1

4.2.5得到所有匹配点对对应的边框图像,将集合found_list中的图像合成完整的视频,保存视频,得到参照物的边框,如图8所示。
[0187]
步骤4.3,根据参照物的边框推导出相机位姿,根据相机位姿得到相机到参照物表面的距离;具体为:
[0188]
步骤4.3.1,相机线性模型表示为:
[0189]
p
c
=rp
w
+t
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(10)
[0190]
其中,p
c
、p
w
分别指同一空间点在相机坐标系和世界坐标系下的坐标, t为平移向量,r为旋转矩阵;
[0191]
相机的内参矩阵k表示为:
[0192][0193]
其中,f为相机焦距,α为像素比例因子;
[0194]
步骤4.3.2,将世界坐标系o
w

x
w
y
w
z
w
建立在平面上,则p
a
、p
b
、p
c
、 p
d
四个点在o
w

x
w
y
w
z
w
中的坐标为p
a
(x
a
,y
a
,0)、p
b
(x
b
,y
b
,0)、p
c
(x
c
,y
c
,0) 和p
d
(x
d
,y
d
,0),则相机坐标系中的对应的点p
a
'、p
b
'、p
c
'、p
d
'表示为:
[0195]
p
i
'=rp
i
+t=(r
1 r
2 r3)p
i
+t
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(12)
[0196]
其中,p
i
'为相机坐标系下的对应的点,i为a或b或c或d,p
i
为世界坐标系下的点,r1,r2,r3分别为旋转矩阵r的3个列向量,t为平移向量;
[0197]
步骤4.3.3,用相机坐标系中的点表示图像坐标系中的点,如下:
[0198][0199]
其中s
i
为常数因子,(u
i
,v
i
)为点p
i
'在图像坐标系中的坐标,由公式(11)、公式(12)和公式(13)得下式:
[0200][0201]
其中x
i
和y
i
分别为p
a
、p
b
、p
c
、p
d
四个点在o
w

x
w
y
w
z
w
中的坐标 p
a
(x
a
,y
a
,0)、p
b
(x
b
,y
b
,0)、p
c
(x
c
,y
c
,0)和p
d
(x
d
,y
d
,0)中x
a
,y
a
,x
b
,y
b
, x
c
,y
c
,x
d
和y
d

[0202]
步骤4.3.4,利用单应性矩阵描述两幅图像中对应像点的关系,得到:
[0203][0204]
由公式(14)、公式(15)得到:
[0205][0206]
由公式(16)得到:
[0207][0208]
由于r
1t
r2=0,且|r1|=|r2|=1,可得到:
[0209][0210]
通过公式(18)确定f和α,将f和α代入公式(17)可以求出r1,r2和t,通过r3=r1×
r2求出r3,从而得到了旋转矩阵r和平移向量t;
[0211]
步骤4.3.5,通过旋转矩阵r和平移向量t表示相机位姿 came_rpaosit:
[0212]
camera_position=

r
t
×
t
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(19)
[0213]
从而求出了相机在世界坐标系中的坐标camera_position,其中, camera_
position中的z轴坐标即为相机到参照物表面的垂直距离。
[0214]
步骤5,获取到视频初始帧中的目标物体像素大小,结合相机焦距、步骤3中参照物与相机间距离和步骤5获取的物体像素大小计算出目标物体的真实长度,具体为:
[0215]
步骤5.1,获取到视频初始帧中的目标物体像素大小,具体为:
[0216]
步骤5.1.1,读取包含参照物和待测物体的视频的第一帧;
[0217]
步骤5.1.2,根据medianflow追踪器手动选择包含目标物体的矩形窗口,返回数组{x,y,w,h},其中,x为窗口最小的x值,y为窗口最小的y 值,w为窗口的宽,h为窗口的高;
[0218]
步骤5.1.3,用第一帧图像和步骤5.1.2中矩形窗口初始化跟踪器;
[0219]
步骤5.1.4,读取下一帧,重复步骤5.1.2

5.1.4,更新追踪器,返回新窗口数组{x
i
,y
i
,w
i
,h
i
},直到视频没有下一帧;
[0220]
步骤5.1.5,如果追踪器成功追踪到目标物体,更新新窗口的左上角坐标 p1(x
i
,y
i
)和右上角坐标p2(x
i
+w
i
,y
i
+h
i
);
[0221]
步骤5.1.6,根据p1、p2的坐标绘制矩形框,保存并打印第i帧图像窗口的宽w
i
和高h
i
,如图9所示;
[0222]
步骤5.2,根据小孔成像模型中的相似三角形关系,结合相机焦距、步骤4中参照物与相机间距离和步骤5.1获取的物体像素大小计算出目标物体的真实长度。
[0223]
步骤5.2具体为:
[0224]
步骤5.2.1,据小孔成像模型中的物和像的相似三角形关系,设l为目标物体的长度,h为目标物体的像素长度,f为相机焦距,d为相机到物体的距离,则:
[0225][0226]
得到:
[0227][0228]
即得到了目标物体的长度l,如图10所示。
[0229]
步骤2中最终得到的相机的内参如表1所示:
[0230]
表1相机内部参数
[0231][0232]
步骤3中,为了验证本发明的特征匹配算法是可靠的,将本文算法与经典算法lowe的算法进行对比:
[0233]
表2特征匹配实验结果
[0234][0235]
由表2可知,本发明的特征匹配算法在误匹配的剔除上和获取到的匹配点对数量上都优于lowe的算法,效率方面与lowe的算法无较大差别,从而验证了本发明的特征匹配算法在特征匹配优化上的有效性。
[0236]
步骤4中得到的参照物与相机间的距离如表3所示:
[0237]
表3参照物与相机间距离测量结果
[0238][0239]
由表3可知本发明估计的相机与参照物所在平面的距离存在一定的误差,但是总体误差仍旧在比较低的范围内,误差是不可避免的。
[0240]
步骤5中所获得的目标物体的宽为93.1876035453mm,目标物体的高为 91.5762905157mm,目标物体的长度为119.237164191mm。
[0241]
为验证通过视频数据实现目标物体长度测量的有效性,还进行了三组实验。实验一是同一参照物下多个距离的长度估算实验,验证了相机与目标物体的距离不同时,不会对目标物体长度测量结果造成影响。实验二是同一距离下不同参照物的长度估算实验,验证了参照物种类的不同不会对目标物体长度测量结果造成影响。实验三是将本发明物体长度测量算法估算出的结果与其他方法测得的长度进行对比,验证本发明方法在日常长度测量应用中的价值。
[0242]
表4不同距离下目标物体长度测量结果
[0243][0244]
平均误差为0.684cm,可见本发明方法基本能够达到物体测量的目标。
[0245]
表5不同参照物下目标物体长度测量结果
[0246][0247]
平均误差为0.535cm,证明了本方明方法在长度测量上是行之有效的,能够满足日常的测量需求。
[0248]
表6实验结果对比
[0249][0250]
表7误差对比
[0251][0252]
由表6和表7可知,本发明方法产生的误差略小于“测距仪”产生的误差,略大于“ar尺子”产生的误差。“测距仪”和“ar尺子”两种手机测距软件虽然精度很高,但是在测量时需要先识别平面后方可测量,而本发明方法在此方面并无限制。除此之外,“ar尺子”在测量时极易受到手部抖动的影响而产生非常大的误差,如测量次数过少,很难得到精确的结果。并且手机测距软件需要软件和陀螺仪、加速器等手机硬件设备的相互配合,无法扩展到其他相机,而本发明方法并不受限。因此,本发明发明更具优势,能够更好地满足日常测量需求。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1