39 template <
typename real,
int dimension>
41 noOfSamples_ (0), accumulatedWeight_ (0),
42 mean_ (Eigen::Matrix<real, dimension, 1>::Identity ()),
43 covariance_ (Eigen::Matrix<real, dimension, dimension>::Identity ())
48 template <
typename real,
int dimension>
52 accumulatedWeight_ = 0.0;
57 template <
typename real,
int dimension>
63 accumulatedWeight_ += weight;
64 real alpha = weight/accumulatedWeight_;
66 Eigen::Matrix<real, dimension, 1> diff = sample - mean_;
67 covariance_ = (1.0f-alpha)*(covariance_ + alpha * (diff * diff.transpose()));
69 mean_ += alpha*(diff);
78 template <
typename real,
int dimension>
80 Eigen::Matrix<real, dimension, 1>& eigen_vector2, Eigen::Matrix<real, dimension, 1>& eigen_vector3)
const
93 Eigen::SelfAdjointEigenSolver<Eigen::Matrix<real, dimension, dimension> > ei_symm(covariance_);
94 eigen_values = ei_symm.eigenvalues();
95 Eigen::Matrix<real, dimension, dimension> eigen_vectors = ei_symm.eigenvectors();
97 eigen_vector1 = eigen_vectors.col(0);
98 eigen_vector2 = eigen_vectors.col(1);
99 eigen_vector3 = eigen_vectors.col(2);
102 template <
typename real,
int dimension>
111 Eigen::SelfAdjointEigenSolver<Eigen::Matrix<real, dimension, dimension> > ei_symm(covariance_,
false);
112 eigen_values = ei_symm.eigenvalues();
115 template <
typename real,
int dimension>
129 Eigen::SelfAdjointEigenSolver<Eigen::Matrix<real, dimension, dimension> > ei_symm(covariance_);
130 Eigen::Matrix<real, dimension, dimension> eigen_vectors = ei_symm.eigenvectors();
131 eigen_vector1 = eigen_vectors.col(0);
143 Eigen::Matrix<float, 3, 1>& eigen_vector2, Eigen::Matrix<float, 3, 1>& eigen_vector3)
const
146 Eigen::Matrix<float, 3, 3> eigen_vectors;
147 eigen33(covariance_, eigen_vectors, eigen_values);
148 eigen_vector1 = eigen_vectors.col(0);
149 eigen_vector2 = eigen_vectors.col(1);
150 eigen_vector3 = eigen_vectors.col(2);
162 Eigen::Vector3f::Scalar eigen_value;
163 Eigen::Vector3f eigen_vector;
164 eigen33(covariance_, eigen_value, eigen_vector);
165 eigen_vector1 = eigen_vector;
173 Eigen::Matrix<double, 3, 1>& eigen_vector2, Eigen::Matrix<double, 3, 1>& eigen_vector3)
const
176 Eigen::Matrix<double, 3, 3> eigen_vectors;
177 eigen33(covariance_, eigen_vectors, eigen_values);
178 eigen_vector1 = eigen_vectors.col(0);
179 eigen_vector2 = eigen_vectors.col(1);
180 eigen_vector3 = eigen_vectors.col(2);
192 Eigen::Vector3d::Scalar eigen_value;
193 Eigen::Vector3d eigen_vector;
194 eigen33(covariance_, eigen_value, eigen_vector);
195 eigen_vector1 = eigen_vector;