47 lines
2.9 KiB
C++
47 lines
2.9 KiB
C++
#include "startTransmissionReconstruction.h"
|
|
#include "./detection/getTransmissionData.h"
|
|
#include "Matrix.h"
|
|
#include "common/dataBlockCreation/removeDataFromArrays.h"
|
|
#include "src/transmissionReconstruction/dataFilter/dataFilter.h"
|
|
#include "src/transmissionReconstruction/dataPreperation.h"
|
|
#include "src/common/getMeasurementMetaData.h"
|
|
#include "src/common/qualityReview.h"
|
|
#include "src/transmissionReconstruction/reconstruction/reconstruction.h"
|
|
#include "src/config/config.h"
|
|
|
|
#include "Function2D.h"
|
|
|
|
#include "MatlabWriter.h"
|
|
|
|
using namespace Aurora;
|
|
using namespace Recon;
|
|
|
|
void Recon::startTransmissionReconstruction(const Aurora::Matrix& aMotorPos, const Aurora::Matrix& aMotoPosRef, const Aurora::Matrix& aSlList,
|
|
const Aurora::Matrix& aSnList, const Aurora::Matrix& aRlList, const Aurora::Matrix& aRnList,
|
|
const TempInfo& aTemp, const TempInfo& aTempRef, Recon::GeometryInfo& aGeom,
|
|
GeometryInfo& aGeomRef, const MeasurementInfo& aExpInfo, const MeasurementInfo& aExpInfoRef,
|
|
const PreComputes& aPreComputes, Parser* aParser, Parser* aParserRef)
|
|
{
|
|
auto transmissionData = getTransmissionData(aMotorPos, aMotoPosRef, aSlList, aSnList, aRlList, aRnList, aTemp, aTempRef,
|
|
aGeom, aGeomRef, aExpInfo, aExpInfoRef, aPreComputes, aParser, aParserRef);
|
|
Matrix dists = Recon::distanceBetweenTwoPoints(transmissionData.senderList, transmissionData.receiverList);
|
|
Matrix sosRef = Recon::temperatureToSoundSpeed(transmissionData.waterTempList, "marczak");
|
|
Matrix valid = Recon::checkTofDetections(transmissionData.tofDataTotal, dists, sosRef,
|
|
Recon::transParams::minSpeedOfSound,Recon::transParams::maxSpeedOfSound).valid;
|
|
|
|
if(transParams::qualityCheck)
|
|
{
|
|
qualityReview(sum(valid,Aurora::All)[0], transmissionData.dataInfo.numPossibleScans);
|
|
}
|
|
DiscretizePositionValues positionValues = Recon::discretizePositions(transmissionData.senderList, transmissionData.receiverList, Recon::transParams::numPixelXY);
|
|
Matrix tofData = removeDataFromArrays(transmissionData.tofDataTotal, valid);
|
|
Matrix attData = removeDataFromArrays(transmissionData.attDataTotal, valid);
|
|
Matrix senderList = removeDataFromArrays(positionValues.senderCoordList, valid);
|
|
Matrix reveiverList = removeDataFromArrays(positionValues.receiverCoordList, valid);
|
|
auto transmissionReon = reconstructArt(tofData, attData, positionValues.dims, senderList, reveiverList, positionValues.res, aTemp.expectedSOSWater[0]);
|
|
|
|
MatlabWriter w1("/home/sun/transmissionATT.mat");
|
|
MatlabWriter w2("/home/sun/transmissionSOS.mat");
|
|
w1.write(transmissionReon.outATT, "ATT");
|
|
w2.write(transmissionReon.outSOS, "SOS");
|
|
}
|