RasterProcessTool/Toolbox/SimulationSARTool/SimulationSAR/RFPCProcessCls.h

101 lines
3.1 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#pragma once
/*****************************************************************//**
* \file RFPCProcessCls.h
* \brief 距离时域脉冲相干法Range Time domain Pulse Coherent处理流程与相关文件
*
* 参考资料
* 合成孔径雷达成像算法与实现cumming 洪文译, 第四章 合成孔径的概念
* 雷达信号处理基础Mark A.Richards,邢孟道译
* 合成孔径雷达成像原理,皮亦鸣
* InSAR原理与应用刘国祥
* 弹载SAR回波信号仿真研究林江红
* 星载合成孔径雷达原始回波数据模拟研究,吕辉
* SAR回波仿真信号生成算法的性能比较研究韦立登
* 星载合成孔径雷达影像正射校正方法研究,陈尔学
* 注:吕辉 多普勒计算公式 与 陈尔学的多普勒计算公式存在差异,中间省略了一些变换过程
*
*
* \author 陈增辉
* \date October 2024
*********************************************************************/
#include "BaseConstVariable.h"
#include "SARSatelliteSimulationAbstractCls.h"
#include "SARSimulationTaskSetting.h"
#include "SatelliteOribtModel.h"
#include "EchoDataFormat.h"
#include "SigmaDatabase.h"
#include <cuComplex.h>
/***** 工具函数 *******************************/
CUDA_AntSate_PtrList* malloc_AntSate_PtrList(long PRFCount);
void Free_AntSate_PtrList(CUDA_AntSate_PtrList* ant);
void COPY_AntStation_FROM_HOST_GPU(
std::shared_ptr<SatelliteOribtNode[]> sateOirbtNodes,
std::shared_ptr<CUDA_AntSate_PtrList> gpupptr,
long startPID,
long PRF_len
);
class RFPCProcessCls
{
public:
RFPCProcessCls();
~RFPCProcessCls();
public:
void setTaskSetting(std::shared_ptr < AbstractSARSatelliteModel> TaskSetting);
void setEchoSimulationDataSetting(std::shared_ptr < EchoL0Dataset> EchoSimulationData);
void setTaskFileName(QString EchoFileName);
void setDEMTiffPath(QString DEMTiffPath);
void setSloperPath(QString SloperPath);
void setLandCoverPath(QString LandCoverPath);
void setOutEchoPath(QString OutEchoPath);
private:
std::shared_ptr <AbstractSARSatelliteModel> TaskSetting; // 仿真任务设置
std::shared_ptr <EchoL0Dataset> EchoSimulationData; // 回波设置
std::shared_ptr<SigmaDatabase> SigmaDatabasePtr;
long PluseCount; // 脉冲数量
long PlusePoint; // 脉冲点数
QString LandCoverPath;
QString OutEchoPath; // 输出回波路径
QString TaskFileName;
QString tmpfolderPath;
QString OutEchoMaskPath;
public:
ErrorCode Process(long num_thread); // 处理
private: // 处理流程
ErrorCode InitParams();// 1. 初始化参数
ErrorCode InitEchoMaskArray();
//ErrorCode RFPCMainProcess(long num_thread);
ErrorCode RFPCMainProcess_GPU();
ErrorCode RFPCMainProcess_MultiGPU_NoAntPattern(); // 多GPU处理,不考虑天线方向图
ErrorCode RFPCMainProcess_GPU_NoAntPattern(size_t startprfid, size_t prfcount,int devId=0);
ErrorCode SaveBlockSimulationEchoArr(cuComplex* d_echoData, size_t prfcount, size_t freqNum, long startprfid);
std::shared_ptr<SatelliteOribtNode[]> getSatelliteOribtNodes(double prf_time, double dt, bool antflag, long double imageStarttime);
private:
QString demxyzPath;
QString demmaskPath;
QString demsloperPath;
};
void RFPCProcessMain(long num_thread,QString TansformPatternFilePath,QString ReceivePatternFilePath,QString simulationtaskName, QString OutEchoPath, QString GPSXmlPath,QString TaskXmlPath,
QString demTiffPath, QString sloperPath, QString LandCoverPath);