1e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen/*
2e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen * Copyright (C) 2011 The Android Open Source Project
3e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen *
4e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen * Licensed under the Apache License, Version 2.0 (the "License");
5e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen * you may not use this file except in compliance with the License.
6e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen * You may obtain a copy of the License at
7e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen *
8e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen *      http://www.apache.org/licenses/LICENSE-2.0
9e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen *
10e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen * Unless required by applicable law or agreed to in writing, software
11e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen * distributed under the License is distributed on an "AS IS" BASIS,
12e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen * See the License for the specific language governing permissions and
14e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen * limitations under the License.
15e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen */
16e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen
17e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen/* $Id: db_framestitching.h,v 1.2 2011/06/17 14:03:31 mbansal Exp $ */
18e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen
19e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen#ifndef DB_FRAMESTITCHING_H
20e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen#define DB_FRAMESTITCHING_H
21e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen/*!
22e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen * \defgroup FrameStitching Frame Stitching (2D and 3D homography estimation)
23e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen */
24e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen/*\{*/
25e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen
26e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen
27e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen/*****************************************************************
28e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen*    Lean and mean begins here                                   *
29e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen*****************************************************************/
30e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen/*!
31e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen * \defgroup LMFrameStitching (LM) Frame Stitching (2D and 3D homography estimation)
32e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen */
33e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen/*\{*/
34e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen
35e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen/*!
36e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta ChenFind scale, rotation and translation of the similarity that
37e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chentakes the nr_points inhomogenous 3D points X to Xp
38e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen(left to right according to Horn), i.e. for the homogenous equivalents
39e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta ChenXp and X we would have
40e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen\code
41e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen    Xp~
42e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen    [sR t]*X
43e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen    [0  1]
44e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen\endcode
45e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta ChenIf orientation_preserving is true, R is restricted such that det(R)>0.
46e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chenallow_scaling, allow_rotation and allow_translation allow s,R and t
47e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chento differ from 1,Identity and 0
48e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen
49e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta ChenFull similarity takes the following on 550MHz:
50e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen\code
51e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen4.5 microseconds with       3 points
52e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen4.7 microseconds with       4 points
53e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen5.0 microseconds with       5 points
54e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen5.2 microseconds with       6 points
55e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen5.8 microseconds with      10 points
56e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen20  microseconds with     100 points
57e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen205 microseconds with    1000 points
58e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen2.9 milliseconds with   10000 points
59e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen50  milliseconds with  100000 points
60e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen0.5 seconds      with 1000000 points
61e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen\endcode
62e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta ChenWithout orientation_preserving:
63e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen\code
64e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen4 points is minimal for (s,R,t) (R,t)
65e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen3 points is minimal for (s,R) (R)
66e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen2 points is minimal for (s,t)
67e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen1 point is minimal for  (s) (t)
68e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen\endcode
69e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta ChenWith orientation_preserving:
70e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen\code
71e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen3 points is minimal for (s,R,t) (R,t)
72e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen2 points is minimal for (s,R) (s,t) (R)
73e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen1 point is minimal for  (s) (t)
74e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen\endcode
75e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen
76e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen\param scale                    scale
77e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen\param R                        rotation
78e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen\param t                        translation
79e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen\param Xp                       inhomogenouse 3D points in first coordinate system
80e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen\param X                        inhomogenouse 3D points in second coordinate system
81e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen\param nr_points                number of points
82e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen\param orientation_preserving   if true, R is restricted such that det(R)>0.
83e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen\param allow_scaling            estimate scale
84e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen\param allow_rotation           estimate rotation
85e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen\param allow_translation        estimate translation
86e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen*/
87e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta ChenDB_API void db_StitchSimilarity3DRaw(double *scale,double R[9],double t[3],
88e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen                            double **Xp,double **X,int nr_points,int orientation_preserving=1,
89e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen                            int allow_scaling=1,int allow_rotation=1,int allow_translation=1);
90e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen
91e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen
92e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen/*\}*/
93e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen
94e295e32b68cf04f0d99138bf4a6d25555f3aef99Wei-Ta Chen#endif /* DB_FRAMESTITCHING_H */
95