Files
UR/src/transmissionReconstruction/startTransmissionReconstruction.cpp

50 lines
3.0 KiB
C++
Raw Normal View History

2023-06-02 15:34:22 +08:00
#include "startTransmissionReconstruction.h"
#include "Function2D.h"
#include "MatlabWriter.h"
2024-12-19 11:24:56 +08:00
#include "detection/getTransmissionData.h"
#include "log/log.h"
#include "config/config.h"
#include "common/getMeasurementMetaData.h"
#include "common/qualityReview.h"
#include "common/dataBlockCreation/removeDataFromArrays.h"
#include "transmissionReconstruction/dataFilter/dataFilter.h"
#include "transmissionReconstruction/dataPreperation.h"
#include "transmissionReconstruction/reconstruction/reconstruction.h"
2023-06-02 15:34:22 +08:00
using namespace Aurora;
using namespace Recon;
2023-06-14 12:19:54 +08:00
TransmissionReconstructionResult Recon::startTransmissionReconstruction(const Aurora::Matrix& aMotorPos, const Aurora::Matrix& aMotoPosRef, const Aurora::Matrix& aSlList,
2023-06-02 15:34:22 +08:00
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)
{
2023-06-27 09:15:39 +08:00
RECON_INFO("Start getTransmissionData.");
2023-06-02 15:34:22 +08:00
auto transmissionData = getTransmissionData(aMotorPos, aMotoPosRef, aSlList, aSnList, aRlList, aRnList, aTemp, aTempRef,
2023-09-12 09:53:30 +08:00
aGeom, aGeomRef, aExpInfo, aExpInfoRef, aPreComputes, aParser, aParserRef);
2023-06-02 15:34:22 +08:00
Matrix dists = Recon::distanceBetweenTwoPoints(transmissionData.senderList, transmissionData.receiverList);
Matrix sosRef = Recon::temperatureToSoundSpeed(transmissionData.waterTempList, "marczak");
2023-09-12 09:53:30 +08:00
2023-06-02 15:34:22 +08:00
Matrix valid = Recon::checkTofDetections(transmissionData.tofDataTotal, dists, sosRef,
Recon::transParams::minSpeedOfSound,Recon::transParams::maxSpeedOfSound).valid;
2023-06-02 15:34:22 +08:00
if(transParams::qualityCheck)
{
qualityReview(sum(valid,Aurora::All)[0], transmissionData.dataInfo.numPossibleScans);
}
2023-06-02 15:34:22 +08:00
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);
2023-06-27 09:15:39 +08:00
RECON_INFO("Start reconstructArt.");
2023-06-02 15:34:22 +08:00
auto transmissionReon = reconstructArt(tofData, attData, positionValues.dims, senderList, reveiverList, positionValues.res, aTemp.expectedSOSWater[0]);
2023-06-14 12:19:54 +08:00
TransmissionReconstructionResult result;
result.recoATT = transmissionReon.outATT;
result.recoSOS = transmissionReon.outSOS;
result.ddmis = positionValues.ddims;
return result;
2023-06-02 15:34:22 +08:00
}