Robust Real-Time Face Detection on High

Absolute Orientation
Absolute Orientationの問題
二つの座標系の間における剛体(rigid body)変換を復元す
る問題である。
例えば:
2台のステレオカメラから得られた3次元情報の間の関係を
推定する問題。
その関係が知れば、すべての3次元情報をひとつの座標系
で記述することができる。
pc  ( xc , yc , zc ) は、点Pがカメラ座標系での座標
p a  ( xa , ya , za ) は、点Pがワールド座標系での座標
ある点群がそれぞれの座標系での座標は既知とした場合、カメ
ラ座標系とワールド座標系の間の回転行列と平行移動ベクトル
を推定する問題。
つまり、
p
c ,1
, p a ,1 , p c , 2 , p a , 2 ,..., p c ,n , p a ,n  が既知の場合、
p a ,i  Rpc ,i  p c を満たす R と p c を求める
問題。ここで、
 rxx

R  ryx
 rzx

rxy
ryy
rzy
rxz 

ryz 
rzz 
 px 
p c   p y 
 p z 
p a ,i  Rpc ,i  p c を展開すると、下記の方程式になる。
xa ,i  rxx xc ,i  rxy yc ,i  rxz zc ,i  p x
ya ,i  ryx xc ,i  ryy yc ,i  ryz zc ,i  p y
z a ,i  rzx xc ,i  rzy yc ,i  rzz zc ,i  p z
座標変換のパラメータは、12個で、回転行列の要素は9
個、並行移動ベクトルは3個である。
1対の対応点
p
c ,i
,p a ,i  から、上記のように、3個の方程
式が得られる。
したがって、最低、4対の対応点が必要。
たくさんの対応点があれば、最小2乗法を使えば、解の精
度を向上することができる。
しかし、Rは回転行列であることを無視して、つまり、
RRT  I
という拘束条件を無視して、連立方程式として
解を計算すれば、得られた答えは、有効な(意味のある)
回転行列でない可能性がある。
この問題を解決ために
1.線形方程式の解として得られた回転行列を、無理や
り RRT  I に従うように修正する。
たとえば、
rxy
v2
yx
ryy
zx
rzy
v3
v'1 

 r
 r
v1  rxx

r 
r 
rxz
T
T
yz
とすると、
T
zz
v v
v1
v' v'
v'2  3 1 v'3  1 2
| v1 |
| v 3  v1 |
| v'1v'2 |
しかし、この方法で得られた結果は最良の近似である保障
はありません。
2.回転行列の要素を求める代わりに、たとえば、pan,
tilt, rollの角度を推定する。
しかし、こうすると、方程式は非常に複雑な三角関数の
方程式となってしまう。
3.RRT  I を考慮して、方程式を解く方法
p a ,i  Rpc ,i  p c
(3.1)
3.1 点群の重心を求める
1 n
p a   p a ,i
n i 1
(3.2)
1 n
p c   p c ,i
(3.3)
n i 1
すると、平行移動ベクトルは、下記の式で表現できる。
pc  p a  Rpc
(3.4)
3.2 各点から、重心の座標を引く
p ' a ,i  p a ,i  p a
(3.5)
p 'c , i  p c , i  p c
(3.6)
p a , i  p ' a , i p a
(3.7)
p c,i  p'c ,i p c
(3.8)
すると、
式(3.7),(3.8)を式(3.1)に代入すると、
p'a ,i p a  Rp'c,i Rp c  p c
(3.9)
p'a ,i p a  Rp'c,i Rp c  p c
(3.9)
式(3.4) を式(3.9)に代入すると、
(3.10)
p'a ,i  Rp'c ,i
p'a,i
q
Rp'c,i
(3.10)が成り立つとき、q = 0
最大になる。

このとき、 p'a ,i  Rp'c ,i

4次元形式で表すと、


p'a,i Rp'c,i   r'a,i  qrc,iq*  qr 'c,i  qr 'a,i 
(3.9)
したがって、回転行列を推定するために、下記の関数F(q)
を最大にするqを求めれば良い。
F (q)   qr 'c ,i  qr 'a ,i    N c ,i q  N a ,i q 
n
n
i 1
i 1
n
  qT NTc ,i N a ,i q
i 1
n


T
T
 q   N c ,i N a ,i q
 i 1

 qT Nq
T
 xc ,i
 y c ,i
N c ,i
 0
x
c ,i


 yc ,i

 z c ,i
0
 z c ,i
y c ,i
z c ,i
0
 xc ,i
 xa , i
 y a ,i
N a ,i
 0
x
a ,i


 y a ,i

 z a ,i
0
 z a ,i
z a ,i
0
y a ,i
 xa , i
ここで、
 z c ,i 

 yc ,i 
xc ,i 

0 
 z a ,i 

 y a ,i 
xa , i 

0 
そして、
 S xx  S yy  S zz
 S S
yz
zy
N
 S zx  S xz

 S xy  S yx
S yz  S zy
S xx  S yy  S zz
S zx  S xz
S xy  S yx
S xy  S yx
 S xx  S yy  S zz
S zx  S xz
S yz  S zy
S xy  S yx


S zx  S xz


S yz  S zy

 S xx  S yy  S zz 
n
n
n
i 1
i 1
i 1
n
n
n
i 1
i 1
i 1
n
n
n
i 1
i 1
i 1
S xx   xc ,i xa ,i S xy   xc ,i ya ,i S xz   xc ,i za ,i
S yx   yc ,i xa ,i S yy   yc ,i ya ,i S yz   yc ,i z a ,i
S zx   zc ,i xa ,i S zy   zc ,i ya ,i S zz   zc ,i za ,i
関数F(q)はqに関する2次形式であり、そしてqの長さが1で
ある。
「2次形式の微分と極値」 で説明したように、
F(q)の最大値 N の最大固有値であり、
F(q)を最大にするqは N の最大固有値に対応する固有ベク
トルである。
従って、
q = N の最大固有値と対応している固有ベクトル