重拾图形图像处理 ---- 笔试面试题:三维重建相关
Posted shiter
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重拾图形图像处理 ---- 笔试面试题:三维重建相关相关的知识,希望对你有一定的参考价值。
文章大纲
齐次坐标、点到直线距离
参考:https://zhuanlan.zhihu.com/p/26307123
直线的一般式:
A
x
+
B
y
+
C
=
0
(
A
、
B
不
同
时
为
0
)
【
适
用
于
所
有
直
线
】
Ax + By + C=0 (A、B不同时为0)【适用于所有直线】
Ax+By+C=0(A、B不同时为0)【适用于所有直线】
两垂直直线的斜率积为-1(如果斜率都存在的话):
k
1
×
k
2
=
−
1
k_1 \\times k_2 = -1
k1×k2=−1
可以推出点(x, y)到直线的距离公式:
d
=
∣
A
x
+
B
y
+
C
∣
A
2
+
B
2
d = \\frac|Ax+By+C|\\sqrtA^2+B^2
d=A2+B2∣Ax+By+C∣
给三角形三边求面积
参考:https://baike.baidu.com/item/%E4%B8%89%E8%A7%92%E5%BD%A2%E9%9D%A2%E7%A7%AF%E5%85%AC%E5%BC%8F/8491990
海伦公式,三角形三边分别为a, b, c,求面积S:
S
=
p
(
p
−
a
)
(
p
−
b
)
(
p
−
c
)
p
=
a
+
b
+
c
2
S = \\sqrtp(p-a)(p-b)(p-c) \\\\ p = \\fraca+b+c2
S=p(p−a)(p−b)(p−c)p=2a+b+c
顺便介绍下正弦定理和余弦定理:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uME1IlET-1650733176437)(.markdown.images/image-20200816152149006.png)]
简述SIFT特征点检测、描述和匹配的过程
**SIFT(Scale Invariant Feature Transform)**特征对旋转、尺度缩放、亮度变化等保持不变性,是非常稳定的局部特征。
SIFT的主要思路:a)构造图像的尺度空间表示,b)在尺度空间中搜索图像的极值点,c)由极值点建立特征描述向量,d)用特征描述向量进行相似度匹配。
检测:通过图像与DOG算子卷积得到一幅二维图像在不同尺度下的尺度空间表示(即DOG图像);然后通过每个像素点与其三维领域的临近点进行比较,找出DOG局部极值点作为初步的特征点;然后通过曲线拟合(临近信息插补)得到特征点的精确位置,同时也会舍弃那些不明显关键点和边缘响应;接下来利用特征点邻域像素的梯度分布来确定特征点的方向。每个特征点都包含三个信息(x,y,σ,θ)(x,y,σ,θ),即位置、尺度和方向。
描述:描述子将被用来作为目标匹配的依据,所以应具有较高的独特性以保证匹配率。特征描述大致包含三个步骤:1.旋转主方向,即将坐标轴旋转为关键点方向,以确保旋转不变性。2.然后在特征点对应的高斯图像上统计其16∗1616∗16邻域内的方向梯度,将统计向量作为该点的sift描述子。3.特征向量的常规归一化,进一步去除光照变化等影响。
匹配:RANSAC(RANdom SAmple Consensus)方法是当前常用的一种特征点对的匹配算法,在OpenCV中我们可以使用暴力匹配(BruteForceMatcher)和FLANN(Fast Library for Approximate Nearest Neighbors,快速最近邻逼近搜索函数库)实现快速高效匹配。另外由于噪声等其他因素影响,有时次优匹配点可能和最优匹配点非常接近(接近0.80.8),实验证明舍弃这些点效果会更好。
参考:Introduction to SIFT (Scale-Invariant Feature Transform);《数字图像处理MATLAB版(左飞著)》12.1章;《OpenCV3编程入门》第11章
列举特征提取、边缘检测算法
边缘检测:sobel、LoG、Canny
特征提取:harris、SIFT、SURF、ORB
相机标定介绍
张在论文中把相机标定方法分为两类:摄影测量标定法(Photogrammetric calibration)
和 自标定法(Self-calibration)
,
- 摄影测量标定法(Photogrammetric calibration) :采用已知尺寸的高精度3D标定物进行标定的方法。该类方法标定结果准确,但是需要昂贵的标定物以及复杂的标定设置。属于该类方法的一些工作如下:
- O. Faugeras. Three-Dimensional Computer Vision: a Geometric Viewpoint. MIT Press, 1993.
- R. Y. Tsai. A versatile camera calibration technique for high-accuracy 3D machine vision metrology using off-the-shelf tv cameras and lenses. IEEE Journal of Robotics and Automation, 3(4):323–344, Aug. 1987.
- 自标定法(Self-calibration) :不需要任何标定物,只需要在静态场景中移动相机。该类方法标定结果并不总是可靠的,但是标定比较灵活。属于该类方法的一些工作如下:
-
S. Bougnoux. From projective to euclidean space under any practical situation, a criticism of self-calibration. In Proceedings of the 6th International Conference on Computer Vision, pages 790–796, Jan. 1998.
-
Q.-T. Luong. Matrice Fondamentale et Calibration Visuelle sur l’Environnement-Vers une plus grande autonomie des systemes robotiques. PhD thesis, Universitede Paris-Sud, Centre d’Orsay, Dec. 1992.
-
Q.-T. Luong and O. Faugeras. Self-calibration of a moving camera from point correspondences and fundamental matrices. The International Journal of Computer Vision, 22(3):261–289, 1997.
-
S. J. Maybank and O. D. Faugeras. A theory of self-calibration of a moving camera. The International Journal of Computer Vision, 8(2):123–152, Aug. 1992.
-
根据这两种分类原则,张认为自己提出的方法介于二者之间,其采用高精度的2D标定平面(棋盘格),并且只需要移动相机或者移动棋盘格。采用的标定物便宜且易于获取(打印棋盘格在纸张上即可),标定配置灵活(移动棋盘格平面,拍摄各个方向的棋盘格即可),且标定结果鲁棒精度较高(实验表明仿真和真实数据表现都不错)。
其实,除了这两类方法,张还提到了一些其他方法,不太好分类,例如:
- vanishing points for orthogonal directions [3, 14], | 这个标定内参效果好像不错,就是vanishing points不好找。
- B. Caprile and V. Torre. Using Vanishing Points for Camera Calibration. The International Journal of Computer Vision, 4(2):127–140, Mar. 1990.
- D. Liebowitz and A. Zisserman. Metric rectification for perspective images of planes. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 482–488,Santa Barbara, California, June 1998. IEEE Computer Society.
- calibration from pure rotation [11, 21].
- R. Hartley. Self-calibration from multiple views with a rotating camera. In J.-O. Eklundh, editor, Proceedings of the 3rd European Conference on Computer Vision, volume 800-801 of Lecture Notes in Computer Science, pages 471–478, Stockholm, Sweden, May 1994. Springer-Verlag.
- G. Stein. Accurate internal camera calibration using rotation, with analysis of sources of error. In Proc. Fifth International Conference on Computer Vision, pages 230–236, Cambridge, Massachusetts, June 1995.
理论基础
棋盘格检测
在标定之前,需要得到标定板上棋盘格的世界坐标和投影到图像上的像素坐标。因为标定板的尺寸已知,我们将坐标系原点放到标定板的某一点上,所以棋盘格世界坐标是已知的;而棋盘格的像素坐标,是通过棋盘格的角点检测算法检测得到的。
角点检测算法也是一个大领域,且不是张氏标定法的重点,本文不打算展开讨论。
基本符号
相机拍摄已知尺寸的棋盘格,得到的投影点记为
m
=
[
u
,
v
]
T
m=[u, \\; v]^T
m=[u,v]T,对应的3D点记为
M
=
[
X
,
Y
,
Z
]
T
M=[X, \\; Y, \\; Z]^T
M=[X,Y,Z]T ,采用齐次坐标表示,对应的齐次坐标为
m
~
=
[
u
,
v
,
1
]
T
\\widetildem =[u, \\; v, \\; 1]^T
m
=[u,v,1]T 和
M
~
=
[
X
,
Y
,
Z
,
1
]
T
\\widetildeM=[X, \\; Y, \\; Z, \\; 1]^T
M
=[X,Y,Z,1]T ,根据针孔相机模型,我们可以知道他们满足如下关系:
s
m
~
=
A
[
R
t
]
M
~
s\\widetildem = A[R \\; t]\\widetildeM
sm
=A[Rt]M
其中,s为标量,表示尺度,
[
R
t
]
[R \\; t]
[Rt] 为相机外参,表示从世界坐标系转到相机坐标系下所需要进行的变换,A为相机内参矩阵,有如下形式:
A
=
[
α
γ
u
0
0
β
v
0
0
0
1
]
A = \\beginbmatrix \\alpha & \\gamma & u_0\\\\ 0 & \\beta & v_0\\\\ 0 & 0 & 1 \\endbmatrix
A=⎣⎡α00γβ0u0v01⎦⎤
其中,
α
,
β
\\alpha, \\beta
α,β 分别是像素坐标系u和v坐标系方向像素焦距,
u
0
,
v
0
u_0, v_0
u0,v0 是相机主点坐标(即相机光心在图像平面上的投影),而
γ
\\gamma
γ 表示像素坐标系u和v之间的倾斜程度(skewness),在现在的相机中,由于工艺的改善,u和v坐标轴几乎垂直,所以
γ
=
0
\\gamma=0
γ=0 。
图像平面与棋盘格平面之间的单应矩阵
不失一般性,为了简化推导过程,我们假设标定板在 Z=0 平面上,如下图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RkxQHoJZ-1650733361162)(.markdown.images/image-20200922154507312.png)]
因此投影关系变为
s
[
u
v
1
]
=
A
[
r
1
r
2
r
3
t
]
[
X
Y
Z
1
]
=
A
[
r
1
r
2
t
]
[
X
Y
1
]
s\\beginbmatrix u \\\\ v \\\\ 1 \\endbmatrix = A [r_1 \\; r_2 \\; r_3 \\; t]\\beginbmatrix X \\\\ Y \\\\ Z \\\\ 1 \\endbmatrix = A [r_1 \\; r_2 \\; t]\\beginbmatrix X \\\\ Y \\\\ 1 \\endbmatrix
s⎣⎡uv1⎦⎤=A[r1r2r3t]⎣⎢⎢⎡XYZ1⎦⎥⎥⎤=A[r1r2t]⎣⎡计算机视觉+人工智能面试笔试总结——目标检测/图像处理基础题
MATLAB教程案例43~50总结MATLAB三维重建类算法仿真经验和技巧总结