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