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