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