Try recon

This commit is contained in:
kradchen
2023-06-14 14:48:53 +08:00
parent 4913ab7e60
commit 1d0b53126a
3 changed files with 49 additions and 26 deletions

View File

@@ -1,3 +1,4 @@
#include "config/config.h"
#define EIGEN_USE_MKL_ALL #define EIGEN_USE_MKL_ALL
#include <iostream> #include <iostream>
@@ -28,6 +29,7 @@ int main()
auto defaultLogger = getLogger("Main"); auto defaultLogger = getLogger("Main");
spdlog::set_default_logger(defaultLogger); spdlog::set_default_logger(defaultLogger);
SPDLOG_INFO("start"); SPDLOG_INFO("start");
Recon::initalizeConfig();
Recon::startReconstructions(); Recon::startReconstructions();
SPDLOG_INFO("finish"); SPDLOG_INFO("finish");
return 0; return 0;

View File

@@ -85,18 +85,18 @@ namespace Recon {
Matrix_t senderIdx{nullptr, Matrix_t senderIdx{nullptr,
2, 2,
{senderIndex.getDataSize(),1, 1}, {1,senderIndex.getDataSize(), 1},
senderIndex.getDataSize()}; senderIndex.getDataSize()};
temp1 = new unsigned short[senderIndex.getDataSize()]; auto temp2 = new unsigned short[senderIndex.getDataSize()];
std::copy(senderIndex.getData(), std::copy(senderIndex.getData(),
senderIndex.getData() + senderIndex.getDataSize(), temp1); senderIndex.getData() + senderIndex.getDataSize(), temp2);
senderIdx.Data = temp1; senderIdx.Data = temp2;
params.push_back(senderIdx); params.push_back(senderIdx);
Matrix_t receiverGeom{nullptr, Matrix_t receiverGeom{nullptr,
(size_t)receiverPosGeom.getDims(), (size_t)receiverPosGeom.getDims(),
{(size_t)receiverPosGeom.getDimSize(0), {(size_t)receiverPosGeom.getDimSize(1),
(size_t)receiverPosGeom.getDimSize(1), (size_t)receiverPosGeom.getDimSize(0),
(size_t)receiverPosGeom.getDimSize(2)}, (size_t)receiverPosGeom.getDimSize(2)},
receiverPosGeom.getDataSize()}; receiverPosGeom.getDataSize()};
float *fdata = new float[receiverPosGeom.getDataSize()]{0}; float *fdata = new float[receiverPosGeom.getDataSize()]{0};
@@ -107,14 +107,14 @@ namespace Recon {
Matrix_t senderGeom{nullptr, Matrix_t senderGeom{nullptr,
(size_t)senderPosGeom.getDims(), (size_t)senderPosGeom.getDims(),
{(size_t)senderPosGeom.getDimSize(0), {(size_t)senderPosGeom.getDimSize(1),
(size_t)senderPosGeom.getDimSize(1), (size_t)senderPosGeom.getDimSize(1),
(size_t)senderPosGeom.getDimSize(2)}, (size_t)senderPosGeom.getDimSize(2)},
senderPosGeom.getDataSize()}; senderPosGeom.getDataSize()};
fdata = new float[senderPosGeom.getDataSize()]{0}; auto fdata1 = new float[senderPosGeom.getDataSize()]{0};
std::copy(senderPosGeom.getData(), std::copy(senderPosGeom.getData(),
senderPosGeom.getData() + senderPosGeom.getDataSize(), fdata); senderPosGeom.getData() + senderPosGeom.getDataSize(), fdata1);
senderGeom.Data = fdata; senderGeom.Data = fdata1;
params.push_back(senderGeom); params.push_back(senderGeom);
Matrix_t _SAFT_mode{&SAFT_mode, 1, {1, 1, 1}, 1}; Matrix_t _SAFT_mode{&SAFT_mode, 1, {1, 1, 1}, 1};
@@ -131,10 +131,10 @@ namespace Recon {
(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}; auto fdata2 = 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(), fdata2);
SpeedMap3D.Data = fdata; SpeedMap3D.Data = fdata2;
params.push_back(SpeedMap3D); params.push_back(SpeedMap3D);
Matrix_t BeginTransMap{nullptr, Matrix_t BeginTransMap{nullptr,
@@ -143,10 +143,10 @@ namespace Recon {
(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}; auto fdata3 = 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(), fdata3);
BeginTransMap.Data = fdata; BeginTransMap.Data = fdata3;
params.push_back(BeginTransMap); params.push_back(BeginTransMap);
Matrix_t DeltaTransMap{nullptr, Matrix_t DeltaTransMap{nullptr,
@@ -155,9 +155,9 @@ namespace Recon {
1, 1,
1, 1,
1}; 1};
fdata = new float[1]{0}; auto fdata4 = new float[1]{0};
fdata[0] = transRecos.deltaTransMap; fdata4[0] = transRecos.deltaTransMap;
DeltaTransMap.Data = fdata; DeltaTransMap.Data = fdata4;
params.push_back(DeltaTransMap); params.push_back(DeltaTransMap);
Matrix_t AttenuationMap3D{nullptr, Matrix_t AttenuationMap3D{nullptr,
@@ -166,10 +166,10 @@ namespace Recon {
(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}; auto fdata5 = 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(), fdata5);
AttenuationMap3D.Data = fdata; AttenuationMap3D.Data = fdata5;
params.push_back(AttenuationMap3D); params.push_back(AttenuationMap3D);
float imageResolution_v = (float)reflectParams::imageResolution; float imageResolution_v = (float)reflectParams::imageResolution;
@@ -189,10 +189,7 @@ namespace Recon {
{(size_t)Env.getDimSize(0), (size_t)Env.getDimSize(1), {(size_t)Env.getDimSize(0), (size_t)Env.getDimSize(1),
(size_t)Env.getDimSize(2)}, (size_t)Env.getDimSize(2)},
Env.getDataSize()}; Env.getDataSize()};
float *Envdata = new float[Env.getDataSize()]{0}; _Env.Data = Env.getData();
std::copy(Env.getData(), Env.getData() + Env.getDataSize(),
Envdata);
_Env.Data = Envdata;
params.push_back(_Env); params.push_back(_Env);
int blockXYZ_v[3]{(int)reflectParams::blockDimXYZ[0],(int)reflectParams::blockDimXYZ[1],(int)reflectParams::blockDimXYZ[2]}; int blockXYZ_v[3]{(int)reflectParams::blockDimXYZ[0],(int)reflectParams::blockDimXYZ[1],(int)reflectParams::blockDimXYZ[2]};
@@ -212,6 +209,7 @@ namespace Recon {
if (reflectParams::useAscanIndex == 0){ if (reflectParams::useAscanIndex == 0){
Matrix_t medianWindowSize{&reflectParams::medianWindowSize,1,{1,1,1},1}; Matrix_t medianWindowSize{&reflectParams::medianWindowSize,1,{1,1,1},1};
params.push_back(medianWindowSize);
} }
int other[2]={reflectParams::debugMode, reflectParams::attenuationCorrectionLimit} ; int other[2]={reflectParams::debugMode, reflectParams::attenuationCorrectionLimit} ;
@@ -219,10 +217,32 @@ namespace Recon {
params.push_back(otherP); params.push_back(otherP);
if (reflectParams::useAscanIndex == 0) { if (reflectParams::useAscanIndex == 0) {
auto result = SAFT_ATT(params); auto result = SAFT_ATT(params);
delete [] ASdata;
delete [] (float*)imageStartpoint.Data;
delete [] temp1;
delete [] temp2;
delete [] fdata;
delete [] fdata1;
delete [] fdata2;
delete [] fdata3;
delete [] fdata4;
delete [] fdata5;
delete [] gdata;
return Aurora::Matrix::fromRawData((double *)result.Data, result.Dims[0], return Aurora::Matrix::fromRawData((double *)result.Data, result.Dims[0],
result.Dims[1], result.Dims[2]); result.Dims[1], result.Dims[2]);
} else { } else {
auto result = SAFT_TOFI(params); auto result = SAFT_TOFI(params);
delete [] ASdata;
delete [] (float*)imageStartpoint.Data;
delete [] temp1;
delete [] temp2;
delete [] fdata;
delete [] fdata1;
delete [] fdata2;
delete [] fdata3;
delete [] fdata4;
delete [] fdata5;
delete [] gdata;
return Aurora::Matrix::fromRawData((double *)result.Data, result.Dims[0], return Aurora::Matrix::fromRawData((double *)result.Data, result.Dims[0],
result.Dims[1], result.Dims[2]); result.Dims[1], result.Dims[2]);
} }

View File

@@ -87,6 +87,7 @@ Aurora::Matrix Recon::startReflectionReconstruction( Parser* aParser, int aSAFT_
removeDataFromArrays(blockData.receiverPositionBlock, preprocessData.usedData), removeDataFromArrays(blockData.receiverPositionBlock, preprocessData.usedData),
removeDataFromArrays(blockData.mpBlock, preprocessData.usedData), removeDataFromArrays(blockData.mpBlock, preprocessData.usedData),
aSAFT_mode, aTransRecos, Env); aSAFT_mode, aTransRecos, Env);
printf("%d\n",j);
} }
} }