From 20a4973fff86c44b76dc48a80282337bec8e6b96 Mon Sep 17 00:00:00 2001 From: sunwen Date: Tue, 13 Jun 2023 16:53:16 +0800 Subject: [PATCH] Fix reconstructionSAFT with TransRecos struct. --- .../reconstructionSAFT/reconstructionSAFT.cpp | 70 +++++++++---------- .../reconstructionSAFT/reconstructionSAFT.h | 10 +-- 2 files changed, 37 insertions(+), 43 deletions(-) diff --git a/src/reflectionReconstruction/reconstructionSAFT/reconstructionSAFT.cpp b/src/reflectionReconstruction/reconstructionSAFT/reconstructionSAFT.cpp index 871d6c4..06c1c6f 100644 --- a/src/reflectionReconstruction/reconstructionSAFT/reconstructionSAFT.cpp +++ b/src/reflectionReconstruction/reconstructionSAFT/reconstructionSAFT.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include @@ -40,7 +41,7 @@ namespace Recon { const Aurora::Matrix &receiverPosGeom, const Aurora::Matrix &senderPosGeom, int SAFT_mode, double TimeInterval, - TransRecosParams transRecos, + const TransRecos& transRecos, const Aurora::Matrix &Env) { if (reflectParams::useAscanIndex == 0) { @@ -122,50 +123,49 @@ namespace Recon { params.push_back(saftVariant); Matrix_t SpeedMap3D{nullptr, - (size_t)transRecos.SpeedMap3D.getDims(), - {(size_t)transRecos.SpeedMap3D.getDimSize(0), - (size_t)transRecos.SpeedMap3D.getDimSize(1), - (size_t)transRecos.SpeedMap3D.getDimSize(2)}, - transRecos.SpeedMap3D.getDataSize()}; - fdata = new float[transRecos.SpeedMap3D.getDataSize()]{0}; - std::copy(transRecos.SpeedMap3D.getData(), - transRecos.SpeedMap3D.getData() + transRecos.SpeedMap3D.getDataSize(), fdata); + (size_t)transRecos.speedMap3D.getDims(), + {(size_t)transRecos.speedMap3D.getDimSize(0), + (size_t)transRecos.speedMap3D.getDimSize(1), + (size_t)transRecos.speedMap3D.getDimSize(2)}, + transRecos.speedMap3D.getDataSize()}; + fdata = new float[transRecos.speedMap3D.getDataSize()]{0}; + std::copy(transRecos.speedMap3D.getData(), + transRecos.speedMap3D.getData() + transRecos.speedMap3D.getDataSize(), fdata); SpeedMap3D.Data = fdata; params.push_back(SpeedMap3D); Matrix_t BeginTransMap{nullptr, - (size_t)transRecos.BeginTransMap.getDims(), - {(size_t)transRecos.BeginTransMap.getDimSize(0), - (size_t)transRecos.BeginTransMap.getDimSize(1), - (size_t)transRecos.BeginTransMap.getDimSize(2)}, - transRecos.BeginTransMap.getDataSize()}; - fdata = new float[transRecos.BeginTransMap.getDataSize()]{0}; - std::copy(transRecos.BeginTransMap.getData(), - transRecos.BeginTransMap.getData() + transRecos.BeginTransMap.getDataSize(), fdata); + (size_t)transRecos.beginTransMap.getDims(), + {(size_t)transRecos.beginTransMap.getDimSize(0), + (size_t)transRecos.beginTransMap.getDimSize(1), + (size_t)transRecos.beginTransMap.getDimSize(2)}, + transRecos.beginTransMap.getDataSize()}; + fdata = new float[transRecos.beginTransMap.getDataSize()]{0}; + std::copy(transRecos.beginTransMap.getData(), + transRecos.beginTransMap.getData() + transRecos.beginTransMap.getDataSize(), fdata); BeginTransMap.Data = fdata; params.push_back(BeginTransMap); Matrix_t DeltaTransMap{nullptr, - (size_t)transRecos.DeltaTransMap.getDims(), - {(size_t)transRecos.DeltaTransMap.getDimSize(0), - (size_t)transRecos.DeltaTransMap.getDimSize(1), - (size_t)transRecos.DeltaTransMap.getDimSize(2)}, - transRecos.DeltaTransMap.getDataSize()}; - fdata = new float[transRecos.DeltaTransMap.getDataSize()]{0}; - std::copy(transRecos.DeltaTransMap.getData(), - transRecos.DeltaTransMap.getData() + transRecos.DeltaTransMap.getDataSize(), fdata); + 1, + 1, + 1, + 1, + 1}; + fdata = new float[1]{0}; + fdata[0] = transRecos.deltaTransMap; DeltaTransMap.Data = fdata; params.push_back(DeltaTransMap); Matrix_t AttenuationMap3D{nullptr, - (size_t)transRecos.AttenuationMap3D.getDims(), - {(size_t)transRecos.AttenuationMap3D.getDimSize(0), - (size_t)transRecos.AttenuationMap3D.getDimSize(1), - (size_t)transRecos.AttenuationMap3D.getDimSize(2)}, - transRecos.AttenuationMap3D.getDataSize()}; - fdata = new float[transRecos.AttenuationMap3D.getDataSize()]{0}; - std::copy(transRecos.AttenuationMap3D.getData(), - transRecos.AttenuationMap3D.getData() + transRecos.AttenuationMap3D.getDataSize(), fdata); + (size_t)transRecos.attenuationMap3D.getDims(), + {(size_t)transRecos.attenuationMap3D.getDimSize(0), + (size_t)transRecos.attenuationMap3D.getDimSize(1), + (size_t)transRecos.attenuationMap3D.getDimSize(2)}, + transRecos.attenuationMap3D.getDataSize()}; + fdata = new float[transRecos.attenuationMap3D.getDataSize()]{0}; + std::copy(transRecos.attenuationMap3D.getData(), + transRecos.attenuationMap3D.getData() + transRecos.attenuationMap3D.getDataSize(), fdata); AttenuationMap3D.Data = fdata; params.push_back(AttenuationMap3D); @@ -228,11 +228,11 @@ namespace Recon { Aurora::Matrix recontructSAFT(const Aurora::Matrix &AScans, const Aurora::Matrix &senderPos, const Aurora::Matrix &receiverPos, const Aurora::Matrix &mpIndex, - int SAFT_mode, TransRecosParams &transRecos, Aurora::Matrix &Env) { + int SAFT_mode, TransRecos &transRecos, Aurora::Matrix &Env) { auto TimeInterval = 1 / (reflectParams::aScanReconstructionFrequency); std::vector motorPosAvailable; std::unique_copy(mpIndex.getData(), mpIndex.getData() + mpIndex.getDataSize(), - motorPosAvailable.begin()); + std::back_inserter(motorPosAvailable)); for (auto mp : motorPosAvailable) { std::vector mpIdxs; for (size_t i = 0; i < mpIndex.getDataSize(); i++) { diff --git a/src/reflectionReconstruction/reconstructionSAFT/reconstructionSAFT.h b/src/reflectionReconstruction/reconstructionSAFT/reconstructionSAFT.h index 611dd00..d9e3d00 100644 --- a/src/reflectionReconstruction/reconstructionSAFT/reconstructionSAFT.h +++ b/src/reflectionReconstruction/reconstructionSAFT/reconstructionSAFT.h @@ -1,15 +1,9 @@ #ifndef __RECONSTRUCTIONSAFT_H__ #define __RECONSTRUCTIONSAFT_H__ #include "Matrix.h" +#include "src/reflectionReconstruction/preprocessData/preprocessTransmissionReconstructionForReflection.h" namespace Recon { -struct TransRecosParams{ - Aurora::Matrix SpeedMap3D; - Aurora::Matrix AttenuationMap3D; - Aurora::Matrix BeginTransMap; - Aurora::Matrix DeltaTransMap; -}; - struct PolyModel{ Aurora::Matrix ModelTerms; Aurora::Matrix Coefficients; @@ -18,7 +12,7 @@ struct PolyModel{ Aurora::Matrix recontructSAFT(const Aurora::Matrix &AScans, const Aurora::Matrix &senderPos, const Aurora::Matrix &receiverPos, const Aurora::Matrix &mpIndex, - int SAFT_mode, TransRecosParams &transRecos, Aurora::Matrix &Env); + int SAFT_mode, TransRecos &transRecos, Aurora::Matrix &Env); Aurora::Matrix polyvaln(PolyModel polymodel, const Aurora::Matrix &indepvar); }