142 lines
4.7 KiB
C++
142 lines
4.7 KiB
C++
#include <gtest/gtest.h>
|
|
|
|
#include "Function2D.h"
|
|
#include "Matrix.h"
|
|
|
|
#include "src/reflectionReconstruction/preprocessData/resampleTransmissionVolume.h"
|
|
#include "src/reflectionReconstruction/preprocessData/precalcImageParameters.h"
|
|
#include "src/reflectionReconstruction/preprocessData/imageExtrapolation.h"
|
|
#include "src/reflectionReconstruction/preprocessData/preprocessTransmissionReconstructionForReflection.h"
|
|
#include "src/common/getGeometryInfo.h"
|
|
#include "src/common/getMeasurementMetaData.h"
|
|
#include "src/config/config.h"
|
|
|
|
#include "MatlabReader.h"
|
|
|
|
using namespace Recon;
|
|
|
|
inline double fourDecimalRound(double src){
|
|
return round(src*10000.0)/10000.0;
|
|
}
|
|
|
|
#define EXPECT_DOUBLE_AE(valueA,valueB)\
|
|
EXPECT_DOUBLE_EQ(fourDecimalRound(valueA),fourDecimalRound(valueB))
|
|
|
|
class ProcessData_Test : public ::testing::Test {
|
|
protected:
|
|
static void SetUpCommonTester() {
|
|
|
|
}
|
|
|
|
static void TearDownTestCase() {
|
|
}
|
|
|
|
void SetUp() {
|
|
}
|
|
|
|
void TearDown() {
|
|
}
|
|
};
|
|
|
|
TEST_F(ProcessData_Test, preprocessTransmissionReconstructionForReflection) {
|
|
MatlabReader m("/home/sun/testData/preprocessTransmissionReconstructionForReflection.mat");
|
|
|
|
auto attenuationCorrection = m.read("attenuationCorrection");
|
|
auto soundSpeedCorrection = m.read("soundSpeedCorrection");
|
|
auto attenuationMap3D = m.read("attenuationMap3D");
|
|
auto speedMap3D = m.read("speedMap3D");
|
|
auto beginTransMap = m.read("beginTransMap");
|
|
auto ddims = m.read("ddims");
|
|
auto deltaTransMap = m.read("deltaTransMap");
|
|
auto expectedSOSWater = m.read("expectedSOSWater");
|
|
auto maxEmitter = m.read("maxEmitter");
|
|
auto maxReceiver = m.read("maxReceiver");
|
|
auto minEmitter = m.read("minEmitter");
|
|
auto minReceiver = m.read("minReceiver");
|
|
auto minSize = m.read("minSize");
|
|
auto maxSize = m.read("maxSize");
|
|
auto recoATT = m.read("recoATT");
|
|
auto recoSOS = m.read("recoSOS");
|
|
auto SAFT_mode = m.read("SAFT_mode");
|
|
Recon::GeometryInfo geom;
|
|
geom.maxEmitter = maxEmitter;
|
|
geom.minEmitter = minEmitter;
|
|
geom.maxReceiver = maxReceiver;
|
|
geom.minReceiver = minReceiver;
|
|
geom.minSize = minSize;
|
|
geom.maxSize = maxSize;
|
|
Recon::TempInfo temp;
|
|
temp.expectedSOSWater = expectedSOSWater;
|
|
precalcImageParameters(geom);
|
|
auto result = preprocessTransmissionReconstructionForReflection(recoSOS,recoATT,ddims, geom,temp);
|
|
for(int i=0;i<result.transRecos.attenuationMap3D.getDataSize();++i)
|
|
{
|
|
EXPECT_DOUBLE_AE(attenuationMap3D[i],result.transRecos.attenuationMap3D[i]);
|
|
}
|
|
|
|
for(int i=0;i<result.transRecos.speedMap3D.getDataSize();++i)
|
|
{
|
|
EXPECT_DOUBLE_AE(speedMap3D[i],result.transRecos.speedMap3D[i]);
|
|
}
|
|
|
|
for(int i=0;i<result.transRecos.beginTransMap.getDataSize();++i)
|
|
{
|
|
EXPECT_DOUBLE_AE(beginTransMap[i],result.transRecos.beginTransMap[i]);
|
|
}
|
|
|
|
EXPECT_DOUBLE_AE(deltaTransMap[0],result.transRecos.deltaTransMap);
|
|
EXPECT_DOUBLE_AE(attenuationCorrection[0],result.attenuationCorrection);
|
|
EXPECT_DOUBLE_AE(soundSpeedCorrection[0],result.soundSpeedCorrection);
|
|
EXPECT_DOUBLE_AE(SAFT_mode[0],result.saftMode);
|
|
|
|
}
|
|
|
|
TEST_F(ProcessData_Test, imageExtrapolation) {
|
|
MatlabReader m("/home/sun/testData/imageExtrapolation.mat");
|
|
|
|
auto smHelperInput = m.read("SMHelperInput");
|
|
auto smHelper = m.read("SMHelper");
|
|
auto result = imageExtrapolation(smHelperInput, 3);
|
|
for(int i=0;i<result.getDataSize();++i)
|
|
{
|
|
EXPECT_DOUBLE_AE(smHelper[i],result[i]) << i;
|
|
}
|
|
|
|
}
|
|
|
|
TEST_F(ProcessData_Test, resampleTransmissionVolume) {
|
|
MatlabReader m("/home/sun/testData/resampleTransmissionVolume.mat");
|
|
|
|
auto maxEmitter = m.read("maxEmitter");
|
|
auto maxPos = m.read("maxPos");
|
|
auto maxReceiver = m.read("maxReceiver");
|
|
auto minEmitter = m.read("minEmitter");
|
|
auto minPos = m.read("minPos");
|
|
auto minReceiver = m.read("minReceiver");
|
|
auto transVol = m.read("transVol");
|
|
auto speedMap3d = m.read("SpeedMap3D");
|
|
auto beginTransMap = m.read("begin_TransMap");
|
|
auto deltaTransMap = m.read("delta_TransMap");
|
|
Recon::GeometryInfo geom;
|
|
geom.maxEmitter = maxEmitter;
|
|
geom.minEmitter = minEmitter;
|
|
geom.maxReceiver = maxReceiver;
|
|
geom.minReceiver = minReceiver;
|
|
geom.minSize = m.read("minSize");
|
|
geom.maxSize = m.read("maxSize");
|
|
precalcImageParameters(geom);
|
|
auto r = resampleTransmissionVolume(transVol, maxPos, minPos, geom);
|
|
for(int i=0;i<r.transMap.getDataSize();++i)
|
|
{
|
|
EXPECT_DOUBLE_AE(speedMap3d[i],r.transMap[i]);
|
|
}
|
|
for(int i=0;i<r.beginTransMap.getDataSize();++i)
|
|
{
|
|
EXPECT_DOUBLE_AE(beginTransMap[i],r.beginTransMap[i]);
|
|
}
|
|
|
|
EXPECT_DOUBLE_AE(deltaTransMap[0],r.deltaTransMap);
|
|
|
|
}
|
|
|