计算成像平面

pull/5/head
陈增辉 2025-02-24 18:53:35 +08:00
parent bcaeb8fe7a
commit 3dd749c414
5 changed files with 53 additions and 17 deletions

View File

@ -353,7 +353,7 @@ void EchoL0Dataset::setRefPhaseRange(double refRange)
this->refPhaseRange = refRange;
}
double EchoL0Dataset::setRefPhaseRange()
double EchoL0Dataset::getRefPhaseRange()
{
return this->refPhaseRange;
}

View File

@ -159,7 +159,7 @@ public: //
SatelliteAntPos getSatelliteAntPos(long plusePRFID);
void setRefPhaseRange(double refRange);
double setRefPhaseRange();
double getRefPhaseRange();
// 打印信息的成员函数
void printInfo() ;

View File

@ -230,14 +230,14 @@ __global__ void CUDA_Kernel_Computer_R_amp(
antVector.phi = antVector.phi * r2d;
//printf("theta: %f , phi: %f \n", antVector.theta, antVector.phi);
if (antVector.Rho > 0) {
double TansantPatternGain = GPU_BillerInterpAntPattern(
TransAntpattern,
Transtarttheta, Transstartphi, Transdtheta, Transdphi, Transthetapoints, Transphipoints,
antVector.theta, antVector.phi);
double antPatternGain = GPU_BillerInterpAntPattern(
ReceiveAntpattern,
Receivestarttheta, Receivestartphi, Receivedtheta, Receivedphi, Receivethetapoints, Receivephipoints,
antVector.theta, antVector.phi);
//double TansantPatternGain = GPU_BillerInterpAntPattern(
// TransAntpattern,
// Transtarttheta, Transstartphi, Transdtheta, Transdphi, Transthetapoints, Transphipoints,
// antVector.theta, antVector.phi);
//double antPatternGain = GPU_BillerInterpAntPattern(
// ReceiveAntpattern,
// Receivestarttheta, Receivestartphi, Receivedtheta, Receivedphi, Receivethetapoints, Receivephipoints,
// antVector.theta, antVector.phi);
double sigma0 = 0;
{
@ -260,7 +260,8 @@ __global__ void CUDA_Kernel_Computer_R_amp(
sigma0 = powf(10.0, sigma / 10.0);
}
}
ampGain = TansantPatternGain * antPatternGain;
//ampGain = TansantPatternGain * antPatternGain;
ampGain = 1;
//if (10 * log10(ampGain / maxReceiveAntPatternValue / maxTransAntPatternValue) < -3) { // СÓÚ-3dB
// d_temp_R[idx] = 0;
// d_temp_amps[idx] = 0;

View File

@ -301,6 +301,7 @@ ErrorCode RFPCProcessCls::Process(long num_thread)
//stateCode = this->RFPCMainProcess(num_thread);
// 初始化回波
this->EchoSimulationData->initEchoArr(std::complex<double>(0, 0));
stateCode = this->RFPCMainProcess_GPU();
if (stateCode != ErrorCode::SUCCESS) {
@ -343,6 +344,7 @@ ErrorCode RFPCProcessCls::InitParams()
this->EchoSimulationData->setCenterAngle(this->TaskSetting->getCenterLookAngle());
this->EchoSimulationData->setLookSide(this->TaskSetting->getIsRightLook() ? "R" : "L");
this->EchoSimulationData->OpenOrNew(OutEchoPath, TaskFileName, PluseCount, PlusePoint);
this->EchoSimulationData->setRefPhaseRange(this->TaskSetting->getRefphaseRange());
QString tmpfolderPath = QDir(OutEchoPath).filePath("tmp");
if (QDir(tmpfolderPath).exists() == false) {
@ -466,6 +468,7 @@ void RFPCProcessMain(long num_thread,
qDebug() << "POLAR: " << task->getPolarType();
qDebug() << "NearRange: " << task->getNearRange();
qDebug() << "FarRange: " << task->getFarRange();
qDebug() << "RefRange: " << task->getRefphaseRange();
qDebug() << (task->getFarRange() - task->getNearRange()) * 2 / LIGHTSPEED * task->getFs();
qDebug() << "\n\n";
}

View File

@ -24,9 +24,10 @@ void CreatePixelXYZ(std::shared_ptr<EchoL0Dataset> echoL0ds, QString outPixelXYZ
gt(1, 2) = 1;
gdalImage xyzRaster = CreategdalImage(outPixelXYZPath, prfcount, freqcount, 3, gt, QString(""), false, true,true);
std::shared_ptr<double> antpos = echoL0ds->getAntPos();
double dx = LIGHTSPEED / 2 / echoL0ds->getFs();
double dx = (echoL0ds->getFarRange()-echoL0ds->getNearRange())/(echoL0ds->getPlusePoints()-1);
double Rnear = echoL0ds->getNearRange();
double Rref = echoL0ds->getRefPhaseRange();
double centerInc = echoL0ds->getCenterAngle()*d2r;
long echocol = 1073741824 / 8 / 4 / prfcount*8;
std::cout << "echocol:\t " << echocol << std::endl;
echocol = echocol < 3000 ? 3000 : echocol;
@ -56,7 +57,7 @@ void CreatePixelXYZ(std::shared_ptr<EchoL0Dataset> echoL0ds, QString outPixelXYZ
double R = 0;
double NormAnt = 0;
Px = antpos.get()[i * 19 + 1];
Px = antpos.get()[i * 19 + 1]; // 卫星坐标
Py = antpos.get()[i * 19 + 2];
Pz = antpos.get()[i * 19 + 3];
AntDirectX = antpos.get()[i * 19 + 13];// zero doppler
@ -67,11 +68,41 @@ void CreatePixelXYZ(std::shared_ptr<EchoL0Dataset> echoL0ds, QString outPixelXYZ
AntDirectX = AntDirectX / NormAnt;
AntDirectY = AntDirectY / NormAnt;
AntDirectZ = AntDirectZ / NormAnt;// ¹éÒ»»¯
// 计算中心参考点
double centerX = Px + Rref * AntDirectX; // T1
double centerY = Py + Rref * AntDirectY;
double centerZ = Pz + Rref * AntDirectZ;
double satH = Rref * std::cos(centerInc); // 卫星高
double PR = sqrt(Px * Px + Py * Py + Pz * Pz);
double satR = PR - satH;
double sPx = satR / PR * Px;
double sPy = satR / PR * Py;
double sPz = satR / PR * Pz;
double dTSx = sPx - centerX;
double dTSy = sPy - centerY;
double dTSz = sPz - centerZ;
double dTSR = sqrt(dTSx * dTSx + dTSy * dTSy + dTSz * dTSz);
dTSx=dTSx/dTSR;
dTSy=dTSy/dTSR;
dTSz=dTSz/dTSR;
for (long j = 0; j < tempechocol; j++) {
R = (j + startcolidx)*dx + Rnear;
demx(i,j) = Px + AntDirectX * R;
demy(i,j) = Py + AntDirectY * R;
demz(i,j) = Pz + AntDirectZ * R;
double dRp = (Rref - R) / sin(centerInc); // -- 0 +++
demx(i,j) = centerX + dTSx * dRp;
demy(i,j) = centerY + dTSy * dRp;
demz(i,j) = centerZ + dTSz * dRp;
}
}
@ -202,6 +233,7 @@ ErrorCode TBPImageAlgCls::ProcessGPU()
qDebug() << "TBP params:";
qDebug() << "Rnear:\t" << Rnear;
qDebug() << "Rfar:\t" << Rfar;
qDebug() << "refRange:\t" << this->getEchoL1()->getRefPhaseRange();
qDebug() << "fs:\t" << fs;
qDebug() << "freq:\t" << freq;
qDebug() << "rowCount:\t" << rowCount;