38 #ifndef PCL_COMMON_VECTOR_AVERAGE_IMPL_HPP_
39 #define PCL_COMMON_VECTOR_AVERAGE_IMPL_HPP_
43 template <
typename real,
int dimension>
49 template <
typename real,
int dimension>
53 accumulatedWeight_ = 0.0;
58 template <
typename real,
int dimension>
64 accumulatedWeight_ += weight;
65 real alpha = weight/accumulatedWeight_;
67 Eigen::Matrix<real, dimension, 1> diff = sample - mean_;
68 covariance_ = (covariance_ + (diff * diff.transpose())*alpha)*(1.0f-alpha);
70 mean_ += (diff)*alpha;
79 template <
typename real,
int dimension>
81 Eigen::Matrix<real, dimension, 1>& eigen_vector2, Eigen::Matrix<real, dimension, 1>& eigen_vector3)
const
94 Eigen::SelfAdjointEigenSolver<Eigen::Matrix<real, dimension, dimension> > ei_symm(covariance_);
95 eigen_values = ei_symm.eigenvalues();
96 Eigen::Matrix<real, dimension, dimension> eigen_vectors = ei_symm.eigenvectors();
98 eigen_vector1 = eigen_vectors.col(0);
99 eigen_vector2 = eigen_vectors.col(1);
100 eigen_vector3 = eigen_vectors.col(2);
103 template <
typename real,
int dimension>
112 Eigen::SelfAdjointEigenSolver<Eigen::Matrix<real, dimension, dimension> > ei_symm(covariance_,
false);
113 eigen_values = ei_symm.eigenvalues();
116 template <
typename real,
int dimension>
130 Eigen::SelfAdjointEigenSolver<Eigen::Matrix<real, dimension, dimension> > ei_symm(covariance_);
131 Eigen::Matrix<real, dimension, dimension> eigen_vectors = ei_symm.eigenvectors();
132 eigen_vector1 = eigen_vectors.col(0);
144 Eigen::Matrix<float, 3, 1>& eigen_vector2, Eigen::Matrix<float, 3, 1>& eigen_vector3)
const
147 Eigen::Matrix<float, 3, 3> eigen_vectors;
148 eigen33(covariance_, eigen_vectors, eigen_values);
149 eigen_vector1 = eigen_vectors.col(0);
150 eigen_vector2 = eigen_vectors.col(1);
151 eigen_vector3 = eigen_vectors.col(2);
163 Eigen::Vector3f::Scalar eigen_value;
164 Eigen::Vector3f eigen_vector;
165 eigen33(covariance_, eigen_value, eigen_vector);
166 eigen_vector1 = eigen_vector;
174 Eigen::Matrix<double, 3, 1>& eigen_vector2, Eigen::Matrix<double, 3, 1>& eigen_vector3)
const
177 Eigen::Matrix<double, 3, 3> eigen_vectors;
178 eigen33(covariance_, eigen_vectors, eigen_values);
179 eigen_vector1 = eigen_vectors.col(0);
180 eigen_vector2 = eigen_vectors.col(1);
181 eigen_vector3 = eigen_vectors.col(2);
193 Eigen::Vector3d::Scalar eigen_value;
194 Eigen::Vector3d eigen_vector;
195 eigen33(covariance_, eigen_value, eigen_vector);
196 eigen_vector1 = eigen_vector;