#pragma once /*****************************************************************//** * \file TBPImageAlgCls.h * \brief BP成像算法 * * 参考资料 * 雷达成像技术, 邢孟道 * * 成像平面定义为 数据录取平面(P94, 雷达成像技术) * 数据录取平面定义为视线方向。 * * * \author 陈增辉 * \date October 2024 *********************************************************************/ //#define EIGEN_USE_BLAS //#define EIGEN_USE_LAPACK //#define EIGEN_ENABLE_AVX512 //#define EIGEN_VECTORIZE_SSE //#define EIGEN_VECTORIZE_SSE2 //#define EIGEN_VECTORIZE_SSSE3 //#define EIGEN_VECTORIZE_SSE4_1 //#define EIGEN_VECTORIZE_SSE4_2 #include "BaseConstVariable.h" #include "SARSatelliteSimulationAbstractCls.h" #include "SARSimulationTaskSetting.h" #include "SatelliteOribtModel.h" #include "EchoDataFormat.h" #include "SARSimulationImageL1.h" #include "LogInfoCls.h" class TBPImageAlgCls { private: std::shared_ptr L1ds; std::shared_ptr < EchoL0Dataset> L0ds; QString imagePlanePath; bool GPURUN; QString outRasterXYZPath; public: void setImagePlanePath(QString imagePlanePath); QString getImagePlanePath(); void setEchoL0(std::shared_ptr < EchoL0Dataset> L0ds); void setImageL1(std::shared_ptr L1ds); std::shared_ptr < EchoL0Dataset> getEchoL1(); std::shared_ptr getImageL0(); public: ErrorCode ProcessWithGridNet(long num_thread, QString xyzRasterPath); void setGPU(bool flag); bool getGPU(); private: //ErrorCode ProcessCPU(long num_thread); ErrorCode ProcessGPU(); ErrorCode BPProcessBlockGPU(); private://临时成员变量 QString TimeEchoDataPath; long TimeEchoRowCount; long TimeEchoColCount; void EchoFreqToTime(); private: bool checkZeros(double* data, long long len); };