#pragma once #ifndef SARIMAGEBASE_H #define SARIMAGEBASE_H /** * 成像过程中常用的计算函数 ****/ #include "referenceHeader.h" #include "SARBaseTool.h" // ------------------------------------------- 成像 公用库---------------------------------------------------------- // SAR 常用计算的方法 double getRangeResolution(double startfreq, double endfreq); /// /// 方位向分辨率计算 /// /// 弧度制,方位角变化范围(>=0) /// 起始频率 /// double getAzimuthResolution(double AzAngleRange, double startFreq); // 根据输入数量构建汉明窗 Eigen::MatrixXd hammingWindows(size_t num); // 频率域汉明窗口 /// /// 频率域汉明窗口 /// /// 频率点数 /// 脉冲数量 /// 权重 /// 汉明窗权重 Eigen::MatrixXd Hanning(size_t Nf, size_t Nxa, double alpha = 0.54); /// /// 获取2的平方数,大于2 /// /// /// size_t nextpow2(size_t num); /// /// 对回波沿着行进行一维傅里叶逆变换 /// /// /// Eigen::MatrixXcd IFFTW1D(Eigen::MatrixXcd ECHO); /// /// 对回波沿着行进行一维傅里叶变换 /// /// /// Eigen::MatrixXcd FFTW1D(Eigen::MatrixXcd echo); Eigen::MatrixXcd FFTW2D(Eigen::MatrixXcd ECHO); Eigen::MatrixXcd fftshift(Eigen::MatrixXcd X); /// /// 对回波 加 hamming 窗 /// /// 频域的回波数据(PRFnum,Freqnum) /// Eigen::MatrixXcd HammingWindows(Eigen::MatrixXcd FreqEcho); /// /// 对回波进行一维插值(并行),不能用来处理极坐标 /// 插值方式为 实部虚部分别进行线性插值 /// /// 回波数据,(行数,列数):(PRFNUM,freqNUM) /// 回波的 原始频率列表 /// 回波的 插值频率列表 /// Eigen::MatrixXcd InterpFreqEcho(Eigen::MatrixXcd freqEcho, Eigen::VectorXd SourceFreqlist, Eigen::VectorXd interpFreqlist); /// /// 保存复数矩阵数据 为tiff, 其中,band 1: amp (linear) angle(radia) /// /// /// /// int WriteComplexData2Amp_Arg(QString out_tiff_path, Eigen::MatrixXcd data); /// /// 保存复数矩阵数据 为tiff, 其中,band 1: amp (dB) angle(radia) /// /// /// /// int WriteComplexData2AmpdB_Arg(QString out_tiff_path, Eigen::MatrixXcd data); // ---------------------------------------------------------------------------------------------------------- #endif