colmap 0.1.2

A comprehensive Rust library for COLMAP-style computer vision and 3D reconstruction
Documentation
//! 特征提取和匹配模块
//!
//! 这个模块提供了完整的图像特征处理功能,包括特征检测、描述符提取和特征匹配。
//! 支持多种特征算法,如 SIFT、ORB、FAST 等,以及不同的匹配策略。
//!
//! # 主要组件
//!
//! - **特征检测器**:检测图像中的关键点
//! - **描述符提取器**:为关键点计算特征描述符
//! - **特征匹配器**:在不同图像间匹配特征点
//! - **几何验证**:使用几何约束验证匹配结果
//! - **处理流水线**:整合上述功能的完整处理流程
//!
//! # 使用示例
//!
//! ## 基本特征提取
//!
//! ```rust,ignore
//! use colmap::feature::*;
//! use colmap::core::*;
//!
//! // 创建 SIFT 检测器
//! let config = DetectorConfig::sift();
//! let detector = DetectorFactory::create(DetectorType::Sift, config)?;
//!
//! // 检测特征点
//! let keypoints = detector.detect(&image)?;
//! println!("检测到 {} 个特征点", keypoints.len());
//! # Ok::<(), ColmapError>(())
//! ```
//!
//! ## 特征匹配
//!
//! ```rust,ignore
//! use colmap::feature::*;
//!
//! // 创建匹配器
//! let config = MatcherConfig::default();
//! let matcher = MatcherFactory::create(MatcherType::BruteForce, config)?;
//!
//! // 匹配特征
//! let matches = matcher.match_features(&features1, &features2)?;
//! println!("找到 {} 个匹配", matches.len());
//! # Ok::<(), ColmapError>(())
//! ```
//!
//! ## 完整处理流水线
//!
//! ```rust,ignore
//! use colmap::feature::*;
//!
//! // 创建处理流水线
//! let pipeline = PipelineBuilder::new()
//!     .detector(DetectorType::Sift)
//!     .extractor(ExtractorType::Sift)
//!     .matcher(MatcherType::Flann)
//!     .geometric_verification(true)
//!     .build()?;
//!
//! // 处理图像对
//! let result = pipeline.process_image_pair(&image1, &image2)?;
//! println!("验证后的匹配数量: {}", result.verified_matches.len());
//! # Ok::<(), ColmapError>(())
//! ```


/// 特征检测器子模块
pub mod detector;

/// 描述符提取器子模块
pub mod descriptor;

/// 特征匹配器子模块
pub mod matcher;

/// SIFT 特征算法子模块
pub mod sift;

/// ORB 特征算法子模块
pub mod orb;

/// BRIEF 特征算法子模块
pub mod brief;

/// FAST 特征算法子模块
pub mod fast;

/// GPU 加速子模块
pub mod gpu;

/// 几何验证子模块
pub mod geometric;

/// 特征处理流水线子模块
pub mod pipeline;

// 重新导出主要类型和接口
pub use detector::{
    FeatureDetector, DetectorType, DetectorConfig, DetectorFactory,
    SiftDetector, OrbDetector, FastDetector, SurfDetector, HarrisDetector,
};

pub use fast::{FastDetector as AdvancedFastDetector, FastConfig};

pub use descriptor::{
    DescriptorExtractor, DescriptorType, ExtractorType, ExtractorConfig, ExtractorFactory,
    SiftExtractor, OrbExtractor, BriskExtractor,
};

pub use brief::BriefExtractor;

pub use gpu::{
    GpuBackend, GpuDevice, GpuConfig, GpuFeatureDetector, GpuDescriptorExtractor,
    GpuManager, GpuSiftDetector, GpuMemoryManager,
};

pub use matcher::{
    FeatureMatcher, FeatureMatch, MatcherType, DistanceType, MatcherConfig, MatcherFactory,
    BruteForceMatcher, FlannMatcher, RatioTestMatcher, CrossCheckMatcher,
};

pub use pipeline::{
    FeaturePipeline, PipelineConfig, PipelineBuilder,
    ExtractionResult, MatchingResult,
};

pub use geometric::{
    GeometricVerifier, GeometricConfig, GeometricResult, GeometricModel,
};
use serde::{Deserialize, Serialize};

/// 特征提取配置
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FeatureConfig {
    /// 检测器类型
    pub detector_type: DetectorType,
    /// 最大特征数量
    pub max_features: usize,
    /// 特征质量阈值
    pub quality_threshold: f32,
    /// 最小特征距离
    pub min_distance: f32,
}

impl Default for FeatureConfig {
    fn default() -> Self {
        Self {
            detector_type: DetectorType::Sift,
            max_features: 8000,
            quality_threshold: 0.01,
            min_distance: 3.0,
        }
    }
}

// DetectorType 已在 detector 模块中定义

/// 匹配配置
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MatchConfig {
    /// 最大匹配距离
    pub max_distance: f32,
    /// 比率测试阈值
    pub ratio_threshold: f32,
    /// 交叉检查
    pub cross_check: bool,
    /// 最大匹配数量
    pub max_matches: usize,
}

impl Default for MatchConfig {
    fn default() -> Self {
        Self {
            max_distance: 0.7,
            ratio_threshold: 0.8,
            cross_check: true,
            max_matches: 1000,
        }
    }
}

// GeometricConfig 已在 geometric 模块中定义