2021SC@SDUSC
CorrespondenceChecker.h
注释中文部分是源码解读,分析和问题在源码之后
#include <Eigen/Core>
#include <memory>
#include <string>
#include <vector>
#include "open3d/pipelines/registration/TransformationEstimation.h"
namespace open3d {
namespace geometry {
class PointCloud;
}
namespace pipelines {
namespace registration {
// 类对应检查器class CorrespondenceChecker
// 检查两个(小)点云是否可以对齐的基类。
// 此类用于基于特征的匹配算法(如RANSAC和FastGlobalRegistration)中,以剪除异常值对应。
// 虚拟函数Check()必须在子类中实现。
class CorrespondenceChecker {
public:
// 默认构造函数。
// 指定是否需要点云对齐。
CorrespondenceChecker(bool require_pointcloud_alignment)
: require_pointcloud_alignment_(require_pointcloud_alignment) {
}
//析构函数
virtual ~CorrespondenceChecker() {
}
public:
//用于检查两点是否可以对齐的函数。
//两个输入点云必须具有完全相同的点数。
virtual bool Check(const geometry::PointCloud &source,
const geometry::PointCloud &target,
const CorrespondenceSet &corres,
const Eigen::Matrix4d &transformation) const = 0;
public:
// 某些检查器不需要对齐点云,例如,边长度检查器。有些检查器会这样做,例如距离检查器。
bool require_pointcloud_alignment_;
};
//类CorrespondenceCheckerBasedOnEdgeLength