From 64602678890e411afc191d3a7bb5db3fe5369a62 Mon Sep 17 00:00:00 2001 From: sunwen Date: Fri, 14 Mar 2025 17:58:10 +0800 Subject: [PATCH] feat: Change estimate offset logic. --- src/common/getMeasurementMetaData.cpp | 3 +- src/common/getMeasurementMetaData.h | 2 + src/config/config.cpp | 5 + src/config/config.h | 1 + .../preprocessData/estimateOffset.cpp | 91 ++++--------------- .../preprocessData/estimateOffset.h | 3 +- src/startReconstructions.cpp | 4 +- 7 files changed, 34 insertions(+), 75 deletions(-) diff --git a/src/common/getMeasurementMetaData.cpp b/src/common/getMeasurementMetaData.cpp index c21cf59..e43ad12 100644 --- a/src/common/getMeasurementMetaData.cpp +++ b/src/common/getMeasurementMetaData.cpp @@ -56,6 +56,7 @@ MeasurementInfo Recon::loadMeasurementInfos(Parser* aParser) result.rootMeasUniqueID = metaData.getMeasurementID(); result.dacDelay = metaData.getDacDelay(); result.filterByPass = metaData.getFilterByPass(); + result.ceMeasuredDacDelay = metaData.getCEMeasuredDacDelay(); if(result.Bandpassundersampling) { result.expectedAScanLength = reflectParams::aScanReconstructionFrequency / result.sampleRate * result.expectedAScanLength; @@ -238,6 +239,6 @@ CEInfo Recon::getCEInfo(Parser* aParser, const MeasurementInfo aInfo) } result.offsetFilterEnabled = reconParams::offsetFilterEnabled; result.offsetFilterDisabled = reconParams::offsetFilterDisabled; - + result.offsetTransducer = reconParams::offsetTransducer; return result; } diff --git a/src/common/getMeasurementMetaData.h b/src/common/getMeasurementMetaData.h index be56d26..4b14103 100644 --- a/src/common/getMeasurementMetaData.h +++ b/src/common/getMeasurementMetaData.h @@ -21,6 +21,7 @@ namespace Recon unsigned int expectedAScanLength; std::string rootMeasUniqueID; float dacDelay; + float ceMeasuredDacDelay; float filterByPass; Aurora::Matrix matchedFilter; }; @@ -40,6 +41,7 @@ namespace Recon bool ceAvailable; float offsetFilterEnabled; float offsetFilterDisabled; + float offsetTransducer; }; struct TempInfo diff --git a/src/config/config.cpp b/src/config/config.cpp index 066c706..7d65c17 100644 --- a/src/config/config.cpp +++ b/src/config/config.cpp @@ -74,6 +74,10 @@ namespace Recon { reconParams::offsetFilterDisabled = ce.at("offsetFilterDisabled").get(); } + if(ce.contains("offsetTransducer")) + { + reconParams::offsetTransducer = ce.at("offsetTransducer").get(); + } } if(measurementInfo.contains("temp")) @@ -630,6 +634,7 @@ namespace Recon reconParams::removeOutliersFromCEMeasured = true; reconParams::offsetFilterEnabled = 6.9e-6; reconParams::offsetFilterDisabled = 1.2e-6; + reconParams::offsetTransducer = 1.0e-6; //reconParams.measurementInfo.temp reconParams::useTASTempComp = true; reconParams::correctTASTemp = 1; diff --git a/src/config/config.h b/src/config/config.h index 7dbba7c..d421047 100644 --- a/src/config/config.h +++ b/src/config/config.h @@ -18,6 +18,7 @@ namespace Recon EXTERN_C bool removeOutliersFromCEMeasured; EXTERN_C float offsetFilterEnabled; EXTERN_C float offsetFilterDisabled; + EXTERN_C float offsetTransducer; //reconParams.measurementInfo.temp EXTERN_C bool useTASTempComp; EXTERN_C bool correctTASTemp; diff --git a/src/reflectionReconstruction/preprocessData/estimateOffset.cpp b/src/reflectionReconstruction/preprocessData/estimateOffset.cpp index 92d5148..462d86b 100644 --- a/src/reflectionReconstruction/preprocessData/estimateOffset.cpp +++ b/src/reflectionReconstruction/preprocessData/estimateOffset.cpp @@ -12,84 +12,33 @@ using namespace Recon; using namespace Aurora; -float Recon::estimateOffset(const MeasurementInfo aExpInfo, const CEInfo& aCe, const Aurora::Matrix& aMatchedFilter) +float Recon::estimateOffset(const MeasurementInfo aExpInfo, const CEInfo& aCe) { - float offset = 0; - Matrix ce = aCe.ceRef; - float ceOffSet = aCe.ceRefOffSet; - Matrix ceMeasured; - if(aCe.measuredCEAvailable) + float dacDelay = aExpInfo.dacDelay / reflectParams::aScanReconstructionFrequency; + float ceMeasuredDacDelay = aExpInfo.ceMeasuredDacDelay / reflectParams::aScanReconstructionFrequency; + float transducerDelay = aCe.offsetTransducer; + float configDelay = reflectParams::offsetElectronic; + float offset; + if(aCe.measuredCEUsed && aCe.measuredCEAvailable) { - if(aCe.measuredCEUsed) - { - ceMeasured = real(ifft(aMatchedFilter)); - } - else - { - ceMeasured = real(ifft(reviseMatchedFilter(aCe.ce, true))); - } + offset = dacDelay - ceMeasuredDacDelay + transducerDelay + configDelay; } - - offset = offset + reflectParams::offsetElectronic; - if(!aCe.measuredCEUsed) + else { - if(aCe.measuredCEAvailable && aCe.ceAvailable) + float electronicDelay = 0; + switch ((int)aExpInfo.filterByPass) { - size_t column = ceMeasured.getDimSize(1); - size_t ceRows = ce.getDimSize(0); - float* offsetCEMeasuredData = Aurora::malloc(column); - for(int i=0; i