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