2024年5月6日发(作者:宋子辰)
《2D-3D定位算法》笔记
中英对照:
世界坐标系或实体坐标系(3D):object coordinate system。
摄像机坐标系(3D): camera coordinate system。
图像坐标系(2D): image coordinate system,在摄像机坐标系下取x和y坐标即为图像坐标系。
2D-3D点对:2D-3D correspondences,根据投影变换将3D点投影为2D点。
平移变换:translation projection
旋转变换:rotation projection
比例变换:scale projection
透视投影变换:perspective projection
正交投影变换:orthographic projection
2D-3D定位算法:根据 已给出的若干对 3D点p
i
(在世界坐标系或实体坐标系下)和 相对
应的 2D点p
i
'(在图像坐标系下或在摄像机坐标系下取x和y坐标),求出之间的投影变换
矩阵(旋转变换和平移变换)。
文献1:
《A Comparison of 2D-3D Pose Estimation Methods》
文献2:
《A Comparison of Iterative 2D-3D Pose Estimation Methods for Real-Time Applications》
文献3:
《计算机视觉》-马颂德
一、CamPoseCalib(CPC)
1、基本思想:根据非线性最小二乘法,最小化重投影误差求出投影参数
(
x
,
y
,
z
,
,
,
)
。
2、算法过程:
(1)已给出若干点对
(p
i
,p
i
')
,其中
p
i
是实体坐标系下的3D点,
先给出的图像坐标系下的2D点,应该是给出的测量值 。
~
~
p
i
'
我理解为事
T
(2)将
p
i
先经过旋转变换
R
x
(
)R
y
(
)R
z
(
)p
i
和平移变换
(
x
,
y
,
z
)
,
得到摄像
T
机坐标系下的点
m(
,p
i
)(
x
,
y
,
z
)R
x
(
)R
y
(
)R
z
(
)p
i
。
(3)再将像机坐标系下的点
m(
,p
i
)
进行透视投影变换得到图像坐标系下的2D点:
s
x
m(
,p)c
xix
m(
,p
i
)
m'(p
i
,
)
z
s
y
,比例因子为
s(s
x
,s
y
)
,跟
m
y
(
,p
i
)c
y
m
z
(
,p
i
)
摄像机的焦距有关,摄像机坐标系的Z轴与图像平面的交点 跟 图像坐标原点 的距离为
(c
x
,c
y
)
;其中一般
s
x
s
y
f
是焦距,
(c
x
,c
y
)(0,0)
,都是已知的,并且事
先给出的。
(4)重投影误差
dr
i
(
)
2
是
m'(p
i
,
)
跟
~
p
i
'
的二维欧拉距离,
2
r
i
(
)m'(p
i
,
)
~
p
i
'
,
r
i
(
)
是关于
(
x
,
y
,
z
,
,
,
)
的函数 。
(5)根据已给出m个点对
(p
i
,p
i
')
,用非线性最小二乘法求出未知系数
~
(
x
,
y
,
z
,
,
,
)
,
ˆ
argmin
m
(r(
))
i
i1
2
。
3、求解过程:
(1)给出摄像机的初始位置:焦距f,即
s
图像范围,即合理的2D坐标值范围。
p
i
')
,即m>=3 ; (2)共有6个未知数,至少需要3个
(p
i
,
~
(s
x
,s
y
)
,图像坐标中心,即
(c
x
,c
y
)
,
(3)算法执行停止条件为:限制迭代次数,设置每次重投影误差的变动值大小阈值。
4、我目前的进展:
(1)现在在看非线性最小二乘法,了解怎么最终获得解。
(2)上面有下划线的地方,不知道我理解的对不对?
二、POSIT
1、基本思想:算法分两部分
(1)带有比例系数的正交投影变换SOP,根据线性方程组求出旋转矩阵和平移向量;
(2)由得出的旋转矩阵和平移向量系数,更新比例系数(scale factor),再由比例系数更新
原有的点,进行迭代。
2、算法过程:
R
11
(1)假设旋转矩阵
R
R
21
R
31
透视投影变换中
x
i
R
12
R
22
R
32
R
13
R
1
T
T
x
T
R
23
=
R
2
和平移向量
T
T
,f是焦距;在
y
T
R
R
33
3
T
z
f
Z
i
X
i
,
y
i
f
Z
i
Y
i
,而在SOP中
x
i
f
Z
0
X
i
,
y
i
f
Z
0
Y
i
,其中比例因子是
s
f
;
Z
0
T
(2)作基本的透视投影变换,将3D点
a(a
x
,a
y
,a
z
)
透视投影到图像平面上得到齐
a
x
T
fR
1
fT
x
wx
a
T
y
T
wyfRfT
2y
次坐标
m(wx,wy,w)
,变换过程为
,(有点不明
a
z
T
R
T
z
w
3
1
白)因为m是齐次坐标,所以等式右边除以
T
z
,不会受影响,则得到
wx
wy
w
sR
1
T
sR
2
T
R
3
T
z
T
a
x
sT
x
a
y
sT
y
a
z
1
1
,其中
s
f
T
z
,即得到
T
wx
sR
1
T
wy
sR
2
a
x
sT
x
a
y
sT
y
a
z
1
YZ
,其中
w
R
3
a
T
z
1
;
(3)现在变换过程为
[X1][
sR
1
sT
x
sR
2
sT
y
][wxwy]
,即为方程组
{
XsR
11
YsR
12
ZsR
13
sT
x
wx
XsR
21
YsR
22
ZsR
23
sT
y
wy
sR
13
,
w
初始值为1;
T
(4)令
K
1
(sR
11
X
0
X
1
A
.
X
n
Y
0
Y
1
.
Y
n
Z
0
Z
1
.
Z
n
sR
12
sT
x
)
,
K
2
(sR
21
sR
22
sR
23
sT
y
)
T
,
x
0
1
y
0
x
1
1y
1
,A为(n+1)
4矩阵,
b
1
,
b
2
;然后初
.
.
.
x
1
y
n
n
始方程组变成
{
AK
1
b
1
AK
2
b
2
,应用最小二乘法,得到解
{
K
1
(AA)
K
2
(AA)
T
T1
1
Ab
1
Ab
2
T
T
;
(5)至少有4个不共面的2D-3D点对,求出K1,K2后,将其除以已知的定值s,可得到
R1,R2,Tx,Ty,然后得到R3=R1
R2,并且将R1,R2,R3归一化为单位向量;
(6)然后更新
w
R
3
a
T
z
1
,因为对不同的2D-3D点对,
s
f
T
z
是定值,f是焦
距,是已知的定值参数,
T
z
也是已知的定值参数,可以看做是所有的3D点Z坐标的平均
值,(这样可以吗?);对不同的3D点,
a
不同,所以
w
也就不同,这样将原来的2D点变
为
(wx,wy)
;
(7)再重步骤(2)开始,由原有的3D点和更新后的2D点,用最小二乘法解方程组,得
到新的K1,K2;再更新w,更新2D点坐标;
3、求解过程:
(1)给出摄像机的初始位置:焦距
f
,图像坐标中心,即
(c
x
,c
y
T
)
,图像范围,即合
理的2D坐标值范围。
(2)共有8个未知数,至少需要4个2D-3D点对;
(3)第一个2D-3D点对必须是(0,0)-(0,0,0);
(3)算法执行停止条件为:限制迭代次数,设置每次2D点的变动值大小(精确度)阈值。
4、我目前的进展:
(1)我不明白
T
z
一开始是不是给出的,还是计算出来的?如果看做是所有的3D点Z坐标
的平均值或者最小值或中值,这样可以吗?
(2)上面有下划线的地方,不知道我理解的对不对?
三、Direct Linear Transform(DLT)
这种方法,马颂德的《计算机视觉》 4.1节 线性模型摄像机定标 说的比较详细,
文献1中的DLT解法跟这个类似,这个应该就是DLT算法,所以我就没有仔细写了。
四、PosIt for coplanar points
这个方法主要是处理对于PosIt 中不同的3D点正交投影到图像平面上同一个2D点这种情
况,具体的解法看的还不是太明白。
2024年5月6日发(作者:宋子辰)
《2D-3D定位算法》笔记
中英对照:
世界坐标系或实体坐标系(3D):object coordinate system。
摄像机坐标系(3D): camera coordinate system。
图像坐标系(2D): image coordinate system,在摄像机坐标系下取x和y坐标即为图像坐标系。
2D-3D点对:2D-3D correspondences,根据投影变换将3D点投影为2D点。
平移变换:translation projection
旋转变换:rotation projection
比例变换:scale projection
透视投影变换:perspective projection
正交投影变换:orthographic projection
2D-3D定位算法:根据 已给出的若干对 3D点p
i
(在世界坐标系或实体坐标系下)和 相对
应的 2D点p
i
'(在图像坐标系下或在摄像机坐标系下取x和y坐标),求出之间的投影变换
矩阵(旋转变换和平移变换)。
文献1:
《A Comparison of 2D-3D Pose Estimation Methods》
文献2:
《A Comparison of Iterative 2D-3D Pose Estimation Methods for Real-Time Applications》
文献3:
《计算机视觉》-马颂德
一、CamPoseCalib(CPC)
1、基本思想:根据非线性最小二乘法,最小化重投影误差求出投影参数
(
x
,
y
,
z
,
,
,
)
。
2、算法过程:
(1)已给出若干点对
(p
i
,p
i
')
,其中
p
i
是实体坐标系下的3D点,
先给出的图像坐标系下的2D点,应该是给出的测量值 。
~
~
p
i
'
我理解为事
T
(2)将
p
i
先经过旋转变换
R
x
(
)R
y
(
)R
z
(
)p
i
和平移变换
(
x
,
y
,
z
)
,
得到摄像
T
机坐标系下的点
m(
,p
i
)(
x
,
y
,
z
)R
x
(
)R
y
(
)R
z
(
)p
i
。
(3)再将像机坐标系下的点
m(
,p
i
)
进行透视投影变换得到图像坐标系下的2D点:
s
x
m(
,p)c
xix
m(
,p
i
)
m'(p
i
,
)
z
s
y
,比例因子为
s(s
x
,s
y
)
,跟
m
y
(
,p
i
)c
y
m
z
(
,p
i
)
摄像机的焦距有关,摄像机坐标系的Z轴与图像平面的交点 跟 图像坐标原点 的距离为
(c
x
,c
y
)
;其中一般
s
x
s
y
f
是焦距,
(c
x
,c
y
)(0,0)
,都是已知的,并且事
先给出的。
(4)重投影误差
dr
i
(
)
2
是
m'(p
i
,
)
跟
~
p
i
'
的二维欧拉距离,
2
r
i
(
)m'(p
i
,
)
~
p
i
'
,
r
i
(
)
是关于
(
x
,
y
,
z
,
,
,
)
的函数 。
(5)根据已给出m个点对
(p
i
,p
i
')
,用非线性最小二乘法求出未知系数
~
(
x
,
y
,
z
,
,
,
)
,
ˆ
argmin
m
(r(
))
i
i1
2
。
3、求解过程:
(1)给出摄像机的初始位置:焦距f,即
s
图像范围,即合理的2D坐标值范围。
p
i
')
,即m>=3 ; (2)共有6个未知数,至少需要3个
(p
i
,
~
(s
x
,s
y
)
,图像坐标中心,即
(c
x
,c
y
)
,
(3)算法执行停止条件为:限制迭代次数,设置每次重投影误差的变动值大小阈值。
4、我目前的进展:
(1)现在在看非线性最小二乘法,了解怎么最终获得解。
(2)上面有下划线的地方,不知道我理解的对不对?
二、POSIT
1、基本思想:算法分两部分
(1)带有比例系数的正交投影变换SOP,根据线性方程组求出旋转矩阵和平移向量;
(2)由得出的旋转矩阵和平移向量系数,更新比例系数(scale factor),再由比例系数更新
原有的点,进行迭代。
2、算法过程:
R
11
(1)假设旋转矩阵
R
R
21
R
31
透视投影变换中
x
i
R
12
R
22
R
32
R
13
R
1
T
T
x
T
R
23
=
R
2
和平移向量
T
T
,f是焦距;在
y
T
R
R
33
3
T
z
f
Z
i
X
i
,
y
i
f
Z
i
Y
i
,而在SOP中
x
i
f
Z
0
X
i
,
y
i
f
Z
0
Y
i
,其中比例因子是
s
f
;
Z
0
T
(2)作基本的透视投影变换,将3D点
a(a
x
,a
y
,a
z
)
透视投影到图像平面上得到齐
a
x
T
fR
1
fT
x
wx
a
T
y
T
wyfRfT
2y
次坐标
m(wx,wy,w)
,变换过程为
,(有点不明
a
z
T
R
T
z
w
3
1
白)因为m是齐次坐标,所以等式右边除以
T
z
,不会受影响,则得到
wx
wy
w
sR
1
T
sR
2
T
R
3
T
z
T
a
x
sT
x
a
y
sT
y
a
z
1
1
,其中
s
f
T
z
,即得到
T
wx
sR
1
T
wy
sR
2
a
x
sT
x
a
y
sT
y
a
z
1
YZ
,其中
w
R
3
a
T
z
1
;
(3)现在变换过程为
[X1][
sR
1
sT
x
sR
2
sT
y
][wxwy]
,即为方程组
{
XsR
11
YsR
12
ZsR
13
sT
x
wx
XsR
21
YsR
22
ZsR
23
sT
y
wy
sR
13
,
w
初始值为1;
T
(4)令
K
1
(sR
11
X
0
X
1
A
.
X
n
Y
0
Y
1
.
Y
n
Z
0
Z
1
.
Z
n
sR
12
sT
x
)
,
K
2
(sR
21
sR
22
sR
23
sT
y
)
T
,
x
0
1
y
0
x
1
1y
1
,A为(n+1)
4矩阵,
b
1
,
b
2
;然后初
.
.
.
x
1
y
n
n
始方程组变成
{
AK
1
b
1
AK
2
b
2
,应用最小二乘法,得到解
{
K
1
(AA)
K
2
(AA)
T
T1
1
Ab
1
Ab
2
T
T
;
(5)至少有4个不共面的2D-3D点对,求出K1,K2后,将其除以已知的定值s,可得到
R1,R2,Tx,Ty,然后得到R3=R1
R2,并且将R1,R2,R3归一化为单位向量;
(6)然后更新
w
R
3
a
T
z
1
,因为对不同的2D-3D点对,
s
f
T
z
是定值,f是焦
距,是已知的定值参数,
T
z
也是已知的定值参数,可以看做是所有的3D点Z坐标的平均
值,(这样可以吗?);对不同的3D点,
a
不同,所以
w
也就不同,这样将原来的2D点变
为
(wx,wy)
;
(7)再重步骤(2)开始,由原有的3D点和更新后的2D点,用最小二乘法解方程组,得
到新的K1,K2;再更新w,更新2D点坐标;
3、求解过程:
(1)给出摄像机的初始位置:焦距
f
,图像坐标中心,即
(c
x
,c
y
T
)
,图像范围,即合
理的2D坐标值范围。
(2)共有8个未知数,至少需要4个2D-3D点对;
(3)第一个2D-3D点对必须是(0,0)-(0,0,0);
(3)算法执行停止条件为:限制迭代次数,设置每次2D点的变动值大小(精确度)阈值。
4、我目前的进展:
(1)我不明白
T
z
一开始是不是给出的,还是计算出来的?如果看做是所有的3D点Z坐标
的平均值或者最小值或中值,这样可以吗?
(2)上面有下划线的地方,不知道我理解的对不对?
三、Direct Linear Transform(DLT)
这种方法,马颂德的《计算机视觉》 4.1节 线性模型摄像机定标 说的比较详细,
文献1中的DLT解法跟这个类似,这个应该就是DLT算法,所以我就没有仔细写了。
四、PosIt for coplanar points
这个方法主要是处理对于PosIt 中不同的3D点正交投影到图像平面上同一个2D点这种情
况,具体的解法看的还不是太明白。