Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/extern
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2013-02-28 18:24:52 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2013-02-28 18:24:52 +0400
commit3e320a67e3fa1226c95bb37250649fb26f0d916e (patch)
treef0f225234b4bfc9e3703404403ac4c49701b5a2e /extern
parent52f34f017dca0bfe12976c997c2396de0dce2a71 (diff)
Remove unused rigid registration code
There're some features planned which would require rigid registration, but this code would need to be re-done anyway to use new minimizer and solving some issues with ICP algorithm there.
Diffstat (limited to 'extern')
-rw-r--r--extern/libmv/CMakeLists.txt2
-rw-r--r--extern/libmv/files.txt2
-rw-r--r--extern/libmv/libmv-capi.cpp54
-rw-r--r--extern/libmv/libmv/simple_pipeline/rigid_registration.cc182
-rw-r--r--extern/libmv/libmv/simple_pipeline/rigid_registration.h68
5 files changed, 0 insertions, 308 deletions
diff --git a/extern/libmv/CMakeLists.txt b/extern/libmv/CMakeLists.txt
index 241e8bf2cd1..a4910d94a37 100644
--- a/extern/libmv/CMakeLists.txt
+++ b/extern/libmv/CMakeLists.txt
@@ -59,7 +59,6 @@ set(SRC
libmv/simple_pipeline/pipeline.cc
libmv/simple_pipeline/reconstruction.cc
libmv/simple_pipeline/resect.cc
- libmv/simple_pipeline/rigid_registration.cc
libmv/simple_pipeline/tracks.cc
libmv/tracking/brute_region_tracker.cc
libmv/tracking/esm_region_tracker.cc
@@ -118,7 +117,6 @@ set(SRC
libmv/simple_pipeline/pipeline.h
libmv/simple_pipeline/reconstruction.h
libmv/simple_pipeline/resect.h
- libmv/simple_pipeline/rigid_registration.h
libmv/simple_pipeline/tracks.h
libmv/tracking/brute_region_tracker.h
libmv/tracking/esm_region_tracker.h
diff --git a/extern/libmv/files.txt b/extern/libmv/files.txt
index 8eead23ea08..16afdb36371 100644
--- a/extern/libmv/files.txt
+++ b/extern/libmv/files.txt
@@ -54,8 +54,6 @@ libmv/simple_pipeline/reconstruction.cc
libmv/simple_pipeline/reconstruction.h
libmv/simple_pipeline/resect.cc
libmv/simple_pipeline/resect.h
-libmv/simple_pipeline/rigid_registration.cc
-libmv/simple_pipeline/rigid_registration.h
libmv/simple_pipeline/tracks.cc
libmv/simple_pipeline/tracks.h
libmv/tracking/brute_region_tracker.cc
diff --git a/extern/libmv/libmv-capi.cpp b/extern/libmv/libmv-capi.cpp
index 74224eb5368..c915205dd16 100644
--- a/extern/libmv/libmv-capi.cpp
+++ b/extern/libmv/libmv-capi.cpp
@@ -56,7 +56,6 @@
#include "libmv/simple_pipeline/detect.h"
#include "libmv/simple_pipeline/pipeline.h"
#include "libmv/simple_pipeline/camera_intrinsics.h"
-#include "libmv/simple_pipeline/rigid_registration.h"
#include "libmv/simple_pipeline/modal_solver.h"
#include <stdlib.h>
@@ -968,56 +967,3 @@ void libmv_InvertIntrinsics(libmv_cameraIntrinsicsOptions *libmv_camera_intrinsi
camera_intrinsics.InvertIntrinsics(x, y, x1, y1);
}
}
-
-/* ************ point clouds ************ */
-
-static void libmvTransformToMat4(libmv::Mat3 &R, libmv::Vec3 &S, libmv::Vec3 &t, double M[4][4])
-{
- for (int j = 0; j < 3; ++j)
- for (int k = 0; k < 3; ++k)
- M[j][k] = R(k, j) * S(j);
-
- for (int i = 0; i < 3; ++i) {
- M[3][0] = t(0);
- M[3][1] = t(1);
- M[3][2] = t(2);
-
- M[0][3] = M[1][3] = M[2][3] = 0;
- }
-
- M[3][3] = 1.0;
-}
-
-void libmv_rigidRegistration(float (*reference_points)[3], float (*points)[3], int total_points,
- int use_scale, int use_translation, double M[4][4])
-{
- libmv::Mat3 R;
- libmv::Vec3 S;
- libmv::Vec3 t;
- libmv::vector<libmv::Vec3> reference_points_vector, points_vector;
-
- for (int i = 0; i < total_points; i++) {
- reference_points_vector.push_back(libmv::Vec3(reference_points[i][0],
- reference_points[i][1],
- reference_points[i][2]));
-
- points_vector.push_back(libmv::Vec3(points[i][0],
- points[i][1],
- points[i][2]));
- }
-
- if (use_scale && use_translation) {
- libmv::RigidRegistration(reference_points_vector, points_vector, R, S, t);
- }
- else if (use_translation) {
- S = libmv::Vec3(1.0, 1.0, 1.0);
- libmv::RigidRegistration(reference_points_vector, points_vector, R, t);
- }
- else {
- S = libmv::Vec3(1.0, 1.0, 1.0);
- t = libmv::Vec3::Zero();
- libmv::RigidRegistration(reference_points_vector, points_vector, R);
- }
-
- libmvTransformToMat4(R, S, t, M);
-}
diff --git a/extern/libmv/libmv/simple_pipeline/rigid_registration.cc b/extern/libmv/libmv/simple_pipeline/rigid_registration.cc
deleted file mode 100644
index f7cb1e66e7d..00000000000
--- a/extern/libmv/libmv/simple_pipeline/rigid_registration.cc
+++ /dev/null
@@ -1,182 +0,0 @@
-// Copyright (c) 2012 libmv authors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to
-// deal in the Software without restriction, including without limitation the
-// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-// sell copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-// IN THE SOFTWARE.
-
-#include "libmv/simple_pipeline/rigid_registration.h"
-#include "libmv/numeric/levenberg_marquardt.h"
-
-namespace libmv {
-
-template<class RigidTransformation>
-struct RigidRegistrationCostFunction {
- public:
- typedef Vec FMatrixType;
- typedef RigidTransformation XMatrixType;
-
- RigidRegistrationCostFunction(const vector<Vec3> &reference_points,
- const vector<Vec3> &points):
- reference_points_(reference_points),
- points_(points) {}
-
- Vec CalculateResiduals(const Mat3 &R,
- const Vec3 &S,
- const Vec3 &t) const {
- Vec residuals(points_.size());
- residuals.setZero();
-
- // Convert scale vector to matrix
- Mat3 SMat = Mat3::Identity();
- SMat(0, 0) *= S(0);
- SMat(1, 1) *= S(1);
- SMat(2, 2) *= S(2);
-
- for (int i = 0; i < points_.size(); i++) {
- Vec3 transformed_point = R * SMat * points_[i] + t;
-
- double norm = (transformed_point - reference_points_[i]).norm();
-
- residuals(i) = norm * norm;
- }
-
- return residuals;
- }
-
- Vec operator()(const Vec9 &RSt) const {
- Mat3 R = RotationFromEulerVector(RSt.head<3>());
- Vec3 S = RSt.segment<3>(3);
- Vec3 t = RSt.tail<3>();
-
- return CalculateResiduals(R, S, t);
- }
-
- Vec operator()(const Vec3 &euler) const {
- Mat3 R = RotationFromEulerVector(euler);
-
- return CalculateResiduals(R, Vec3(1.0, 1.0, 1.0), Vec3::Zero());
- }
-
- Vec operator()(const Vec6 &Rt) const {
- Mat3 R = RotationFromEulerVector(Rt.head<3>());
- Vec3 t = Rt.tail<3>();
-
- return CalculateResiduals(R, Vec3(1.0, 1.0, 1.0), t);
- }
-
- private:
- vector<Vec3> reference_points_;
- vector<Vec3> points_;
-};
-
-static double RigidRegistrationError(const vector<Vec3> &reference_points,
- const vector<Vec3> &points,
- const Mat3 &R,
- const Vec3 &S,
- const Vec3 &t) {
- double error = 0.0;
-
- Mat3 SMat = Mat3::Identity();
- SMat(0, 0) *= S(0);
- SMat(1, 1) *= S(1);
- SMat(2, 2) *= S(2);
-
- for (int i = 0; i < points.size(); i++) {
- Vec3 new_point = R * SMat * points[i] + t;
-
- double norm = (new_point - reference_points[i]).norm();
- error += norm * norm;
- }
- error /= points.size();
-
- return error;
-}
-
-double RigidRegistration(const vector<Vec3> &reference_points,
- const vector<Vec3> &points,
- Mat3 &R,
- Vec3 &S,
- Vec3 &t) {
- typedef LevenbergMarquardt<RigidRegistrationCostFunction <Vec9> > Solver;
-
- RigidRegistrationCostFunction<Vec9> rigidregistration_cost(reference_points, points);
- Solver solver(rigidregistration_cost);
-
- Vec9 RSt = Vec9::Zero();
-
- RSt(3) = RSt(4) = RSt(5) = 1.0;
-
- Solver::SolverParameters params;
- /*Solver::Results results = */ solver.minimize(params, &RSt);
- /* TODO(sergey): better error handling here */
-
- LG << "Rigid registration completed, rotation is:" << RSt.head<3>().transpose()
- << ", scale is " << RSt.segment<3>(3).transpose()
- << ", translation is " << RSt.tail<3>().transpose();
-
- // Decompose individual rotation and translation
- R = RotationFromEulerVector(RSt.head<3>());
- S = RSt.segment<3>(3);
- t = RSt.tail<3>();
-
- return RigidRegistrationError(reference_points, points, R, S, t);
-}
-
-double RigidRegistration(const vector<Vec3> &reference_points,
- const vector<Vec3> &points,
- Mat3 &R,
- Vec3 &t) {
- typedef LevenbergMarquardt<RigidRegistrationCostFunction <Vec6> > Solver;
-
- RigidRegistrationCostFunction<Vec6> rigidregistration_cost(reference_points, points);
- Solver solver(rigidregistration_cost);
-
- Vec6 Rt = Vec6::Zero();
- Solver::SolverParameters params;
- /*Solver::Results results = */solver.minimize(params, &Rt);
- /* TODO(sergey): better error handling here */
-
- LG << "Rigid registration completed, rotation is:" << Rt.head<3>().transpose()
- << ", translation is " << Rt.tail<3>().transpose();
-
- R = RotationFromEulerVector(Rt.head<3>());
- t = Rt.tail<3>();
-
- return RigidRegistrationError(reference_points, points, R, Vec3(1.0, 1.0, 1.0), t);
-}
-
-double RigidRegistration(const vector<Vec3> &reference_points,
- const vector<Vec3> &points,
- Mat3 &R) {
- typedef LevenbergMarquardt<RigidRegistrationCostFunction <Vec3> > Solver;
-
- RigidRegistrationCostFunction<Vec3> rigidregistration_cost(reference_points, points);
- Solver solver(rigidregistration_cost);
-
- Vec3 euler = Vec3::Zero();
- Solver::SolverParameters params;
- /*Solver::Results results = */solver.minimize(params, &euler);
- /* TODO(sergey): better error handling here */
-
- LG << "Rigid registration completed, rotation is:" << euler.transpose();
-
- R = RotationFromEulerVector(euler);
-
- return RigidRegistrationError(reference_points, points, R, Vec3(1.0, 1.0, 1.0), Vec3::Zero());
-}
-
-} // namespace libmv
diff --git a/extern/libmv/libmv/simple_pipeline/rigid_registration.h b/extern/libmv/libmv/simple_pipeline/rigid_registration.h
deleted file mode 100644
index 21ea57af507..00000000000
--- a/extern/libmv/libmv/simple_pipeline/rigid_registration.h
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright (c) 2012 libmv authors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to
-// deal in the Software without restriction, including without limitation the
-// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-// sell copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-// IN THE SOFTWARE.
-
-#ifndef LIBMV_SIMPLE_PIPELINE_RIGID_REGISTRATION_H_
-#define LIBMV_SIMPLE_PIPELINE_RIGID_REGISTRATION_H_
-
-#include "libmv/base/vector.h"
-#include "libmv/numeric/numeric.h"
-
-namespace libmv {
-
-/*!
- Searched for an affine transformation of rigid 3D object defined by it's
- vertices positions from it's current state called points to it's desired
- state called reference points.
-
- Returns rotation matrix, per-component scale vector and translation which
- transforms points to the mot close state to reference_points.
-
- Return value is an average squared distance between reference state
- and transformed one.
-
- Minimzation of distance between point pairs is used to register such a
- rigid transformation and algorithm assumes that pairs of points are
- defined by point's index in a vector, so points with the same index
- belongs to the same pair.
- */
-double RigidRegistration(const vector<Vec3> &reference_points,
- const vector<Vec3> &points,
- Mat3 &R,
- Vec3 &S,
- Vec3 &t);
-
-/*!
- * Same as RigidRegistration but provides registration of rotation and translation only
- */
-double RigidRegistration(const vector<Vec3> &reference_points,
- const vector<Vec3> &points,
- Mat3 &R,
- Vec3 &t);
-
-/*!
- * Same as RigidRegistration but provides registration of rotation only
- */
-double RigidRegistration(const vector<Vec3> &reference_points,
- const vector<Vec3> &points,
- Mat3 &R);
-
-} // namespace libmv
-
-#endif // LIBMV_SIMPLE_PIPELINE_RIGID_REGISTRATION_H_