#include "startTransmissionReconstruction.h" #include "./detection/getTransmissionData.h" #include "Matrix.h" #include "CudaMatrix.h" #include "log/log.h" #include "common/dataBlockCreation/removeDataFromArrays.h" #include "log/notify.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; TransmissionReconstructionResult 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) { RECON_INFO("Start getTransmissionData."); 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"); //Recon::notifyProgress(17); Matrix valid = Recon::checkTofDetections(transmissionData.tofDataTotal, dists, sosRef, Recon::transParams::minSpeedOfSound,Recon::transParams::maxSpeedOfSound).valid; //Recon::notifyProgress(18); if(transParams::qualityCheck) { qualityReview(sum(valid,Aurora::All)[0], transmissionData.dataInfo.numPossibleScans); } //Recon::notifyProgress(19); 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); //Recon::notifyProgress(20); RECON_INFO("Start reconstructArt."); auto transmissionReon = reconstructArt(tofData, attData, positionValues.dims, senderList, reveiverList, positionValues.res, aTemp.expectedSOSWater[0]); TransmissionReconstructionResult result; result.recoATT = transmissionReon.outATT; result.recoSOS = transmissionReon.outSOS; result.ddmis = positionValues.ddims; return result; }