#include #include #include #include "Function1D.h" #include "MatlabReader.h" #include "Matrix.h" #include "config/config.h" #include "common/getMeasurementMetaData.h" #include "transmissionReconstruction/detection/detection.h" inline float fourDecimalRound(float src){ return round(src*10000.0)/10000.0; } #define EXPECT_DOUBLE_AE(valueA,valueB)\ EXPECT_DOUBLE_EQ(fourDecimalRound(valueA),fourDecimalRound(valueB)) #define ASSERT_DOUBLE_AE(valueA,valueB)\ ASSERT_DOUBLE_EQ(fourDecimalRound(valueA),fourDecimalRound(valueB)) class Detection_Test : public ::testing::Test { protected: static void SetUpDetectionTester() { } static void TearDownTestCase() { } void SetUp() { } void TearDown() { } }; TEST_F(Detection_Test, detectTofAndAtt) { MatlabReader m("/home/sun/testData/transmissionDetection.mat"); auto AscanBlock = m.read("AscanBlock"); auto AscanRefBlock = m.read("AscanRefBlock"); auto distBlock = m.read("dists"); auto distBlockRef = m.read("distRefBlock"); auto sosWaterBlock = Recon::temperatureToSoundSpeed(m.read("waterTempBlock"), "marczak"); auto sosWaterRefBlock = Recon::temperatureToSoundSpeed(m.read("waterTempRefBlock"), "marczak"); float expectedSOSWater = 1.512677498767504e+03; auto result = Recon::detectTofAndAtt( AscanBlock, AscanRefBlock, distBlock, distBlockRef, sosWaterBlock, sosWaterRefBlock, Recon::transParams::resampleFactor, Recon::transParams::nThreads, expectedSOSWater, Recon::transParams::useTimeWindowing, Recon::transParams::aScanReconstructionFrequency, Recon::transParams::detectionWindowATT,Recon::transParams::offsetElectronic, Recon::transParams::detectionWindowSOS, Recon::transParams::minSpeedOfSound, Recon::transParams::maxSpeedOfSound, Recon::transParams::gaussWindow); MatlabReader m2("/home/krad/TestData/sosResult.mat"); auto sosvalue = m2.read("sosValue"); auto tof = m2.read("tofRel"); auto att = m2.read("att"); // auto result1 = Recon::detectTofAndAttMex( // AscanBlock, AscanRefBlock, distBlock, distBlockRef, sosWaterBlock, // sosWaterRefBlock, Recon::transParams::resampleFactor, // Recon::transParams::nThreads, expectedSOSWater, // Recon::transParams::useTimeWindowing, // Recon::transParams::aScanReconstructionFrequency, // Recon::transParams::detectionWindowATT,Recon::transParams::offsetElectronic, // Recon::transParams::detectionWindowSOS, // Recon::transParams::minSpeedOfSound, // Recon::transParams::maxSpeedOfSound, Recon::transParams::gaussWindow); ASSERT_EQ(sosvalue.getDataSize(), result.tof.getDataSize()); ASSERT_EQ(sosvalue.getDataSize(), result.sosValue.getDataSize()); ASSERT_EQ(sosvalue.getDataSize(), result.att.getDataSize()); #pragma omp parallel for for (size_t i = 0; i < result.tof.getDataSize(); i++) { EXPECT_DOUBLE_AE(tof[i],result.tof[i])<<",index:"<