MVE - Multi-View Environment
mve-devel
Loading...
Searching...
No Matches
libs
sfm
ba_linear_solver.h
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2015, Simon Fuhrmann, Fabian Langguth
3
* TU Darmstadt - Graphics, Capture and Massively Parallel Computing
4
* All rights reserved.
5
*
6
* This software may be modified and distributed under the terms
7
* of the BSD 3-Clause license. See the LICENSE.txt file for details.
8
*/
9
10
#ifndef SFM_BA_LINEAR_SOLVER_HEADER
11
#define SFM_BA_LINEAR_SOLVER_HEADER
12
13
#include <vector>
14
15
#include "
sfm/defines.h
"
16
#include "
sfm/ba_sparse_matrix.h
"
17
#include "
sfm/ba_dense_vector.h
"
18
19
SFM_NAMESPACE_BEGIN
20
SFM_BA_NAMESPACE_BEGIN
21
22
class
LinearSolver
23
{
24
public
:
25
struct
Options
26
{
27
Options
(
void
);
28
29
double
trust_region_radius
;
30
int
cg_max_iterations
;
31
int
camera_block_dim
;
32
};
33
34
struct
Status
35
{
36
Status
(
void
);
37
38
double
predicted_error_decrease
;
39
int
num_cg_iterations
;
40
bool
success
;
41
};
42
43
typedef
SparseMatrix<double>
SparseMatrixType
;
44
typedef
DenseVector<double>
DenseVectorType
;
45
46
public
:
47
LinearSolver
(
Options
const
& options);
48
56
Status
solve (
SparseMatrixType
const
& jac_cams,
57
SparseMatrixType
const
& jac_points,
58
DenseVectorType
const
& vector_f,
59
DenseVectorType
* delta_x);
60
61
private
:
66
Status
solve_schur (
SparseMatrixType
const
& jac_cams,
67
SparseMatrixType
const
& jac_points,
68
DenseVectorType
const
& values,
69
DenseVectorType
* delta_x);
70
78
Status
solve (
SparseMatrixType
const
& J,
79
DenseVectorType
const
& vector_f,
80
DenseVectorType
* delta_x,
81
std::size_t block_size = 0);
82
83
private
:
84
Options
opts;
85
};
86
87
/* ------------------------ Implementation ------------------------ */
88
89
inline
90
LinearSolver::Options::Options (
void
)
91
: trust_region_radius(1.0)
92
, cg_max_iterations(1000)
93
{
94
}
95
96
inline
97
LinearSolver::Status::Status
(
void
)
98
: predicted_error_decrease(0.0)
99
, num_cg_iterations(0)
100
, success(false)
101
{
102
}
103
104
inline
105
LinearSolver::LinearSolver
(
Options
const
& options)
106
: opts(options)
107
{
108
}
109
110
SFM_BA_NAMESPACE_END
111
SFM_NAMESPACE_END
112
113
#endif
// SFM_BA_LINEAR_SOLVER_HEADER
114
ba_dense_vector.h
ba_sparse_matrix.h
sfm::ba::DenseVector
Definition
ba_dense_vector.h:24
sfm::ba::LinearSolver
Definition
ba_linear_solver.h:23
sfm::ba::LinearSolver::DenseVectorType
DenseVector< double > DenseVectorType
Definition
ba_linear_solver.h:44
sfm::ba::LinearSolver::LinearSolver
LinearSolver(Options const &options)
Definition
ba_linear_solver.h:105
sfm::ba::LinearSolver::SparseMatrixType
SparseMatrix< double > SparseMatrixType
Definition
ba_linear_solver.h:43
sfm::ba::SparseMatrix
Sparse matrix class in Yale format for column-major matrices.
Definition
ba_sparse_matrix.h:29
defines.h
SFM_BA_NAMESPACE_BEGIN
#define SFM_BA_NAMESPACE_BEGIN
Definition
defines.h:22
SFM_NAMESPACE_END
#define SFM_NAMESPACE_END
Definition
defines.h:14
SFM_NAMESPACE_BEGIN
#define SFM_NAMESPACE_BEGIN
Definition
defines.h:13
SFM_BA_NAMESPACE_END
#define SFM_BA_NAMESPACE_END
Definition
defines.h:23
sfm::ba::LinearSolver::Options
Definition
ba_linear_solver.h:26
sfm::ba::LinearSolver::Options::camera_block_dim
int camera_block_dim
Definition
ba_linear_solver.h:31
sfm::ba::LinearSolver::Options::cg_max_iterations
int cg_max_iterations
Definition
ba_linear_solver.h:30
sfm::ba::LinearSolver::Options::trust_region_radius
double trust_region_radius
Definition
ba_linear_solver.h:29
sfm::ba::LinearSolver::Status
Definition
ba_linear_solver.h:35
sfm::ba::LinearSolver::Status::predicted_error_decrease
double predicted_error_decrease
Definition
ba_linear_solver.h:38
sfm::ba::LinearSolver::Status::Status
Status(void)
Definition
ba_linear_solver.h:97
sfm::ba::LinearSolver::Status::num_cg_iterations
int num_cg_iterations
Definition
ba_linear_solver.h:39
sfm::ba::LinearSolver::Status::success
bool success
Definition
ba_linear_solver.h:40
Generated on Thu Dec 21 2023 01:53:38 for MVE - Multi-View Environment by
1.9.8