计算成像平面
parent
bcaeb8fe7a
commit
3dd749c414
|
|
@ -353,7 +353,7 @@ void EchoL0Dataset::setRefPhaseRange(double refRange)
|
||||||
this->refPhaseRange = refRange;
|
this->refPhaseRange = refRange;
|
||||||
}
|
}
|
||||||
|
|
||||||
double EchoL0Dataset::setRefPhaseRange()
|
double EchoL0Dataset::getRefPhaseRange()
|
||||||
{
|
{
|
||||||
return this->refPhaseRange;
|
return this->refPhaseRange;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -159,7 +159,7 @@ public: //
|
||||||
SatelliteAntPos getSatelliteAntPos(long plusePRFID);
|
SatelliteAntPos getSatelliteAntPos(long plusePRFID);
|
||||||
|
|
||||||
void setRefPhaseRange(double refRange);
|
void setRefPhaseRange(double refRange);
|
||||||
double setRefPhaseRange();
|
double getRefPhaseRange();
|
||||||
// 打印信息的成员函数
|
// 打印信息的成员函数
|
||||||
void printInfo() ;
|
void printInfo() ;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -230,14 +230,14 @@ __global__ void CUDA_Kernel_Computer_R_amp(
|
||||||
antVector.phi = antVector.phi * r2d;
|
antVector.phi = antVector.phi * r2d;
|
||||||
//printf("theta: %f , phi: %f \n", antVector.theta, antVector.phi);
|
//printf("theta: %f , phi: %f \n", antVector.theta, antVector.phi);
|
||||||
if (antVector.Rho > 0) {
|
if (antVector.Rho > 0) {
|
||||||
double TansantPatternGain = GPU_BillerInterpAntPattern(
|
//double TansantPatternGain = GPU_BillerInterpAntPattern(
|
||||||
TransAntpattern,
|
// TransAntpattern,
|
||||||
Transtarttheta, Transstartphi, Transdtheta, Transdphi, Transthetapoints, Transphipoints,
|
// Transtarttheta, Transstartphi, Transdtheta, Transdphi, Transthetapoints, Transphipoints,
|
||||||
antVector.theta, antVector.phi);
|
// antVector.theta, antVector.phi);
|
||||||
double antPatternGain = GPU_BillerInterpAntPattern(
|
//double antPatternGain = GPU_BillerInterpAntPattern(
|
||||||
ReceiveAntpattern,
|
// ReceiveAntpattern,
|
||||||
Receivestarttheta, Receivestartphi, Receivedtheta, Receivedphi, Receivethetapoints, Receivephipoints,
|
// Receivestarttheta, Receivestartphi, Receivedtheta, Receivedphi, Receivethetapoints, Receivephipoints,
|
||||||
antVector.theta, antVector.phi);
|
// antVector.theta, antVector.phi);
|
||||||
|
|
||||||
double sigma0 = 0;
|
double sigma0 = 0;
|
||||||
{
|
{
|
||||||
|
|
@ -260,7 +260,8 @@ __global__ void CUDA_Kernel_Computer_R_amp(
|
||||||
sigma0 = powf(10.0, sigma / 10.0);
|
sigma0 = powf(10.0, sigma / 10.0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ampGain = TansantPatternGain * antPatternGain;
|
//ampGain = TansantPatternGain * antPatternGain;
|
||||||
|
ampGain = 1;
|
||||||
//if (10 * log10(ampGain / maxReceiveAntPatternValue / maxTransAntPatternValue) < -3) { // СÓÚ-3dB
|
//if (10 * log10(ampGain / maxReceiveAntPatternValue / maxTransAntPatternValue) < -3) { // СÓÚ-3dB
|
||||||
// d_temp_R[idx] = 0;
|
// d_temp_R[idx] = 0;
|
||||||
// d_temp_amps[idx] = 0;
|
// d_temp_amps[idx] = 0;
|
||||||
|
|
|
||||||
|
|
@ -301,6 +301,7 @@ ErrorCode RFPCProcessCls::Process(long num_thread)
|
||||||
//stateCode = this->RFPCMainProcess(num_thread);
|
//stateCode = this->RFPCMainProcess(num_thread);
|
||||||
// 初始化回波
|
// 初始化回波
|
||||||
this->EchoSimulationData->initEchoArr(std::complex<double>(0, 0));
|
this->EchoSimulationData->initEchoArr(std::complex<double>(0, 0));
|
||||||
|
|
||||||
stateCode = this->RFPCMainProcess_GPU();
|
stateCode = this->RFPCMainProcess_GPU();
|
||||||
|
|
||||||
if (stateCode != ErrorCode::SUCCESS) {
|
if (stateCode != ErrorCode::SUCCESS) {
|
||||||
|
|
@ -343,6 +344,7 @@ ErrorCode RFPCProcessCls::InitParams()
|
||||||
this->EchoSimulationData->setCenterAngle(this->TaskSetting->getCenterLookAngle());
|
this->EchoSimulationData->setCenterAngle(this->TaskSetting->getCenterLookAngle());
|
||||||
this->EchoSimulationData->setLookSide(this->TaskSetting->getIsRightLook() ? "R" : "L");
|
this->EchoSimulationData->setLookSide(this->TaskSetting->getIsRightLook() ? "R" : "L");
|
||||||
this->EchoSimulationData->OpenOrNew(OutEchoPath, TaskFileName, PluseCount, PlusePoint);
|
this->EchoSimulationData->OpenOrNew(OutEchoPath, TaskFileName, PluseCount, PlusePoint);
|
||||||
|
this->EchoSimulationData->setRefPhaseRange(this->TaskSetting->getRefphaseRange());
|
||||||
|
|
||||||
QString tmpfolderPath = QDir(OutEchoPath).filePath("tmp");
|
QString tmpfolderPath = QDir(OutEchoPath).filePath("tmp");
|
||||||
if (QDir(tmpfolderPath).exists() == false) {
|
if (QDir(tmpfolderPath).exists() == false) {
|
||||||
|
|
@ -466,6 +468,7 @@ void RFPCProcessMain(long num_thread,
|
||||||
qDebug() << "POLAR: " << task->getPolarType();
|
qDebug() << "POLAR: " << task->getPolarType();
|
||||||
qDebug() << "NearRange: " << task->getNearRange();
|
qDebug() << "NearRange: " << task->getNearRange();
|
||||||
qDebug() << "FarRange: " << task->getFarRange();
|
qDebug() << "FarRange: " << task->getFarRange();
|
||||||
|
qDebug() << "RefRange: " << task->getRefphaseRange();
|
||||||
qDebug() << (task->getFarRange() - task->getNearRange()) * 2 / LIGHTSPEED * task->getFs();
|
qDebug() << (task->getFarRange() - task->getNearRange()) * 2 / LIGHTSPEED * task->getFs();
|
||||||
qDebug() << "\n\n";
|
qDebug() << "\n\n";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -24,9 +24,10 @@ void CreatePixelXYZ(std::shared_ptr<EchoL0Dataset> echoL0ds, QString outPixelXYZ
|
||||||
gt(1, 2) = 1;
|
gt(1, 2) = 1;
|
||||||
gdalImage xyzRaster = CreategdalImage(outPixelXYZPath, prfcount, freqcount, 3, gt, QString(""), false, true,true);
|
gdalImage xyzRaster = CreategdalImage(outPixelXYZPath, prfcount, freqcount, 3, gt, QString(""), false, true,true);
|
||||||
std::shared_ptr<double> antpos = echoL0ds->getAntPos();
|
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 Rnear = echoL0ds->getNearRange();
|
||||||
|
double Rref = echoL0ds->getRefPhaseRange();
|
||||||
|
double centerInc = echoL0ds->getCenterAngle()*d2r;
|
||||||
long echocol = 1073741824 / 8 / 4 / prfcount*8;
|
long echocol = 1073741824 / 8 / 4 / prfcount*8;
|
||||||
std::cout << "echocol:\t " << echocol << std::endl;
|
std::cout << "echocol:\t " << echocol << std::endl;
|
||||||
echocol = echocol < 3000 ? 3000 : echocol;
|
echocol = echocol < 3000 ? 3000 : echocol;
|
||||||
|
|
@ -56,7 +57,7 @@ void CreatePixelXYZ(std::shared_ptr<EchoL0Dataset> echoL0ds, QString outPixelXYZ
|
||||||
double R = 0;
|
double R = 0;
|
||||||
double NormAnt = 0;
|
double NormAnt = 0;
|
||||||
|
|
||||||
Px = antpos.get()[i * 19 + 1];
|
Px = antpos.get()[i * 19 + 1]; // 卫星坐标
|
||||||
Py = antpos.get()[i * 19 + 2];
|
Py = antpos.get()[i * 19 + 2];
|
||||||
Pz = antpos.get()[i * 19 + 3];
|
Pz = antpos.get()[i * 19 + 3];
|
||||||
AntDirectX = antpos.get()[i * 19 + 13];// zero doppler
|
AntDirectX = antpos.get()[i * 19 + 13];// zero doppler
|
||||||
|
|
@ -67,11 +68,41 @@ void CreatePixelXYZ(std::shared_ptr<EchoL0Dataset> echoL0ds, QString outPixelXYZ
|
||||||
AntDirectX = AntDirectX / NormAnt;
|
AntDirectX = AntDirectX / NormAnt;
|
||||||
AntDirectY = AntDirectY / NormAnt;
|
AntDirectY = AntDirectY / NormAnt;
|
||||||
AntDirectZ = AntDirectZ / 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++) {
|
for (long j = 0; j < tempechocol; j++) {
|
||||||
R = (j + startcolidx)*dx + Rnear;
|
R = (j + startcolidx)*dx + Rnear;
|
||||||
demx(i,j) = Px + AntDirectX * R;
|
|
||||||
demy(i,j) = Py + AntDirectY * R;
|
double dRp = (Rref - R) / sin(centerInc); // -- 0 +++
|
||||||
demz(i,j) = Pz + AntDirectZ * R;
|
|
||||||
|
|
||||||
|
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() << "TBP params:";
|
||||||
qDebug() << "Rnear:\t" << Rnear;
|
qDebug() << "Rnear:\t" << Rnear;
|
||||||
qDebug() << "Rfar:\t" << Rfar;
|
qDebug() << "Rfar:\t" << Rfar;
|
||||||
|
qDebug() << "refRange:\t" << this->getEchoL1()->getRefPhaseRange();
|
||||||
qDebug() << "fs:\t" << fs;
|
qDebug() << "fs:\t" << fs;
|
||||||
qDebug() << "freq:\t" << freq;
|
qDebug() << "freq:\t" << freq;
|
||||||
qDebug() << "rowCount:\t" << rowCount;
|
qDebug() << "rowCount:\t" << rowCount;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue