summaryrefslogtreecommitdiffstats
path: root/jni/feature_stab/db_vlvm/db_rob_image_homography.h
diff options
context:
space:
mode:
Diffstat (limited to 'jni/feature_stab/db_vlvm/db_rob_image_homography.h')
-rw-r--r--jni/feature_stab/db_vlvm/db_rob_image_homography.h148
1 files changed, 148 insertions, 0 deletions
diff --git a/jni/feature_stab/db_vlvm/db_rob_image_homography.h b/jni/feature_stab/db_vlvm/db_rob_image_homography.h
new file mode 100644
index 000000000..59cde7daa
--- /dev/null
+++ b/jni/feature_stab/db_vlvm/db_rob_image_homography.h
@@ -0,0 +1,148 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* $Id: db_rob_image_homography.h,v 1.3 2011/06/17 14:03:31 mbansal Exp $ */
+
+#ifndef DB_ROB_IMAGE_HOMOGRAPHY
+#define DB_ROB_IMAGE_HOMOGRAPHY
+
+#include "db_utilities.h"
+#include "db_robust.h"
+#include "db_metrics.h"
+
+#include <stdlib.h> // for NULL
+
+
+/*****************************************************************
+* Lean and mean begins here *
+*****************************************************************/
+/*!
+ * \defgroup LMRobImageHomography (LM) Robust Image Homography
+ */
+/*\{*/
+
+#define DB_HOMOGRAPHY_TYPE_DEFAULT 0
+#define DB_HOMOGRAPHY_TYPE_PROJECTIVE 0
+#define DB_HOMOGRAPHY_TYPE_AFFINE 1
+#define DB_HOMOGRAPHY_TYPE_SIMILARITY 2
+#define DB_HOMOGRAPHY_TYPE_SIMILARITY_U 3
+#define DB_HOMOGRAPHY_TYPE_TRANSLATION 4
+#define DB_HOMOGRAPHY_TYPE_ROTATION 5
+#define DB_HOMOGRAPHY_TYPE_ROTATION_U 6
+#define DB_HOMOGRAPHY_TYPE_SCALING 7
+#define DB_HOMOGRAPHY_TYPE_S_T 8
+#define DB_HOMOGRAPHY_TYPE_R_T 9
+#define DB_HOMOGRAPHY_TYPE_R_S 10
+#define DB_HOMOGRAPHY_TYPE_CAMROTATION 11
+#define DB_HOMOGRAPHY_TYPE_CAMROTATION_F 12
+#define DB_HOMOGRAPHY_TYPE_CAMROTATION_F_UD 13
+
+/*!
+Solve for homography H such that xp~Hx
+\param H best homography
+
+2D point to 2D point constraints:
+
+\param im first image points
+\param im_p second image points
+\param nr_points number of points
+
+Calibration matrices:
+
+\param K first camera
+\param Kp second camera
+
+ Temporary space:
+
+ \param temp_d pre-allocated space of size 12*nr_samples+10*nr_points doubles
+ \param temp_i pre-allocated space of size max(nr_samples,nr_points) ints
+
+ Statistics for this estimation
+
+ \param stat NULL - do not compute
+
+ \param homography_type see DB_HOMOGRAPHY_TYPE_* definitions above
+
+ Estimation parameters:
+
+ \param max_iterations max number of polishing steps
+ \param max_points only use this many points
+ \param scale Cauchy scale coefficient (see db_ExpCauchyReprojectionError() )
+ \param nr_samples number of times to compute a hypothesis
+ \param chunk_size size of cost chunks
+*/
+DB_API void db_RobImageHomography(
+ /*Best homography*/
+ double H[9],
+ /*2DPoint to 2DPoint constraints
+ Points are assumed to be given in
+ homogenous coordinates*/
+ double *im,double *im_p,
+ /*Nr of points in total*/
+ int nr_points,
+ /*Calibration matrices
+ used to normalize the points*/
+ double K[9],
+ double Kp[9],
+ /*Pre-allocated space temp_d
+ should point to at least
+ 12*nr_samples+10*nr_points
+ allocated positions*/
+ double *temp_d,
+ /*Pre-allocated space temp_i
+ should point to at least
+ max(nr_samples,nr_points)
+ allocated positions*/
+ int *temp_i,
+ int homography_type=DB_HOMOGRAPHY_TYPE_DEFAULT,
+ db_Statistics *stat=NULL,
+ int max_iterations=DB_DEFAULT_MAX_ITERATIONS,
+ int max_points=DB_DEFAULT_MAX_POINTS,
+ double scale=DB_POINT_STANDARDDEV,
+ int nr_samples=DB_DEFAULT_NR_SAMPLES,
+ int chunk_size=DB_DEFAULT_CHUNK_SIZE,
+ ///////////////////////////////////////////////////
+ // flag for the outlier removal
+ int outlierremoveflagE = 0,
+ // if flag is 1, then the following variables
+ // need to input
+ ///////////////////////////////////////////////////
+ // 3D coordinates
+ double *wp=NULL,
+ // its corresponding stereo pair's points
+ double *im_r=NULL,
+ // raw image coordinates
+ double *im_raw=NULL, double *im_raw_p=NULL,
+ // final matches
+ int *final_NumE=0);
+
+DB_API double db_RobImageHomography_Cost(double H[9],int point_count,double *x_i,
+ double *xp_i,double one_over_scale2);
+
+
+DB_API void db_RobCamRotation_Polish(double H[9],int point_count,double *x_i,
+ double *xp_i, double one_over_scale2,
+ int max_iterations=DB_DEFAULT_MAX_ITERATIONS,
+ double improvement_requirement=DB_DEFAULT_IMP_REQ);
+
+
+DB_API void db_RobCamRotation_Polish_Generic(double H[9],int point_count,int homography_type,
+ double *x_i,double *xp_i,double one_over_scale2,
+ int max_iterations=DB_DEFAULT_MAX_ITERATIONS,
+ double improvement_requirement=DB_DEFAULT_IMP_REQ);
+
+
+#endif /* DB_ROB_IMAGE_HOMOGRAPHY */