// 全局BA /*********版权所有(C)2025,武汉高德红外股份有限公司*************************************** * 文件名称: Arith_BAProc.h * 文件标识:BA * 内容摘要:光束平差 * 其它说明: * 当前版本:V0.5 * 创建作者:04046wcw * 创建日期:2025/01/15 * 包含关系: *****************************************************************************************/ #pragma once #include "FileCache.h" #include "Arith_FeaMatch.h" //#define SHOW_MATCH class BA_Task { public: BA_Task(FileCache* cache); ~BA_Task(); // 初始化BA任务 void InitTask(); // 优化指定帧,并更新H到缓存中,H_map用于优化过程可视化 void OptFrame(vector frameInd, cv::Mat H_map); // 更新缓存中的帧H矩阵,并存储 bool updateCacheH(KeyType Key, cv::Mat H); private: // 从缓存读取指定帧信息(不需要图像) int readFrameInfo(vector frameInd); // 输出优化结果到cache int writeFrameInfo(); SINT32 CalMatchMat();//计算匹配性矩阵 // 调试图像 vector _imgVec;//图像缓存 vector _frameInd;//帧索引,BA模块按照线性存储,完成后利用索引更新实际帧。注意传入的索引有可能是空的,需要处理 FeatureMatcher* _FeaMatcher;//特征匹配 FileCache* _cache; Mat_ _MatchMat;//配准点邻接表 Mat_ _IOUMat;//交汇邻接表 vector> _origMatrix;//初始H矩阵 vector> _currMatrix;//当前H矩阵 vector> _polygon;//帧包围四边形 vector> _FeaPtVec;//特征点缓存 vector _FeaDespVec;//特征点描述子 vector _paraVec; private: // 调试:绘制匹配关系 void drawMatch(int i, int j, std::vector match,cv::Mat H_map); }; void drawPolygons(cv::Mat& image, const std::vector>& polygons);