#include "reconstruction.h" #include "Function.h" #include "Function1D.h" #include "Function2D.h" #include "Function3D.h" #include "Matrix.h" #include #include using namespace Aurora; namespace Recon { Aurora::Matrix calculateMinimalMaximalTransducerPositions( const Aurora::Matrix &aMSenderList, const Aurora::Matrix &aMReceiverList) { auto minEmitter = min(aMSenderList, Row); auto maxEmitter = max(aMSenderList, Row); auto minReceiver = min(aMReceiverList, Row); auto maxReceiver = max(aMReceiverList, Row); auto data1 = Aurora::malloc(minEmitter.getDataSize() * 2); auto data2 = Aurora::malloc(minEmitter.getDataSize() * 2); auto minM = Matrix::New(data1,minEmitter.getDimSize(0),2); auto maxM = Matrix::New(data2,minEmitter.getDimSize(0),2); minM($,0) = minEmitter; minM($,1) = minReceiver; maxM($,0) = maxEmitter; maxM($,1) = maxReceiver; minM = min(minM,Row); maxM = max(maxM,Row); auto data3 = Aurora::malloc(minM.getDataSize() * 2); auto ddims = Matrix::New(data3,minM.getDimSize(0),2); ddims($,0) = minM; ddims($,1) = maxM; ddims.forceReshape(1, ddims.getDataSize(), 1); return ddims; } Aurora::Matrix calculateResolution(const Aurora::Matrix &aVDdims, const Aurora::Matrix &aVDims) { auto numDim = aVDims.getDataSize(); auto res = (aVDdims.block(1,numDim,aVDdims.getDataSize()-1) - aVDdims.block(1,0,numDim-1))/ (aVDims - 1); if(numDim == 3 && aVDims[2] == 1){ res[2] = res[0]; } return res; } Aurora::Matrix getDimensions(double aNumPixelXY, const Aurora::Matrix& aVDdims) { int numDim = aVDdims.getDataSize()/2; if (!(numDim == 2 || numDim == 3)){ std::cerr<<"Inputs does not match requirements."<