Update geometry info , measrementInfo for startReconstruction.

This commit is contained in:
sunwen
2023-05-19 10:28:22 +08:00
parent e5088ea657
commit 7088602b59
9 changed files with 168 additions and 17 deletions

View File

@@ -0,0 +1,93 @@
#include "estimateOffset.h"
#include "../../common/ceMatchedFilterHandling.h"
#include "Function.h"
#include "Function1D.h"
#include "Function2D.h"
#include "Matrix.h"
#include "src/config/config.h"
#include <cstddef>
using namespace Recon;
using namespace Aurora;
double Recon::estimateOffset(const MeasurementInfo aExpInfo, const CEInfo& aCe, const Aurora::Matrix& aMatchedFilter)
{
double offset = 0;
Matrix ce = aCe.ceRef;
double ceOffSet = aCe.ceRefOffSet;
Matrix ceMeasured;
if(aCe.measuredCEAvailable)
{
if(aCe.measuredCEUsed)
{
ceMeasured = real(ifft(aMatchedFilter));
}
else
{
ceMeasured = real(ifft(reviseMatchedFilter(aCe.ce, true)));
}
}
offset = offset + reflectParams::offsetElectronic;
if(!aCe.measuredCEUsed)
{
if(aCe.measuredCEAvailable && aCe.ceAvailable)
{
size_t column = ceMeasured.getDimSize(1);
size_t ceRows = ce.getDimSize(0);
double* offsetCEMeasuredData = Aurora::malloc(column);
for(int i=0; i<column; ++i)
{
Matrix corrCE = xcorr(ceMeasured($,i).toMatrix(), ce);
long row,column;
max(corrCE, FunctionDirection::All,row,column);
offsetCEMeasuredData[i] = row + 1;
offsetCEMeasuredData[i] = offsetCEMeasuredData[i] - ceRows;
}
Matrix offsetCEMeasured = Matrix::New(offsetCEMeasuredData, column);
offset = offset + median(offsetCEMeasured)[0] / reflectParams::aScanReconstructionFrequency;
// 2代
// if strcmpi(info.Hardware,'USCT3Dv2')
// offset = offset - CEOffset;
// CEOffset = 0;
// end
}
else
{
double dacDelay = aExpInfo.dacDelay;
double filterDisabled = aExpInfo.filterByPass;
double dacDelayInS = dacDelay / 10000000;
if(filterDisabled == 1)
{
offset += aCe.offsetFilterDisabled + dacDelayInS;
}
else
{
offset += aCe.offsetFilterEnabled + dacDelayInS;
}
}
}
//只对三代处理Digitalfilterdelay为0
// if (strcmp(info.Hardware,'USCT3Dv2')==1 && info.Bandpassundersampling==1) %%%3.3MHz Filter 208 Tabs
// Digitalfilterdelay=-(0.8e-6);
// %seconds
// elseif(strcmp(info.Hardware,'USCT3Dv2')==1) %%%%10 MHz 32 Tabs
// Digitalfilterdelay=-(4.67e-6 + 0.8e-6);
// %seconds
// elseif(strcmp(info.Hardware,'USCT3Dv3')==1)
double digitalfilterdelay = 0;
// else
// Digitalfilterdelay = 0;
// end
if (!aCe.measuredCEUsed)
{
offset += digitalfilterdelay;
offset += ceOffSet;
}
offset -= aExpInfo.EOffset;
return offset;
}

View File

@@ -0,0 +1,11 @@
#ifndef ESTIMATE_OFFSET_H
#define ESTIMATE_OFFSET_H
#include "../../common/getMeasurementMetaData.h"
namespace Recon
{
double estimateOffset(const MeasurementInfo aExpInfo, const CEInfo& aCe, const Aurora::Matrix& aMatchedFilter);
}
#endif