增加地距仿真

pull/13/head
陈增辉 2025-03-12 12:15:26 +08:00
parent 7e5d390934
commit 4582ccc8d5
12 changed files with 613 additions and 5 deletions

View File

@ -679,4 +679,26 @@ void initializeMatrixWithSSE2(Eigen::MatrixXf& mat, const float* data, long rowc
}
}
Eigen::MatrixXd BASECONSTVARIABLEAPI MuhlemanSigmaArray(Eigen::MatrixXd& eta_deg)
{
Eigen::MatrixXd sigma = Eigen::MatrixXd::Zero(eta_deg.rows(), eta_deg.cols());
for (long i = 0; i < sigma.rows(); i++) {
for (long j = 0; j < sigma.cols(); j++) {
sigma(i,j) = calculate_MuhlemanSigma(eta_deg(i, j));
}
}
return sigma;
}
Eigen::MatrixXd BASECONSTVARIABLEAPI dB2Amp(Eigen::MatrixXd& sigma0)
{
Eigen::MatrixXd sigma = Eigen::MatrixXd::Zero(sigma0.rows(), sigma0.cols());
for (long i = 0; i < sigma.rows(); i++) {
for (long j = 0; j < sigma.cols(); j++) {
sigma(i, j) =std::pow(10.0, sigma0(i,j)/20.0);
}
}
return sigma;
}

View File

@ -129,10 +129,24 @@ Eigen::VectorXd BASECONSTVARIABLEAPI linspace(double start, double stop, int nu
void initializeMatrixWithSSE2(Eigen::MatrixXd& mat, const double* data, long rowcount, long colcount);
void initializeMatrixWithSSE2(Eigen::MatrixXf& mat, const float* data, long rowcount, long colcount);
Eigen::MatrixXd BASECONSTVARIABLEAPI MuhlemanSigmaArray(Eigen::MatrixXd& eta_deg);
Eigen::MatrixXd BASECONSTVARIABLEAPI dB2Amp(Eigen::MatrixXd& sigma0);
/** 模板函数类 ***********************************************************************************************************/
inline double calculate_MuhlemanSigma(double eta_deg) {
const double eta_rad = eta_deg * M_PI / 180.0; // 角度转弧度
const double cos_eta = std::cos(eta_rad);
const double sin_eta = std::sin(eta_rad);
const double denominator = sin_eta + 0.1 * cos_eta;
return (0.0133 * cos_eta) / std::pow(denominator, 3);
}
template<typename T>
inline void memsetInitArray(std::shared_ptr<T> ptr, long arrcount,T ti) {
for (long i = 0; i < arrcount; i++) {

View File

@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>1002</width>
<height>400</height>
<width>676</width>
<height>305</height>
</rect>
</property>
<property name="windowTitle">

View File

@ -0,0 +1,171 @@
#include "QtSimulationGeoSARSigma0Dialog.h"
#include "ui_QtSimulationGeoSARSigma0Dialog.h"
#include <QFileDialog>
#include <QMessageBox>
#include "BaseTool.h"
#include "SigmaDatabase.h"
#include <ImageOperatorBase.h>
QtSimulationGeoSARSigma0Dialog::QtSimulationGeoSARSigma0Dialog(QWidget *parent)
: QDialog(parent), ui(new Ui::QtSimulationGeoSARSigma0DialogClass)
{
ui->setupUi(this);
// 连接信号和槽
connect(ui->buttonBox, SIGNAL(accepted()), this, SLOT(onbtnaccepted()));
connect(ui->buttonBox, SIGNAL(rejected()), this, SLOT(onbtnrejected()));
connect(ui->InputIncAngleRasterBtn, SIGNAL(clicked(bool)), this, SLOT(onpushButtonIncAngleRasterClicked(bool)));
connect(ui->InputLandClsRasterBtn, SIGNAL(clicked(bool)), this, SLOT(onpushButtonLandClsRasterClicked(bool)));
connect(ui->InputClsWeightRasterBtn, SIGNAL(clicked(bool)), this, SLOT(onpushButtonClsWeightRasterClicked(bool)));
connect(ui->OutputTerrianRasterBtn, SIGNAL(clicked(bool)), this, SLOT(onpushButtonOutputTerrianRasterClicked(bool)));
connect(ui->OutputClsSARRasterBtn, SIGNAL(clicked(bool)), this, SLOT(onpushButtonOutputClsSARRasterClicked(bool)));
}
QtSimulationGeoSARSigma0Dialog::~QtSimulationGeoSARSigma0Dialog()
{}
void QtSimulationGeoSARSigma0Dialog::onpushButtonIncAngleRasterClicked(bool)
{
QString fileName = QFileDialog::getOpenFileName(
this, // 父窗口
tr(u8"选择影像"), // 标题
QString(), // 默认路径
tr(u8"tif Files (*.tif);;data Files (*.data);;bin Files (*.bin);;All Files (*)") // 文件过滤器
);
// 如果用户选择了文件
if (!fileName.isEmpty()) {
this->ui->InputIncAngleRasterLineEdit->setText(fileName);
}
else {
QMessageBox::information(this, tr(u8"没有选择文件"), tr(u8"没有选择任何文件。"));
}
}
void QtSimulationGeoSARSigma0Dialog::onpushButtonLandClsRasterClicked(bool)
{
QString fileName = QFileDialog::getOpenFileName(
this, // 父窗口
tr(u8"选择影像"), // 标题
QString(), // 默认路径
tr(u8"tif Files (*.tif);;data Files (*.data);;bin Files (*.bin);;All Files (*)") // 文件过滤器
);
// 如果用户选择了文件
if (!fileName.isEmpty()) {
this->ui->InputLandClsRasterLineEdit->setText(fileName);
}
else {
QMessageBox::information(this, tr(u8"没有选择文件"), tr(u8"没有选择任何文件。"));
}
}
void QtSimulationGeoSARSigma0Dialog::onpushButtonClsWeightRasterClicked(bool)
{
QString fileName = QFileDialog::getOpenFileName(
this, // 父窗口
tr(u8"选择影像"), // 标题
QString(), // 默认路径
tr(u8"tif Files (*.tif);;data Files (*.data);;bin Files (*.bin);;All Files (*)") // 文件过滤器
);
// 如果用户选择了文件
if (!fileName.isEmpty()) {
this->ui->InputClsWeightRasterLineEdit->setText(fileName);
}
else {
QMessageBox::information(this, tr(u8"没有选择文件"), tr(u8"没有选择任何文件。"));
}
}
void QtSimulationGeoSARSigma0Dialog::onpushButtonOutputTerrianRasterClicked(bool)
{
QString fileName = QFileDialog::getSaveFileName(
this, // 父窗口
tr(u8"选择影像"), // 标题
QString(), // 默认路径
tr(u8"tif Files (*.tif);;data Files (*.data);;bin Files (*.bin);;All Files (*)") // 文件过滤器
);
// 如果用户选择了文件
if (!fileName.isEmpty()) {
this->ui->OutputTerrianRasterLineEdit->setText(fileName);
}
else {
QMessageBox::information(this, tr(u8"没有选择文件"), tr(u8"没有选择任何文件。"));
}
}
void QtSimulationGeoSARSigma0Dialog::onpushButtonOutputClsSARRasterClicked(bool)
{
QString fileName = QFileDialog::getSaveFileName(
this, // 父窗口
tr(u8"选择影像"), // 标题
QString(), // 默认路径
tr(u8"tif Files (*.tif);;data Files (*.data);;bin Files (*.bin);;All Files (*)") // 文件过滤器
);
// 如果用户选择了文件
if (!fileName.isEmpty()) {
this->ui->OutputClsSARRasterLineEdit->setText(fileName);
}
else {
QMessageBox::information(this, tr(u8"没有选择文件"), tr(u8"没有选择任何文件。"));
}
}
void QtSimulationGeoSARSigma0Dialog::onbtnaccepted()
{
// 参数文件
QString IncAngleRaster = this->ui->InputIncAngleRasterLineEdit->text(); // 输入入射角文件
QString LandClsRaster = this->ui->InputLandClsRasterLineEdit->text(); // 输入地表覆盖分类文件
QString ClsWeightRaster = this->ui->InputClsWeightRasterLineEdit->text();// 输入 SigmaDatabase 权重文件
QString OutputTerrianRaster = this->ui->OutputTerrianRasterLineEdit->text(); // 输出入射角仿真SAR文件
QString OutputClsSARRaster = this->ui->OutputClsSARRasterLineEdit->text();// 输出地表覆盖分类仿真SAR文件
// 创建输出文件,其中输出文件的大小和输入文件的大小一致,复制输入文件到输出文件,并把文件置零
gdalImage IncAngle(IncAngleRaster);
gdalImage LandCls(LandClsRaster);
SigmaDatabase sigmads;
sigmads.readParamsFromFile(ClsWeightRaster.toStdString());
// 创建输出文件
QFile::copy(IncAngleRaster, OutputTerrianRaster);
QFile::copy(IncAngleRaster, OutputClsSARRaster);
gdalImage OutputTerrian(OutputTerrianRaster);
gdalImage OutputClsSAR(OutputClsSARRaster);
// 读取输入文件
Eigen::MatrixXd IncAngleData = IncAngle.getData(0, 0, IncAngle.height, IncAngle.width, 0);
Eigen::MatrixXd LandClsData = LandCls.getData(0, 0, LandCls.height, LandCls.width, 0);
Eigen::MatrixXd SigmaSARData = MuhlemanSigmaArray(IncAngleData);
Eigen::MatrixXd SigmaSARDataCls = SigmaSARData;
OutputTerrian.saveImage(SigmaSARData, 0, 0, 1);
for (long i = 0; i < LandClsData.rows(); i++)
{
for (long j = 0; j < LandClsData.cols(); j++)
{
double weight = sigmads.getAmpHH(LandClsData(i, j),IncAngleData(i,j)*d2r);
SigmaSARDataCls(i, j) = std::pow(10.0, weight/20.0);
}
}
OutputClsSAR.saveImage(SigmaSARDataCls, 0, 0, 1);
QMessageBox::information(nullptr, u8"提示", u8"completed!!!");
}
void QtSimulationGeoSARSigma0Dialog::onbtnrejected()
{
this->close();
}

View File

@ -0,0 +1,33 @@
#pragma once
#include <QDialog>
namespace Ui
{
class QtSimulationGeoSARSigma0DialogClass;
}
class QtSimulationGeoSARSigma0Dialog : public QDialog
{
Q_OBJECT
public:
QtSimulationGeoSARSigma0Dialog(QWidget *parent = nullptr);
~QtSimulationGeoSARSigma0Dialog();
// 根据QtSimulationGeoSARSigma0DialogClass种的控件声明相应的槽函数
public slots:
void onpushButtonIncAngleRasterClicked(bool);
void onpushButtonLandClsRasterClicked(bool);
void onpushButtonClsWeightRasterClicked(bool);
void onpushButtonOutputTerrianRasterClicked(bool);
void onpushButtonOutputClsSARRasterClicked(bool);
void onbtnaccepted();
void onbtnrejected();
private:
Ui::QtSimulationGeoSARSigma0DialogClass* ui;
};

View File

@ -0,0 +1,243 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>QtSimulationGeoSARSigma0DialogClass</class>
<widget class="QDialog" name="QtSimulationGeoSARSigma0DialogClass">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>451</width>
<height>400</height>
</rect>
</property>
<property name="windowTitle">
<string>QtSimulationGeoSARSigma0Dialog</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QFrame" name="frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="label_7">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
<property name="text">
<string>入射角影像:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="InputIncAngleRasterLineEdit">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
<property name="text">
<string>D:\FZSimulation\LT1A\L20250210\LT1_Simulation_OrbitModel.xml</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QPushButton" name="InputIncAngleRasterBtn">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
<property name="text">
<string>选择</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_9">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
<property name="text">
<string>地表覆盖影像:</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="InputLandClsRasterLineEdit">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QPushButton" name="InputLandClsRasterBtn">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
<property name="text">
<string>选择</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_10">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
<property name="text">
<string>权重文件:</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="InputClsWeightRasterLineEdit">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QPushButton" name="InputClsWeightRasterBtn">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
<property name="text">
<string>选择</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_11">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
<property name="text">
<string>输出地形仿真:</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="OutputTerrianRasterLineEdit">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QPushButton" name="OutputTerrianRasterBtn">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
<property name="text">
<string>选择</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_8">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
<property name="text">
<string>输出地类仿真影像:</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLineEdit" name="OutputClsSARRasterLineEdit">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
<property name="text">
<string>D:\FZSimulation\LT1A\L20250210\LT1_Simulation_Setting.xml</string>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="QPushButton" name="OutputClsSARRasterBtn">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
<property name="text">
<string>选择</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QProgressBar" name="progressBar">
<property name="value">
<number>24</number>
</property>
</widget>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources/>
<connections/>
</ui>

View File

@ -4,6 +4,17 @@
#include <map>
#include "BaseConstVariable.h"
struct SigmaParam {
double p1;
double p2;
double p3;
double p4;
double p5;
double p6;
};
double getSigma(double& theta, SigmaParam& param) {
return param.p1 + param.p2 * exp(-param.p3 * theta) + param.p4 * cos(param.p5 * theta + param.p6);
}
@ -156,3 +167,61 @@ std::map<long, SigmaParam> SigmaDatabase::getsigmaParams(POLARTYPEENUM polartype
}
}
void SigmaDatabase::readParamsFromFile(const std::string& filename) {
std::ifstream infile(filename);
if (!infile.is_open()) {
std::cerr << "Failed to open file: " << filename << std::endl;
return;
}
std::string line;
while (std::getline(infile, line)) {
std::istringstream iss(line);
std::string polarType;
long cls;
SigmaParam param;
if (!(iss >> polarType >> cls >> param.p1 >> param.p2 >> param.p3
>> param.p4 >> param.p5 >> param.p6)) {
std::cerr << "Error parsing line: " << line << std::endl;
continue;
}
if (polarType == "HH") HH_sigmaParam[cls] = param;
else if (polarType == "HV") HV_sigmaParam[cls] = param;
else if (polarType == "VH") VH_sigmaParam[cls] = param;
else if (polarType == "VV") VV_sigmaParam[cls] = param;
else
std::cerr << "Unknown polarization type: " << polarType << std::endl;
}
infile.close();
}
void SigmaDatabase::writeParamsToFile(const std::string& filename) {
std::ofstream outfile(filename);
if (!outfile.is_open()) {
std::cerr << "Failed to create file: " << filename << std::endl;
return;
}
// ¼æÈÝC++11µÄlambdaд·¨
auto writePolarData = [&outfile](const std::string& polarType,
const std::map<long, SigmaParam>& params) {
for (const auto& entry : params) {
const long cls = entry.first;
const SigmaParam& param = entry.second;
outfile << polarType << " " << cls << " "
<< param.p1 << " " << param.p2 << " "
<< param.p3 << " " << param.p4 << " "
<< param.p5 << " " << param.p6 << "\n";
}
};
writePolarData("HH", HH_sigmaParam);
writePolarData("HV", HV_sigmaParam);
writePolarData("VH", VH_sigmaParam);
writePolarData("VV", VV_sigmaParam);
outfile.close();
}

View File

@ -75,6 +75,19 @@ public:
double getAmp(long cls, double angle, POLARTYPEENUM polartype);
std::map<long, SigmaParam> getsigmaParams( POLARTYPEENUM polartype);
/// <summary>
/// 从文件读取参数
/// </summary>
/// <param name="filename">文件名</param>
void readParamsFromFile(const std::string& filename);
/// <summary>
/// 将参数写入文件
/// </summary>
/// <param name="filename">文件名</param>
void writeParamsToFile(const std::string& filename);
private:
std::map<long, SigmaParam> HH_sigmaParam;
std::map<long, SigmaParam> HV_sigmaParam;
@ -83,4 +96,4 @@ private:
};

View File

@ -5,6 +5,7 @@
#include "QSimulationSARPolynomialOrbitModel.h"
#include "QSimulationLookTableDialog.h"
#include "QCreateSARIntensityByLookTableDialog.h"
#include "QtSimulationGeoSARSigma0Dialog.h"
SARSimlulationRFPCToolButton::SARSimlulationRFPCToolButton(QWidget* parent)
{
@ -73,6 +74,7 @@ void RegisterPreToolBox(LAMPMainWidget::RasterMainWidget* mainwindows, ToolBoxWi
emit toolbox->addBoxToolItemSIGNAL(new QSimulationSAROrbitModelToolButton(toolbox));
emit toolbox->addBoxToolItemSIGNAL(new LookTableComputerClassToolButton(toolbox));
emit toolbox->addBoxToolItemSIGNAL(new QCreateSARIntensityByLookTableToolButton(toolbox));
emit toolbox->addBoxToolItemSIGNAL(new QtSimulationGeoSARSigma0ToolButton(toolbox));
@ -111,3 +113,19 @@ void QCreateSARIntensityByLookTableToolButton::excute()
QCreateSARIntensityByLookTableDialog* dialog = new QCreateSARIntensityByLookTableDialog;
dialog->show();
}
QtSimulationGeoSARSigma0ToolButton::QtSimulationGeoSARSigma0ToolButton(QWidget* parent)
{
this->toolPath = QVector<QString>(0);
this->toolPath.push_back(u8"仿真工具库");
this->toolname = QString(u8"生成模拟强度图(地距)");
}
QtSimulationGeoSARSigma0ToolButton::~QtSimulationGeoSARSigma0ToolButton()
{
}
void QtSimulationGeoSARSigma0ToolButton::excute()
{
QtSimulationGeoSARSigma0Dialog* dialog = new QtSimulationGeoSARSigma0Dialog;
dialog->show();
}

View File

@ -71,6 +71,19 @@ public slots:
};
// QtSimulationGeoSARSigma0Dialog
class SIMULATIONSARTOOL_EXPORT QtSimulationGeoSARSigma0ToolButton : public QToolAbstract {
Q_OBJECT
public:
QtSimulationGeoSARSigma0ToolButton(QWidget* parent = nullptr);
~QtSimulationGeoSARSigma0ToolButton();
public slots:
virtual void excute() override;
};
extern "C" SIMULATIONSARTOOL_EXPORT void RegisterPreToolBox(LAMPMainWidget::RasterMainWidget* mainwindows, ToolBoxWidget* toolbox);

View File

@ -211,6 +211,7 @@
<ClCompile Include="PowerSimulationIncoherent\QSimulationLookTableDialog.cpp" />
<ClCompile Include="PowerSimulationIncoherent\QSimulationSARPolynomialOrbitModel.cpp" />
<ClCompile Include="PowerSimulationIncoherent\QtLinearToIntenisityDialog.cpp" />
<ClCompile Include="PowerSimulationIncoherent\QtSimulationGeoSARSigma0Dialog.cpp" />
<ClCompile Include="SimulationSAR\QImageSARRFPC.cpp" />
<ClCompile Include="SimulationSAR\QSARLookTableSimualtionGUI.cpp" />
<ClCompile Include="SimulationSAR\QSimulationBPImage.cpp" />
@ -232,6 +233,7 @@
<QtMoc Include="PowerSimulationIncoherent\QSimulationLookTableDialog.h" />
<QtMoc Include="PowerSimulationIncoherent\QCreateSARIntensityByLookTableDialog.h" />
<QtMoc Include="PowerSimulationIncoherent\QtLinearToIntenisityDialog.h" />
<QtMoc Include="PowerSimulationIncoherent\QtSimulationGeoSARSigma0Dialog.h" />
<ClInclude Include="SimulationSARToolAPI.h" />
<ClInclude Include="simulationsartool_global.h" />
<QtMoc Include="SimulationSAR\QImageSARRFPC.h" />
@ -265,6 +267,7 @@
<QtUic Include="PowerSimulationIncoherent\QSimulationLookTableDialog.ui" />
<QtUic Include="PowerSimulationIncoherent\QSimulationSARPolynomialOrbitModel.ui" />
<QtUic Include="PowerSimulationIncoherent\QtLinearToIntenisityDialog.ui" />
<QtUic Include="PowerSimulationIncoherent\QtSimulationGeoSARSigma0Dialog.ui" />
<QtUic Include="SimulationSAR\QImageSARRFPC.ui" />
<QtUic Include="SimulationSAR\QSARLookTableSimualtionGUI.ui" />
<QtUic Include="SimulationSAR\QSimulationBPImage.ui" />

View File

@ -121,6 +121,9 @@
<ClCompile Include="PowerSimulationIncoherent\QtLinearToIntenisityDialog.cpp">
<Filter>PowerSimulationIncoherent</Filter>
</ClCompile>
<ClCompile Include="PowerSimulationIncoherent\QtSimulationGeoSARSigma0Dialog.cpp">
<Filter>PowerSimulationIncoherent</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<QtUic Include="SimulationSAR\QImageSARRFPC.ui">
@ -147,6 +150,9 @@
<QtUic Include="PowerSimulationIncoherent\QtLinearToIntenisityDialog.ui">
<Filter>PowerSimulationIncoherent</Filter>
</QtUic>
<QtUic Include="PowerSimulationIncoherent\QtSimulationGeoSARSigma0Dialog.ui">
<Filter>PowerSimulationIncoherent</Filter>
</QtUic>
</ItemGroup>
<ItemGroup>
<QtMoc Include="SimulationSAR\QImageSARRFPC.h">
@ -176,6 +182,9 @@
<QtMoc Include="PowerSimulationIncoherent\QtLinearToIntenisityDialog.h">
<Filter>PowerSimulationIncoherent</Filter>
</QtMoc>
<QtMoc Include="PowerSimulationIncoherent\QtSimulationGeoSARSigma0Dialog.h">
<Filter>PowerSimulationIncoherent</Filter>
</QtMoc>
</ItemGroup>
<ItemGroup>
<CudaCompile Include="SimulationSAR\GPURFPC.cu">