球心投影位置

球心投影位置

球经过摄像机投影为椭圆,而由于射影变换不能保证简比不变,因此球心的投影并不在椭圆中心,而是会向主点一侧偏移。运动捕捉实践中,常常将椭圆中心作为球心投影进行定位,这样会产生一定的误差,下面分析球心投影的真实位置和传统方法的误差大小。

公式推导

下面分别通过欧氏几何和射影几何的方法给出球(二次曲面)的成像结果。

欧氏几何方法推导球心投影位置

只要球心不在主轴上,其投影就会变成椭圆。按照对称性,此问题可简化为平面问题。如图 1 所示,设圆椎为球的视椎,视椎的半椎角为 θ \theta θ ,球心视线与像平面的夹角为 α \alpha α O O O 为视点, P P P 为球心, A A A 为椭圆的近心点, B B B 为椭圆的远心点, C C C 为球心的真实投影位置, D D D 为椭圆中心。其中 A B = 2 a AB=2a AB=2a 为椭圆长轴(显然 A D = D B = a AD=DB=a AD=DB=a), O C = h OC=h OC=h 为光心到像点的距离, A C = l AC=l AC=l 为椭圆中心到近心点的距离。

sphere projection
图 1: 球(线段)在像平面上的投影

因此圆椎的方程可写为 x 2 + z 2 = y 2 tan ⁡ 2 θ x^2+z^2=y^2\tan^2\theta x2+z2=y2tan2θ A A A 点坐标为 ( − h cot ⁡ θ + cot ⁡ α ,   h cot ⁡ θ cot ⁡ θ + cot ⁡ α ) (\frac{-h}{\cot\theta + \cot\alpha},\ \frac{h\cot\theta}{\cot\theta + \cot\alpha}) (cotθ+cotαh, cotθ+cotαhcotθ) B B B 点坐标为 ( h cot ⁡ θ − cot ⁡ α ,   h cot ⁡ θ cot ⁡ θ − cot ⁡ α ) (\frac{h}{\cot\theta - \cot\alpha},\ \frac{h\cot\theta}{\cot\theta - \cot\alpha}) (cotθcotαh, cotθcotαhcotθ) D D D 点坐标为 ( h cot ⁡ α cot ⁡ 2 θ − cot ⁡ 2 α ,   h cot ⁡ 2 θ cot ⁡ 2 θ − cot ⁡ 2 α ) (\frac{h\cot\alpha}{\cot^2\theta - \cot^2\alpha},\ \frac{h\cot^2\theta}{\cot^2\theta - \cot^2\alpha}) (cot2θcot2αhcotα, cot2θcot2αhcot2θ) ,半长轴 a = h cot ⁡ θ sin ⁡ α ( cot ⁡ 2 θ − cot ⁡ 2 α ) a=\frac{h\cot\theta}{\sin\alpha(\cot^2\theta - \cot^2\alpha)} a=sinα(cot2θcot2α)hcotθ 。椭圆短轴过 D D D 点并垂直于 X Y XY XY 平面,将 D D D 点的横纵坐标代入圆椎方程,求得坚坐标满足 z 2 = h 2 cot ⁡ 2 θ − cot ⁡ 2 α z^2=\frac{h^2}{\cot^2\theta - \cot^2\alpha} z2=cot2θcot2αh2 。所以椭圆的半短轴为 b = h cot ⁡ 2 θ − cot ⁡ 2 α b=\frac{h}{\sqrt{\cot^2\theta - \cot^2\alpha}} b=cot2θcot2α h ,进而求得椭圆的离心率为 e = 1 − b 2 a 2 = cos ⁡ α cos ⁡ θ e=\sqrt{1-\frac{b^2}{a^2}} = \frac{\cos\alpha}{\cos\theta} e=1a2b2 =cosθcosα 。另有几何关系 l = h sin ⁡ α cot ⁡ θ + cos ⁡ α l=\frac{h}{\sin\alpha\cot\theta + \cos\alpha} l=sinαcotθ+cosαh ,因此得到真实投影点 C C C 的位置关系: l a = 1 − cot ⁡ α cot ⁡ θ \frac{l}{a}=1-\frac{\cot\alpha}{\cot\theta} al=1cotθcotα

综上所述,球的成像椭圆和球心投影位置满足关系:


{ a = h cos ⁡ θ sin ⁡ α ( cot ⁡ 2 θ − cot ⁡ 2 α ) b = h cot ⁡ 2 θ − cot ⁡ 2 α e = cos ⁡ α cos ⁡ θ l a = 1 − cot ⁡ α cot ⁡ θ (1) \left\{ \begin{aligned} a &= \frac{h\cos\theta}{\sin\alpha(\cot^2\theta - \cot^2\alpha)} \\ b &= \frac{h}{\sqrt{\cot^2\theta - \cot^2\alpha}} \\ e &= \frac{\cos\alpha}{\cos\theta} \\ \frac{l}{a} &= 1-\frac{\cot\alpha}{\cot\theta} \end{aligned} \right. \tag{1} abeal=sinα(cot2θcot2α)hcosθ=cot2θcot2α h=cosθcosα=1cotθcotα(1)

显然,球心投影位置并不在椭圆焦点处。当且仅当 α = θ \alpha = \theta α=θ 时,球心投影位置与像平面二次曲线的焦点重合,而这时二次曲线为抛物线( e = 1 e = 1 e=1)。即球与过光心平行于像平面的平面相切且深度为正,这显然不符合物理实际。

射影几何方法推导二次曲面成像

在射影几何中, n n n 维空间中的点一般用 n + 1 n+1 n+1 维矢量的齐次坐标来表示。两个平行的矢量,由于只相差一个因子,在射影空间中代表同一个点。按照摄像机投影方程,三维空间点与二维像满足关系 s x = P X s\boldsymbol{x} = \boldsymbol{PX} sx=PX 。方程左边的因子 s s s 代表空间点在摄像机坐标系中的深度,可舍去。在射影平面内点和直线互为对偶,三维射影空间中点与平面互为对偶。直线 l \boldsymbol{l} l 上的点 x \boldsymbol{x} x 与其存在关系 l T x = l T P X = π T X = 0 \boldsymbol{l}^T\boldsymbol{x} = \boldsymbol{l}^T\boldsymbol{PX} = \boldsymbol{\pi}^T\boldsymbol{X} = 0 lTx=lTPX=πTX=0 ,其中 X \boldsymbol{X} X 是过直线和投影中心的平面 π \boldsymbol{\pi} π 上的点,如此就得到了像平面上直线的反投影平面方程 π = P T l \boldsymbol{\pi} = \boldsymbol{P}^T\boldsymbol{l} π=PTl

在空间中的二次曲面 Q \boldsymbol{Q} Q 上的点 X \boldsymbol{X} X 满足二次型 X T Q X = 0 \boldsymbol{X}^T\boldsymbol{QX} = 0 XTQX=0 ,其中 Q \boldsymbol{Q} Q 为二次型矩阵,因此为实对称阵( Q T = Q \boldsymbol{Q}^T = \boldsymbol{Q} QT=Q)。空间中的任意点 X \boldsymbol{X} X 与平面 π = Q X \boldsymbol{\pi} = \boldsymbol{QX} π=QX 构成对应的极点和极平面,一般来说极点不在极平面上 ( X T Q X ≠ 0 \boldsymbol{X}^T\boldsymbol{QX} \neq 0 XTQX=0)。当且仅当 X \boldsymbol{X} X 在二次曲面上时,极平面经过极点( X T Q X = 0 \boldsymbol{X}^T\boldsymbol{QX} = 0 XTQX=0),此时平面 π = Q X \boldsymbol{\pi} = \boldsymbol{QX} π=QX 是二次曲面上 X \boldsymbol{X} X 点处的切平面。将 X = Q − 1 π \boldsymbol{X} = \boldsymbol{Q}^{-1}\boldsymbol{\pi} X=Q1π 代入二次曲面方程可以得到其对偶方程为 π T Q ∗ π = 0 \boldsymbol{\pi}^T\boldsymbol{Q}^*\boldsymbol{\pi} = 0 πTQπ=0 ,其中二次曲面的对偶 Q ∗ = Q − 1 \boldsymbol{Q}^* = \boldsymbol{Q}^{-1} Q=Q1 是由它的无数切平面围成的包络。类似的,在平面上,二次曲线 C \boldsymbol{C} C 上的点 x \boldsymbol{x} x 满足关系 x T C x = 0 \boldsymbol{x}^T\boldsymbol{Cx} = 0 xTCx=0 ,其对偶 C ∗ = C − 1 \boldsymbol{C}^* = \boldsymbol{C}^{-1} C=C1 是由它的无数切线 l \boldsymbol{l} l 围成的包络,满足关系 l T C ∗ l = 0 \boldsymbol{l}^T\boldsymbol{C}^*\boldsymbol{l} = 0 lTCl=0

显然空间二次曲面经过摄像机投影的轮廓为平面二次曲线,则组成对偶二次曲线 C ∗ \boldsymbol{C}^* C 的包络切线 l \boldsymbol{l} l 经过反投影得到的平面一定是空间对偶二次曲面 Q ∗ \boldsymbol{Q}^* Q 的包络切平面。因此 π T Q ∗ π = l T P Q ∗ P T l = l T C ∗ l = 0 \boldsymbol{\pi}^T\boldsymbol{Q}^*\boldsymbol{\pi} = \boldsymbol{l}^T\boldsymbol{PQ}^*\boldsymbol{P}^T\boldsymbol{l} = \boldsymbol{l}^T\boldsymbol{C}^*\boldsymbol{l} = 0 πTQπ=lTPQPTl=lTCl=0 ,所以二次曲面成像的外轮廓曲线可由下式给出:


C ∗ = P Q ∗ P T (2) \boldsymbol{C}^* = \boldsymbol{PQ}^*\boldsymbol{P}^T \tag{2} C=PQPT(2)

此方程适用于包括球在内的所有二次曲面成像过程,更具一般意义 Hartley-2004-1

椭球的标准形式为 X 2 a 2 + Y 2 b 2 + Z 2 c 2 = 1 \frac{X^2}{a^2} + \frac{Y^2}{b^2} + \frac{Z^2}{c^2} = 1 a2X2+b2Y2+c2Z2=1 ,对方程进行齐次变换 X = X 1 / X 4 ,   Y = X 2 / X 4 ,   Z = X 3 / X 4 X = X_1/X_4,\ Y = X_2/X_4,\ Z = X_3/X_4 X=X1/X4, Y=X2/X4, Z=X3/X4 得到 X 1 2 a 2 + X 2 2 b 2 + X 3 2 c 2 − X 4 2 = 0 \frac{X_1^2}{a^2} + \frac{X_2^2}{b^2} + \frac{X_3^2}{c^2} - X_4^2= 0 a2X12+b2X22+c2X32X42=0 ,其二次型矩阵为对角阵:


Λ = [ 1 / a 2   1 / b 2   1 / c 2   − 1 ] (3) \boldsymbol{\Lambda} = \begin{bmatrix} 1/a^2 & & & \\\ & 1/b^2 & & \\\ & & 1/c^2 & \\\ & & & -1 \end{bmatrix} \tag{3} Λ=1/a2   1/b21/c21(3)

经过在空间中旋转和平移变换,就能得到椭球的一般形式。例如 X ′ = H X \boldsymbol{X}' = \boldsymbol{HX} X=HX ,其中 H = [ R T   1 ] \boldsymbol{H} = \begin{bmatrix}\boldsymbol{R} & \boldsymbol{T} \\\ & 1\end{bmatrix} H=[R T1] ,则有 Q = H − T Λ H − 1 \boldsymbol{Q} = \boldsymbol{H}^{-T} \boldsymbol{\Lambda H}^{-1} Q=HTΛH1 。旋转 R \boldsymbol{R} R 为正交矩阵, T \boldsymbol{T} T 为平移矢量。要从椭球的一般形式得到标准形式 Λ = H T Q H \boldsymbol{\Lambda} = \boldsymbol{H}^T\boldsymbol{QH} Λ=HTQH ,需首先求出欧氏变换 H \boldsymbol{H} H 。稍加分析,可知矢量 T \boldsymbol{T} T 是椭球的中心坐标。根据二次曲面对偶关系,中心点对应的极平面是无穷远平面,因此 π ∞ = Q T ~ \boldsymbol{\pi}_\infty = \boldsymbol{Q}\tilde{\boldsymbol{T}} π=QT~ 或者 T ~ = Q ∗ π ∞ \tilde{\boldsymbol{T}} = \boldsymbol{Q}^*\boldsymbol{\pi}_\infty T~=Qπ ,其中 T ~ = [ T T ,   1 ] T ,   π ∞ = [ 0 ,   0 ,   0 ,   1 ] T \tilde{\boldsymbol{T}} = [\boldsymbol{T}^T,\ 1]^T,\ \boldsymbol{\pi}_\infty = [0,\,0,\,0,\,1]^T T~=[TT, 1]T, π=[0,0,0,1]T 。变换 H \boldsymbol{H} H 可分解为:

H = [ I T   1 ] [ R   1 ] \boldsymbol{H} = \begin{bmatrix} \boldsymbol{I} & \boldsymbol{T} \\\ & 1 \end{bmatrix} \begin{bmatrix} \boldsymbol{R} & \\\ & 1 \end{bmatrix} H=[I T1][R 1]

T h = [ I T   1 ] ,   R h = [ R   1 ] \boldsymbol{T}_h = \begin{bmatrix}\boldsymbol{I} & \boldsymbol{T} \\\ & 1\end{bmatrix},\ \boldsymbol{R}_h = \begin{bmatrix}\boldsymbol{R} & \\\ & 1\end{bmatrix} Th=[I T1], Rh=[R 1] ,则有 Λ = R h T T h T Q T h R h \boldsymbol{\Lambda} = \boldsymbol{R}_h^T\boldsymbol{T}_h^T\boldsymbol{QT}_h\boldsymbol{R}_h Λ=RhTThTQThRh 。在求出椭球中心后,可通过变换 Q ′ = T h T Q T h \boldsymbol{Q}' = \boldsymbol{T}_h^T\boldsymbol{QT}_h Q=ThTQTh 将椭球平移到原点。再对二次型矩阵 Q ′ \boldsymbol{Q}' Q 进行特征值分解,即可求得正交矩阵 R h \boldsymbol{R}_h Rh 和椭球的标准形式 (3)。 同理,平面上的椭圆拥有类似的标准化过程。例如通过式 (2) 求出球的像(椭圆),然后进行二次型标准化即可得到椭圆的半轴长度和方向等信息。

对于球来说,给定球心位置 ( a ,   b ,   c ) (a,\ b,\ c) (a, b, c) 和半径 r r r ,则球面方程可写为 ( X − a ) 2 + ( Y − b ) 2 + ( Z − c ) 2 = r 2 (X-a)^2+(Y-b)^2+(Z-c)^2 = r^2 (Xa)2+(Yb)2+(Zc)2=r2 。对其进行齐次变换得到 X 1 2 + X 2 2 + X 3 2 + ( a 2 + b 2 + c 2 − r 2 ) X 4 2 − 2 a X 1 X 4 − 2 b X 2 X 4 − 2 c X 3 X 4 = 0 X_1^2 + X_2^2 + X_3^2 + (a^2+b^2+c^2-r^2)X_4^2 - 2aX_1X_4 - 2bX_2X_4 - 2cX_3X_4 = 0 X12+X22+X32+(a2+b2+c2r2)X422aX1X42bX2X42cX3X4=0 ,则球的二次型矩阵可写为:

Q = [ 1 − a   1 − b   1 − c   − a − b − c a 2 + b 2 + c 2 − r 2 ] \boldsymbol{Q} = \begin{bmatrix} 1 & & & -a \\\ & 1 & & -b \\\ & & 1 & -c \\\ -a & -b & -c & a^2+b^2+c^2-r^2 \end{bmatrix} Q=1   a1b1cabca2+b2+c2r2

其对偶二次曲面为 Q ∗ = Q − 1 \boldsymbol{Q}^* = \boldsymbol{Q}^{-1} Q=Q1

MATLAB 仿真分析

给定摄像机参数:视场角为 60~80 度,图像大小 1280x1024,摄像机无畸变,视场范围 1~10 m,另外 Marker 小球的直径 16 mm。下面分别按照式 (1) 和 (2) 求解椭球的投影,并对比两种方法得到的结果,进行互相印证。

仿真的结果如下:

fc =  961.51
err =

   3.5116e-08
   3.1730e-08
   3.2576e-04
   8.9195e-06
   2.8262e-08
   1.3897e-07

stddx =  0.0018535
maxdx =  0.039864
id =  1284
exid =  0.56819
axid =  9.0695
bxid =  7.4859
maxex =  0.61848

经过仿真对比可以验证两种方法殊途同归,结果中变量 err 表示两种方法结果的误差大小,用来衡量结果的接近程度。变量 stddx 为球心投影位置与椭圆中心距离的标准差,为传统方法的平均误差;变量 maxdx 为球心投影位置与椭圆中心的最大距离,即传统方法的最大误差。作为本文最重要的结论,当虚拟 Marker 半径为 8 mm 时,最大误差为 0.02~0.05 个像素;当 Marker 半径为 16 mm 时,最大误差达到 0.12~0.18 个像素。

结论

所以对于球形 Marker 的定位来说,球半径越大则结果的误差越大。当球半径不超过 1 cm 时,最大误差不超过 0.08 个像素,利用椭圆中心代替球心投影是完全可以接受的;当球的半径超过 1 cm,若要取得高定位精度则最好计算这个误差。

参考文献

[Hartley-2004-1] Hartley & Zisserman, Multiple view geometry in computer vision, Cambridge university press (2004).

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值