259 lines
7.3 KiB
C++
259 lines
7.3 KiB
C++
#pragma once
|
|
/*
|
|
* FEKO_SIMULAION_SAR_CLASS 是适配FEKO成像算法
|
|
* FEKOSimulationSARClass
|
|
*
|
|
*/
|
|
#ifndef FEKO_SIMULATION_SAR_CLASS_H
|
|
#define FEKO_SIMULATION_SAR_CLASS_H
|
|
|
|
#include "referenceHeader.h"
|
|
#include "OCCTBase.h"
|
|
#include "BaseToollib/GeoOperator.h"
|
|
#include "SARImage/FEKOBaseToolClass.h"
|
|
#include "SARBaseToolLib/SARImageBase.h"
|
|
|
|
#include <QObject>
|
|
|
|
namespace FEKOBase {
|
|
|
|
//==========================================================
|
|
// FEKO成像仿真参数类
|
|
//==========================================================
|
|
class FEKOSimulationDataparams:public QObject
|
|
{ // 仿真参数类
|
|
Q_OBJECT
|
|
|
|
public:
|
|
FEKOSimulationDataparams(QObject* parent=nullptr);
|
|
~FEKOSimulationDataparams();
|
|
|
|
signals:
|
|
void FEKOSimulationDataparamsChanged(); // 响应时间,作为一个参数分发
|
|
|
|
public: // 频率更新
|
|
void CalFEKOSimulationFreqParams(double centerFreq, double resolution, double bandWidth, double scenceRange, bool isResolution = false);
|
|
void updateFEKOSimulationFreqParams(double startfreq, double endfreq, size_t freqpoints);
|
|
|
|
|
|
public:
|
|
void loadXml(const QString& fileName);
|
|
void saveXml(const QString& fileName);
|
|
|
|
|
|
public: // 属性字段
|
|
QString taskName; // 任务名称
|
|
FEKOImageMode imagemode; // 成像时间
|
|
QString AntennaRadiationFileName; // 远程天线等效辐射方向图文件地址
|
|
long farsource_thetaPoints;
|
|
long farsource_phiPoints;
|
|
|
|
|
|
bool isRight = false; // 是否为右视
|
|
double refRange;// 参考距离 m
|
|
double incangle; // 入射角 °
|
|
|
|
double centerFreq; // 中心频率
|
|
double rangeResolution;//分辨率
|
|
double bandwidth;// 带宽
|
|
|
|
double startfreq; // 频率参数
|
|
double endfreq;
|
|
double freqpoints;
|
|
|
|
|
|
//成像场景设置
|
|
double x_min;
|
|
double x_max;
|
|
double y_min;
|
|
double y_max;
|
|
double z_plane;
|
|
|
|
size_t imageheight; // 图像高度
|
|
size_t imagewidth; // 图像宽度
|
|
|
|
// 条带模式参数
|
|
size_t prfcount; // 脉冲数量
|
|
double start_x;
|
|
double end_x;
|
|
double start_y;
|
|
double end_y;
|
|
double start_z;
|
|
double end_z;
|
|
|
|
// 扫描模式参数
|
|
double start_az_angle; // 扫描起始角
|
|
double end_az_angle; // 扫描终止角
|
|
|
|
|
|
// ISAR模式参数 , 圆迹模式参数
|
|
double start_circle_angle; // 起始扫描角
|
|
double end_circle_angle; // 终止扫描角
|
|
double delta_angle;// 扫描角间隔
|
|
|
|
public:
|
|
void setTaskName(QString taskName);
|
|
QString getTaskName();
|
|
// 成像模式
|
|
void setImagemode(FEKOImageMode imagemode);
|
|
FEKOImageMode getImagemode();
|
|
// 是否为右视
|
|
void setIsRight(bool isRight);
|
|
bool getIsRight();
|
|
// 参考距离
|
|
void setRefRange(double refRange);
|
|
double getRefRange();
|
|
// 入射角
|
|
void setIncangle(double incangle);
|
|
double getIncangle();
|
|
// 中心频率
|
|
void setCenterFreq(double centerFreq);
|
|
double getCenterFreq();
|
|
// 分辨率
|
|
void setRangeResolution(double rangeResolution);
|
|
double getRangeResolution();
|
|
// 带宽
|
|
void setBandwidth(double bandwidth);
|
|
double getBandwidth();
|
|
// 频率参数
|
|
void setStartfreq(double startfreq);
|
|
double getStartfreq();
|
|
void setEndfreq(double endfreq);
|
|
double getEndfreq();
|
|
void setFreqpoints(double freqpoints);
|
|
double getFreqpoints();
|
|
// 成像范围
|
|
void setX_min(double x_min);
|
|
double getX_min();
|
|
void setX_max(double x_max);
|
|
double getX_max();
|
|
void setY_min(double y_min);
|
|
double getY_min();
|
|
void setY_max(double y_max);
|
|
double getY_max();
|
|
void setZ_plane(double z_plane);
|
|
double getZ_plane();
|
|
// 图像高度
|
|
void setImageheight(size_t imageheight);
|
|
size_t getImageheight();
|
|
// 图像宽度
|
|
void setImagewidth(size_t imagewidth);
|
|
size_t getImagewidth();
|
|
// 条带模式参数
|
|
void setPRFCount(size_t prfcount);
|
|
size_t getPRFCount();
|
|
void setStart_x(double start_x);
|
|
double getStart_x();
|
|
void setEnd_x(double end_x);
|
|
double getEnd_x();
|
|
void setStart_y(double start_y);
|
|
double getStart_y();
|
|
void setEnd_y(double end_y);
|
|
double getEnd_y();
|
|
void setStart_z(double start_z);
|
|
double getStart_z();
|
|
void setEnd_z(double end_z);
|
|
double getEnd_z();
|
|
double getStart_az_angle(); // 扫描起始角
|
|
double getEnd_az_angle(); // 扫描终止角
|
|
double getStart_circle_angle(); // 起始扫描角
|
|
double getEnd_circle_angle(); // 终止扫描角
|
|
double getDelta_angle();// 扫描角间隔
|
|
|
|
void setStart_az_angle(double Start_az_angle); // 扫描起始角
|
|
void setEnd_az_angle(double End_az_angle); // 扫描终止角
|
|
void setStart_circle_angle(double Start_circle_angle); // 起始扫描角
|
|
void setEnd_circle_angle(double End_circle_angle); // 终止扫描角
|
|
void setDelta_angle(double Delta_angle);// 扫描角间隔
|
|
|
|
QString getAntennaRadiationFileName();
|
|
void setAntennaRadiationFileName( QString path);
|
|
long getFarsourceThetaPoints();
|
|
void setFarsourceThetaPoints(long thetaPoints);
|
|
long getFarsourcePhiPoints();
|
|
void setFarsourcePhiPoints(long phiPoints);
|
|
|
|
};
|
|
|
|
class FEKOSimulationDataparamsHandler {
|
|
|
|
public:
|
|
FEKOSimulationDataparamsHandler();
|
|
~FEKOSimulationDataparamsHandler();
|
|
public:
|
|
std::shared_ptr<FEKOBase::FEKOSimulationDataparams> simulationparams;
|
|
void setFEKOSimulationDataparams(std::shared_ptr<FEKOBase::FEKOSimulationDataparams> simulationparams);
|
|
std::shared_ptr<FEKOBase::FEKOSimulationDataparams> getFEKOSimulationDataparams();
|
|
|
|
public:
|
|
virtual void bandingsetFEKOSimulationDataparams();
|
|
};
|
|
|
|
//==========================================================
|
|
// FEKO仿真成像参数类
|
|
// 解析成像参数xml
|
|
//==========================================================
|
|
class FEKOSimulationSARClass : public FEKOSimulationDataparamsHandler
|
|
{
|
|
public:
|
|
FEKOSimulationSARClass();
|
|
~FEKOSimulationSARClass();
|
|
|
|
public:
|
|
std::vector<FEKOBase::FEKOSatelliteParams> FEKOAntPoselist;// FEKO的天线参数设置
|
|
void setFEKOAntPoselist(std::vector<FEKOBase::FEKOSatelliteParams> FEKOAntPoselist); // FEKO的天线参数设置
|
|
std::vector<FEKOBase::FEKOSatelliteParams> getFEKOAntPoselist();
|
|
|
|
public:
|
|
void generator_STRIP_FEKOSatelliteParams();
|
|
void generator_SCAN_FEKOSatelliteParams();
|
|
void generator_ISAR_FEKOSatelliteParams();
|
|
void generator_CircleSAR_FEKOSatelliteParams();
|
|
void generator_FEKOSatelliteParams();
|
|
|
|
virtual void refreshFEKOSimulationParams();
|
|
|
|
public:
|
|
QString workSpace; // 工作空间
|
|
QString AntennaRadiationPath; // 远程天线等效辐射方向图文件地址
|
|
QString xmlpath;
|
|
public : // 初始化模型
|
|
void loadFEKOImageSettingXML(QString xmlpath);
|
|
void saveFEKOImageSettingXML();
|
|
QString createLuaSciptString(size_t startprfidx, size_t endprfidx);
|
|
};
|
|
|
|
//==========================================================
|
|
// FEKO成像
|
|
//==========================================================
|
|
|
|
bool FEKOImageProcess(EchoDataClass& echodata, FEKOImageSettingParams& imageSettingParams, QString& outPath, FEKOImageAlgorithm algmethod = FEKOImageAlgorithm::TBP_FREQ, ImageAlgWindowFun winfun = ImageAlgWindowFun::HANMMING);
|
|
|
|
class FEKOImageProcessAbstractClass {
|
|
|
|
public:
|
|
FEKOImageProcessAbstractClass();
|
|
~FEKOImageProcessAbstractClass();
|
|
private:
|
|
EchoDataClass echodata; // 原始回波数据 -
|
|
FEKOImageSettingParams imageSettingParams; // 成像参数
|
|
FEKOImageAlgorithm algmethod; // 成像算法
|
|
QString tiffPath;
|
|
public:
|
|
// 构建与成员变量有关的属性函数
|
|
void setEchoData(EchoDataClass echodata);
|
|
EchoDataClass getEchoData() const;
|
|
void setImageSettingParams(FEKOImageSettingParams imageSettingParams);
|
|
FEKOImageSettingParams getImageSettingParams();
|
|
void setAlgmethod(FEKOImageAlgorithm algmethod);
|
|
FEKOImageAlgorithm getAlgmethod();
|
|
void settiffPath(QString outtiffPath);
|
|
QString gettiffPath();
|
|
void LoadEchoDataPath(QString echoPath);
|
|
public: // 成像参数
|
|
bool Imageprocess();
|
|
};
|
|
};
|
|
|
|
|
|
#endif |