cpp-toolbox  0.0.1
A toolbox library for C++
Loading...
Searching...
No Matches
对应点生成 / Correspondence Generation

Functions

template<typename DataType , typename Signature , typename KNN >
std::vector< correspondence_ttoolbox::pcl::generate_correspondences_knn (const std::shared_ptr< toolbox::types::point_cloud_t< DataType > > &src_cloud, const std::shared_ptr< std::vector< Signature > > &src_descriptors, const std::shared_ptr< std::vector< std::size_t > > &src_keypoints, const std::shared_ptr< toolbox::types::point_cloud_t< DataType > > &dst_cloud, const std::shared_ptr< std::vector< Signature > > &dst_descriptors, const std::shared_ptr< std::vector< std::size_t > > &dst_keypoints, float ratio=0.8f, bool mutual=true)
 对应关系生成策略 / Correspondence generation strategies
 
template<typename DataType , typename Signature >
std::vector< correspondence_ttoolbox::pcl::generate_correspondences_brute_force (const std::shared_ptr< toolbox::types::point_cloud_t< DataType > > &src_cloud, const std::shared_ptr< std::vector< Signature > > &src_descriptors, const std::shared_ptr< std::vector< std::size_t > > &src_keypoints, const std::shared_ptr< toolbox::types::point_cloud_t< DataType > > &dst_cloud, const std::shared_ptr< std::vector< Signature > > &dst_descriptors, const std::shared_ptr< std::vector< std::size_t > > &dst_keypoints, float ratio=0.8f, bool mutual=true, bool parallel=false)
 快速生成对应关系的便捷函数(使用暴力搜索) / Convenience function for quick correspondence generation (using brute force)
 
size_t toolbox::pcl::filter_correspondences_by_distance (std::vector< correspondence_t > &correspondences, float max_distance)
 过滤对应关系的辅助函数 / Helper function to filter correspondences
 
std::tuple< float, float, float, float > toolbox::pcl::compute_correspondence_statistics (const std::vector< correspondence_t > &correspondences)
 计算对应关系的统计信息 / Compute statistics of correspondences
 
void toolbox::pcl::print_correspondences (const std::vector< correspondence_t > &correspondences, size_t max_display=10)
 可视化对应关系的辅助信息 / Helper to visualize correspondence information
 

Detailed Description

Function Documentation

◆ compute_correspondence_statistics()

std::tuple< float, float, float, float > toolbox::pcl::compute_correspondence_statistics ( const std::vector< correspondence_t > &  correspondences)
inline

计算对应关系的统计信息 / Compute statistics of correspondences

Parameters
correspondences对应关系列表 / List of correspondences
Returns
包含均值、标准差、最小值、最大值的元组 / Tuple of mean, std, min, max
auto [mean, std, min, max] = compute_correspondence_statistics(correspondences);
std::cout << "距离统计 / Distance statistics: "
<< "均值 / mean=" << mean
<< ", 标准差 / std=" << std
<< ", 范围 / range=[" << min << ", " << max << "]" << std::endl;
std::tuple< float, float, float, float > compute_correspondence_statistics(const std::vector< correspondence_t > &correspondences)
计算对应关系的统计信息 / Compute statistics of correspondences
Definition correspondence.hpp:227

◆ filter_correspondences_by_distance()

size_t toolbox::pcl::filter_correspondences_by_distance ( std::vector< correspondence_t > &  correspondences,
float  max_distance 
)
inline

过滤对应关系的辅助函数 / Helper function to filter correspondences

Parameters
correspondences[in/out] 对应关系列表 / List of correspondences
max_distance最大允许距离 / Maximum allowed distance
Returns
被过滤掉的对应关系数量 / Number of filtered correspondences
// 过滤掉距离过大的对应关系 / Filter out correspondences with large distances
size_t filtered = filter_correspondences_by_distance(correspondences, 0.5f);
std::cout << "过滤掉 / Filtered out " << filtered << " 个对应关系 / correspondences" << std::endl;
size_t filter_correspondences_by_distance(std::vector< correspondence_t > &correspondences, float max_distance)
过滤对应关系的辅助函数 / Helper function to filter correspondences
Definition correspondence.hpp:198

◆ generate_correspondences_brute_force()

template<typename DataType , typename Signature >
std::vector< correspondence_t > toolbox::pcl::generate_correspondences_brute_force ( const std::shared_ptr< toolbox::types::point_cloud_t< DataType > > &  src_cloud,
const std::shared_ptr< std::vector< Signature > > &  src_descriptors,
const std::shared_ptr< std::vector< std::size_t > > &  src_keypoints,
const std::shared_ptr< toolbox::types::point_cloud_t< DataType > > &  dst_cloud,
const std::shared_ptr< std::vector< Signature > > &  dst_descriptors,
const std::shared_ptr< std::vector< std::size_t > > &  dst_keypoints,
float  ratio = 0.8f,
bool  mutual = true,
bool  parallel = false 
)

快速生成对应关系的便捷函数(使用暴力搜索) / Convenience function for quick correspondence generation (using brute force)

Template Parameters
DataType数据类型 / Data type
Signature描述子签名类型 / Descriptor signature type
Parameters
src_cloud源点云 / Source point cloud
src_descriptors源描述子 / Source descriptors
src_keypoints源关键点索引 / Source keypoint indices
dst_cloud目标点云 / Target point cloud
dst_descriptors目标描述子 / Target descriptors
dst_keypoints目标关键点索引 / Target keypoint indices
ratio比率测试阈值(默认0.8) / Ratio test threshold (default 0.8)
mutual是否启用双向验证(默认true) / Whether to enable mutual verification (default true)
parallel是否启用并行计算(默认false) / Whether to enable parallel computation (default false)
Returns
对应关系列表 / List of correspondences
// 使用暴力搜索生成对应关系 / Generate correspondences using brute force
auto correspondences = generate_correspondences_brute_force<float, fpfh_signature_t<float>>(
src_cloud, src_descriptors, src_keypoints,
dst_cloud, dst_descriptors, dst_keypoints,
0.8f, true, true); // 启用并行 / Enable parallel

◆ generate_correspondences_knn()

template<typename DataType , typename Signature , typename KNN >
std::vector< correspondence_t > toolbox::pcl::generate_correspondences_knn ( const std::shared_ptr< toolbox::types::point_cloud_t< DataType > > &  src_cloud,
const std::shared_ptr< std::vector< Signature > > &  src_descriptors,
const std::shared_ptr< std::vector< std::size_t > > &  src_keypoints,
const std::shared_ptr< toolbox::types::point_cloud_t< DataType > > &  dst_cloud,
const std::shared_ptr< std::vector< Signature > > &  dst_descriptors,
const std::shared_ptr< std::vector< std::size_t > > &  dst_keypoints,
float  ratio = 0.8f,
bool  mutual = true 
)

对应关系生成策略 / Correspondence generation strategies

不同的策略适用于不同的场景: Different strategies are suitable for different scenarios:

  • 最近邻匹配:简单快速,但可能产生很多错误匹配 / Nearest neighbor: Simple and fast, but may produce many false matches
  • 比率测试:Lowe's ratio test,有效减少错误匹配 / Ratio test: Lowe's ratio test, effectively reduces false matches
  • 双向验证:要求匹配是相互的,进一步提高准确性 / Mutual verification: Requires mutual matching, further improves accuracy
  • 几何一致性:检查匹配的几何关系,最可靠但计算量大 / Geometric consistency: Checks geometric relationships, most reliable but computationally intensive
// 配置对应点生成器 / Configure correspondence generator
// 宽松匹配(更多对应点,可能有错误) / Loose matching (more correspondences, possibly with errors)
gen.set_ratio(0.9f);
// 严格匹配(更少但更可靠的对应点) / Strict matching (fewer but more reliable correspondences)
gen.set_ratio(0.7f);
void set_ratio(float ratio)
设置比率测试阈值 / Set ratio test threshold
Definition base_correspondence_generator.hpp:111
void set_distance_threshold(float distance_threshold)
设置距离阈值 / Set distance threshold
Definition base_correspondence_generator.hpp:138
void set_mutual_verification(bool mutual_verification)
设置是否启用双向验证 / Set whether to enable mutual verification
Definition base_correspondence_generator.hpp:123
基于KNN的对应点生成器 / KNN-based correspondence generator
Definition knn_correspondence_generator.hpp:50

快速生成对应关系的便捷函数(使用KNN) / Convenience function for quick correspondence generation (using KNN)

Template Parameters
DataType数据类型 / Data type
Signature描述子签名类型 / Descriptor signature type
KNNKNN搜索算法类型 / KNN search algorithm type
Parameters
src_cloud源点云 / Source point cloud
src_descriptors源描述子 / Source descriptors
src_keypoints源关键点索引 / Source keypoint indices
dst_cloud目标点云 / Target point cloud
dst_descriptors目标描述子 / Target descriptors
dst_keypoints目标关键点索引 / Target keypoint indices
ratio比率测试阈值(默认0.8) / Ratio test threshold (default 0.8)
mutual是否启用双向验证(默认true) / Whether to enable mutual verification (default true)
Returns
对应关系列表 / List of correspondences
// 使用KNN快速生成对应关系 / Quick correspondence generation using KNN
auto correspondences = generate_correspondences_knn<float, fpfh_signature_t<float>, kdtree_t<fpfh_signature_t<float>>>(
src_cloud, src_descriptors, src_keypoints,
dst_cloud, dst_descriptors, dst_keypoints,
0.8f, true);
Definition kdtree.hpp:14

◆ print_correspondences()

void toolbox::pcl::print_correspondences ( const std::vector< correspondence_t > &  correspondences,
size_t  max_display = 10 
)
inline

可视化对应关系的辅助信息 / Helper to visualize correspondence information

Parameters
correspondences对应关系列表 / List of correspondences
max_display最多显示的对应关系数量 / Maximum number of correspondences to display
// 打印前10个对应关系 / Print first 10 correspondences
print_correspondences(correspondences, 10);
void print_correspondences(const std::vector< correspondence_t > &correspondences, size_t max_display=10)
可视化对应关系的辅助信息 / Helper to visualize correspondence information
Definition correspondence.hpp:267