Fix reconstructionSAFT with TransRecos struct.
This commit is contained in:
@@ -12,6 +12,7 @@
|
||||
#include <cstddef>
|
||||
#include <cstdlib>
|
||||
#include <iostream>
|
||||
#include <iterator>
|
||||
#include <sys/types.h>
|
||||
#include <vector>
|
||||
|
||||
@@ -40,7 +41,7 @@ namespace Recon {
|
||||
const Aurora::Matrix &receiverPosGeom,
|
||||
const Aurora::Matrix &senderPosGeom,
|
||||
int SAFT_mode, double TimeInterval,
|
||||
TransRecosParams transRecos,
|
||||
const TransRecos& transRecos,
|
||||
const Aurora::Matrix &Env)
|
||||
{
|
||||
if (reflectParams::useAscanIndex == 0) {
|
||||
@@ -122,50 +123,49 @@ namespace Recon {
|
||||
params.push_back(saftVariant);
|
||||
|
||||
Matrix_t SpeedMap3D{nullptr,
|
||||
(size_t)transRecos.SpeedMap3D.getDims(),
|
||||
{(size_t)transRecos.SpeedMap3D.getDimSize(0),
|
||||
(size_t)transRecos.SpeedMap3D.getDimSize(1),
|
||||
(size_t)transRecos.SpeedMap3D.getDimSize(2)},
|
||||
transRecos.SpeedMap3D.getDataSize()};
|
||||
fdata = new float[transRecos.SpeedMap3D.getDataSize()]{0};
|
||||
std::copy(transRecos.SpeedMap3D.getData(),
|
||||
transRecos.SpeedMap3D.getData() + transRecos.SpeedMap3D.getDataSize(), fdata);
|
||||
(size_t)transRecos.speedMap3D.getDims(),
|
||||
{(size_t)transRecos.speedMap3D.getDimSize(0),
|
||||
(size_t)transRecos.speedMap3D.getDimSize(1),
|
||||
(size_t)transRecos.speedMap3D.getDimSize(2)},
|
||||
transRecos.speedMap3D.getDataSize()};
|
||||
fdata = new float[transRecos.speedMap3D.getDataSize()]{0};
|
||||
std::copy(transRecos.speedMap3D.getData(),
|
||||
transRecos.speedMap3D.getData() + transRecos.speedMap3D.getDataSize(), fdata);
|
||||
SpeedMap3D.Data = fdata;
|
||||
params.push_back(SpeedMap3D);
|
||||
|
||||
Matrix_t BeginTransMap{nullptr,
|
||||
(size_t)transRecos.BeginTransMap.getDims(),
|
||||
{(size_t)transRecos.BeginTransMap.getDimSize(0),
|
||||
(size_t)transRecos.BeginTransMap.getDimSize(1),
|
||||
(size_t)transRecos.BeginTransMap.getDimSize(2)},
|
||||
transRecos.BeginTransMap.getDataSize()};
|
||||
fdata = new float[transRecos.BeginTransMap.getDataSize()]{0};
|
||||
std::copy(transRecos.BeginTransMap.getData(),
|
||||
transRecos.BeginTransMap.getData() + transRecos.BeginTransMap.getDataSize(), fdata);
|
||||
(size_t)transRecos.beginTransMap.getDims(),
|
||||
{(size_t)transRecos.beginTransMap.getDimSize(0),
|
||||
(size_t)transRecos.beginTransMap.getDimSize(1),
|
||||
(size_t)transRecos.beginTransMap.getDimSize(2)},
|
||||
transRecos.beginTransMap.getDataSize()};
|
||||
fdata = new float[transRecos.beginTransMap.getDataSize()]{0};
|
||||
std::copy(transRecos.beginTransMap.getData(),
|
||||
transRecos.beginTransMap.getData() + transRecos.beginTransMap.getDataSize(), fdata);
|
||||
BeginTransMap.Data = fdata;
|
||||
params.push_back(BeginTransMap);
|
||||
|
||||
Matrix_t DeltaTransMap{nullptr,
|
||||
(size_t)transRecos.DeltaTransMap.getDims(),
|
||||
{(size_t)transRecos.DeltaTransMap.getDimSize(0),
|
||||
(size_t)transRecos.DeltaTransMap.getDimSize(1),
|
||||
(size_t)transRecos.DeltaTransMap.getDimSize(2)},
|
||||
transRecos.DeltaTransMap.getDataSize()};
|
||||
fdata = new float[transRecos.DeltaTransMap.getDataSize()]{0};
|
||||
std::copy(transRecos.DeltaTransMap.getData(),
|
||||
transRecos.DeltaTransMap.getData() + transRecos.DeltaTransMap.getDataSize(), fdata);
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1};
|
||||
fdata = new float[1]{0};
|
||||
fdata[0] = transRecos.deltaTransMap;
|
||||
DeltaTransMap.Data = fdata;
|
||||
params.push_back(DeltaTransMap);
|
||||
|
||||
Matrix_t AttenuationMap3D{nullptr,
|
||||
(size_t)transRecos.AttenuationMap3D.getDims(),
|
||||
{(size_t)transRecos.AttenuationMap3D.getDimSize(0),
|
||||
(size_t)transRecos.AttenuationMap3D.getDimSize(1),
|
||||
(size_t)transRecos.AttenuationMap3D.getDimSize(2)},
|
||||
transRecos.AttenuationMap3D.getDataSize()};
|
||||
fdata = new float[transRecos.AttenuationMap3D.getDataSize()]{0};
|
||||
std::copy(transRecos.AttenuationMap3D.getData(),
|
||||
transRecos.AttenuationMap3D.getData() + transRecos.AttenuationMap3D.getDataSize(), fdata);
|
||||
(size_t)transRecos.attenuationMap3D.getDims(),
|
||||
{(size_t)transRecos.attenuationMap3D.getDimSize(0),
|
||||
(size_t)transRecos.attenuationMap3D.getDimSize(1),
|
||||
(size_t)transRecos.attenuationMap3D.getDimSize(2)},
|
||||
transRecos.attenuationMap3D.getDataSize()};
|
||||
fdata = new float[transRecos.attenuationMap3D.getDataSize()]{0};
|
||||
std::copy(transRecos.attenuationMap3D.getData(),
|
||||
transRecos.attenuationMap3D.getData() + transRecos.attenuationMap3D.getDataSize(), fdata);
|
||||
AttenuationMap3D.Data = fdata;
|
||||
params.push_back(AttenuationMap3D);
|
||||
|
||||
@@ -228,11 +228,11 @@ namespace Recon {
|
||||
Aurora::Matrix
|
||||
recontructSAFT(const Aurora::Matrix &AScans, const Aurora::Matrix &senderPos,
|
||||
const Aurora::Matrix &receiverPos, const Aurora::Matrix &mpIndex,
|
||||
int SAFT_mode, TransRecosParams &transRecos, Aurora::Matrix &Env) {
|
||||
int SAFT_mode, TransRecos &transRecos, Aurora::Matrix &Env) {
|
||||
auto TimeInterval = 1 / (reflectParams::aScanReconstructionFrequency);
|
||||
std::vector<int> motorPosAvailable;
|
||||
std::unique_copy(mpIndex.getData(), mpIndex.getData() + mpIndex.getDataSize(),
|
||||
motorPosAvailable.begin());
|
||||
std::back_inserter(motorPosAvailable));
|
||||
for (auto mp : motorPosAvailable) {
|
||||
std::vector<int> mpIdxs;
|
||||
for (size_t i = 0; i < mpIndex.getDataSize(); i++) {
|
||||
|
||||
@@ -1,15 +1,9 @@
|
||||
#ifndef __RECONSTRUCTIONSAFT_H__
|
||||
#define __RECONSTRUCTIONSAFT_H__
|
||||
#include "Matrix.h"
|
||||
#include "src/reflectionReconstruction/preprocessData/preprocessTransmissionReconstructionForReflection.h"
|
||||
namespace Recon {
|
||||
|
||||
struct TransRecosParams{
|
||||
Aurora::Matrix SpeedMap3D;
|
||||
Aurora::Matrix AttenuationMap3D;
|
||||
Aurora::Matrix BeginTransMap;
|
||||
Aurora::Matrix DeltaTransMap;
|
||||
};
|
||||
|
||||
struct PolyModel{
|
||||
Aurora::Matrix ModelTerms;
|
||||
Aurora::Matrix Coefficients;
|
||||
@@ -18,7 +12,7 @@ struct PolyModel{
|
||||
Aurora::Matrix
|
||||
recontructSAFT(const Aurora::Matrix &AScans, const Aurora::Matrix &senderPos,
|
||||
const Aurora::Matrix &receiverPos, const Aurora::Matrix &mpIndex,
|
||||
int SAFT_mode, TransRecosParams &transRecos, Aurora::Matrix &Env);
|
||||
int SAFT_mode, TransRecos &transRecos, Aurora::Matrix &Env);
|
||||
|
||||
Aurora::Matrix polyvaln(PolyModel polymodel, const Aurora::Matrix &indepvar);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user