67 lines
3.1 KiB
C++
67 lines
3.1 KiB
C++
#include "getAScanBlockPreprocessed.h"
|
|
|
|
#include "Matrix.h"
|
|
#include "blockingGeometryInfo.h"
|
|
#include "removeDataFromArrays.h"
|
|
#include "getAscanBlock.h"
|
|
#include "src/config/config.h"
|
|
#include "src/common/getGeometryInfo.h"
|
|
#include "src/common/preprocessAscanBlock.h"
|
|
#include "src/transmissionReconstruction/dataFilter/dataFilter.h"
|
|
#include "src/reflectionReconstruction/dataFilter.h"
|
|
|
|
using namespace Aurora;
|
|
using namespace Recon;
|
|
|
|
AscanBlockPreprocessed Recon::getAscanBlockPreprocessed(Parser* aParser, const Aurora::Matrix& aMp, const Aurora::Matrix& aSl, const Aurora::Matrix& aSn,
|
|
const Aurora::Matrix& aRl, const Aurora::Matrix& aRn, GeometryInfo& aGeom, const MeasurementInfo& aMeasInfo,
|
|
bool aApplyFilter, bool aTransReco)
|
|
{
|
|
AscanBlockPreprocessed result;
|
|
AscanBlock ascanBlock = getAscanBlock(aParser, aMp, aSl, aSn, aRl, aRn);
|
|
result.gainBlock = ascanBlock.gainBlock;
|
|
result.mpBlock = ascanBlock.mpBlock;
|
|
result.rlBlock = ascanBlock.rlBlock;
|
|
result.rnBlock = ascanBlock.rnBlock;
|
|
result.slBlock = ascanBlock.slBlock;
|
|
result.snBlock = ascanBlock.snBlock;
|
|
GeometryBlock geometryBlock = blockingGeometryInfos(aGeom, ascanBlock.rnBlock, ascanBlock.rlBlock, ascanBlock.snBlock, ascanBlock.slBlock, ascanBlock.mpBlock);
|
|
result.receiverPositionBlock = geometryBlock.receiverPositionBlock;
|
|
result.senderPositionBlock = geometryBlock.senderPositionBlock;
|
|
if(aApplyFilter)
|
|
{
|
|
Matrix usedData;
|
|
if(aTransReco)
|
|
{
|
|
usedData = filterTransmissionData(ascanBlock.slBlock, ascanBlock.snBlock, ascanBlock.rlBlock, ascanBlock.rnBlock,
|
|
aGeom.sensData, geometryBlock.senderNormalBlock, geometryBlock.receiverNormalBlock);
|
|
}
|
|
else
|
|
{
|
|
usedData = filterReflectionData(geometryBlock.receiverPositionBlock, geometryBlock.senderPositionBlock, geometryBlock.senderNormalBlock, transParams::constrictReflectionAngles);
|
|
}
|
|
|
|
ascanBlock.ascanBlock = removeDataFromArrays(ascanBlock.ascanBlock, usedData);
|
|
result.mpBlock = removeDataFromArrays(ascanBlock.mpBlock, usedData);
|
|
result.slBlock = removeDataFromArrays(ascanBlock.slBlock, usedData);
|
|
result.snBlock = removeDataFromArrays(ascanBlock.snBlock, usedData);
|
|
result.rlBlock = removeDataFromArrays(ascanBlock.rlBlock, usedData);
|
|
result.rnBlock = removeDataFromArrays(ascanBlock.rnBlock, usedData);
|
|
|
|
result.senderPositionBlock = removeDataFromArrays(geometryBlock.senderPositionBlock, usedData);
|
|
result.receiverPositionBlock = removeDataFromArrays(geometryBlock.receiverPositionBlock, usedData);
|
|
result.gainBlock = removeDataFromArrays(ascanBlock.gainBlock, usedData);
|
|
|
|
}
|
|
|
|
if (ascanBlock.ascanBlock.getDataSize() > 0)
|
|
{
|
|
result.ascanBlockPreprocessed = preprocessAscanBlock(ascanBlock.ascanBlock, aMeasInfo);
|
|
}
|
|
else
|
|
{
|
|
result.ascanBlockPreprocessed = ascanBlock.ascanBlock;
|
|
}
|
|
|
|
return result;
|
|
} |