最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

三种2D-3D定位算法(摄像机定标)

IT圈 admin 26浏览 0评论

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)重投影误差

dr

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

i1

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

wyfRfT

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

T1

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)重投影误差

dr

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

i1

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

wyfRfT

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

T1

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点这种情

况,具体的解法看的还不是太明白。

发布评论

评论列表 (0)

  1. 暂无评论