// 全局BA /*********版权所有(C)2025,武汉高德红外股份有限公司*************************************** * 文件名称: Arith_BAProc.h * 文件标识:BA * 内容摘要:光束平差 * 其它说明: * 当前版本:V0.5 * 创建作者:04046wcw * 创建日期:2025/01/15 * 包含关系: *****************************************************************************************/ #pragma once #include "StitchStruct.h" #include #include #include "Arith_GeoStitcher.h" #include "Arith_FeaMatch.h" using cv::Mat_; class BA_Task { public: BA_Task(GeoStitcher* pGeoTrans); ~BA_Task(); // 加入优化帧 SINT32 addFrame(GD_VIDEO_FRAME_S img, FrameInfo para); // 设置全景参数 void setPanPara(PanInfo info); void Test(); // BA优化 void optimizeBA(); private: SINT32 CalMatchMat(float fiou_thre);//计算匹配性矩阵(以IOU约束) SINT32 GuideMatch(int i,int j);//外参指示下的匹配 private: GeoStitcher* _GeoStitcher;//外参计算 FeatureMatcher* _FeaMatcher;//特征匹配 PanInfo _panPara;//全景图配置 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);