// 全局BA /*********版权所有(C)2025,武汉高德红外股份有限公司*************************************** * 文件名称: Arith_BAProc.h * 文件标识:BA * 内容摘要:光束平差 * 其它说明: * 当前版本:V0.5 * 创建作者:04046wcw * 创建日期:2025/01/15 * 包含关系: *****************************************************************************************/ #pragma once #include "StitchStruct.h" #include #include #include "Arith_GeoSolver.h" #include "Arith_FeaMatch.h" using cv::Mat_; class BA_Task { public: BA_Task(GeoSolver* pGeoTrans); ~BA_Task(); // 加入优化帧 SINT32 addFrame(GD_VIDEO_FRAME_S img, FrameInfo para); // BA优化 void optimizeBA(cv::Mat H_pan); // 使用地理系H矩阵和全景图H重投影所有帧 void remap(vector>H_Vec, cv::Mat_ H_pan, std::string winname); private: SINT32 CalMatchMat(float fiou_thre);//计算匹配性矩阵(以IOU约束) private: GeoSolver* _GeoStitcher;//外参计算 FeatureMatcher* _FeaMatcher;//特征匹配 private: Mat_ _MatchMat;//配准点邻接表 Mat_ _IOUMat;//交汇邻接表 vector> _origMatrix;//初始H矩阵 vector> _currMatrix;//当前H矩阵 //超大空间,考虑文件cache todo! private: vector _imgVec;//图像缓存 vector> _FeaPtVec;//特征点缓存 vector _FeaDespVec;//特征点描述子 vector _paraVec; vector> _polygon;//帧包围四边形 }; void drawPolygons(cv::Mat& image, const std::vector>& polygons);