feat: Remove temperature dependensy.
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
#include "Function2D.h"
|
||||
#include "Function3D.h"
|
||||
|
||||
#include "Matrix.h"
|
||||
#include "common/getMeasurementMetaData.h"
|
||||
#include "config/config.h"
|
||||
#include "transmissionReconstruction/detection/detection.cuh"
|
||||
@@ -81,19 +82,18 @@ namespace Recon {
|
||||
}
|
||||
|
||||
TimeWindowResult applyTimeWindowing(const Aurora::Matrix &AscanBlock, float sampleRate,
|
||||
const Aurora::Matrix &distBlock, const Aurora::Matrix &sosBlock,
|
||||
float expectedSOSWater, float startOffset, float segmentLenOffset,
|
||||
const Aurora::Matrix &distBlock, float sosWater,
|
||||
float startOffset, float segmentLenOffset,
|
||||
float minSpeedOfSound, float maxSpeedOfSound, bool gaussWindow)
|
||||
{
|
||||
auto sosOffset = calculateSOSOffset(sosBlock, expectedSOSWater, distBlock, sampleRate);
|
||||
|
||||
Aurora::Matrix sosOffset = Aurora::Matrix::fromRawData(new float[1]{0}, 1);
|
||||
auto calcResult = calculateStarEndSearchPosition(distBlock, minSpeedOfSound, maxSpeedOfSound, sampleRate,AscanBlock.getDimSize(0), sosOffset, startOffset, segmentLenOffset);
|
||||
|
||||
auto AscanBlockProcessed = zeros(AscanBlock.getDimSize(0),AscanBlock.getDimSize(1));
|
||||
|
||||
if(gaussWindow)
|
||||
{
|
||||
auto expectedPosWater = (distBlock / expectedSOSWater) * sampleRate + startOffset;
|
||||
auto expectedPosWater = (distBlock / sosWater) * sampleRate + startOffset;
|
||||
auto windowWidth = calcResult.endSearch-calcResult.startSearch;
|
||||
#pragma omp parallel for
|
||||
for (size_t i = 0; i < AscanBlock.getDimSize(1); i++)
|
||||
@@ -132,7 +132,7 @@ namespace Recon {
|
||||
|
||||
Aurora::Matrix detectAttVectorized(const Aurora::Matrix &Ascan, const Aurora::Matrix &AscanRef,
|
||||
const Aurora::Matrix &distRef,
|
||||
const Aurora::Matrix &sosWaterRef,
|
||||
float sosWaterRef,
|
||||
const Aurora::Matrix &tof, int aScanReconstructionFrequency,
|
||||
float offsetElectronic, int detectionWindowATT)
|
||||
{
|
||||
@@ -173,8 +173,7 @@ namespace Recon {
|
||||
DetectResult detectTofVectorized(
|
||||
const Aurora::Matrix &AscanBlock, const Aurora::Matrix &AscanRefBlock,
|
||||
const Aurora::Matrix &distBlock, const Aurora::Matrix &distBlockRef,
|
||||
const Aurora::Matrix &sosWaterBlock,
|
||||
const Aurora::Matrix &sosWaterRefBlock, float expectedSOSWater,
|
||||
float aSOSWater, float aSOSWaterRef,
|
||||
int useTimeWindowing, int aScanReconstructionFrequency,
|
||||
float offsetElectronic, int detectionWindowSOS, float minSpeedOfSound,
|
||||
float maxSpeedOfSound, bool gaussWindow)
|
||||
@@ -188,12 +187,12 @@ namespace Recon {
|
||||
timeResult2.AscanBlockProcessed = AscanRefBlock;
|
||||
if (useTimeWindowing == 1) {
|
||||
timeResult1 = applyTimeWindowing(
|
||||
AscanBlock, sampleRate, distBlock, sosWaterBlock,
|
||||
expectedSOSWater, offsetElectronicSamples, detectionWindowSOS,
|
||||
AscanBlock, sampleRate, distBlock,
|
||||
aSOSWater, offsetElectronicSamples, detectionWindowSOS,
|
||||
minSpeedOfSound, maxSpeedOfSound, gaussWindow);
|
||||
timeResult2 = applyTimeWindowing(
|
||||
AscanRefBlock, sampleRate, distBlockRef, sosWaterRefBlock,
|
||||
expectedSOSWater, offsetElectronicSamples, detectionWindowSOS,
|
||||
AscanRefBlock, sampleRate, distBlockRef,
|
||||
aSOSWaterRef, offsetElectronicSamples, detectionWindowSOS,
|
||||
minSpeedOfSound, maxSpeedOfSound, gaussWindow);
|
||||
|
||||
diffStartSearch = timeResult1.startSearch - timeResult2.startSearch;
|
||||
@@ -234,7 +233,7 @@ namespace Recon {
|
||||
if (useTimeWindowing) {
|
||||
shiftInSamples = shiftInSamples - diffStartSearch;
|
||||
}
|
||||
auto tof = shiftInSamples / sampleRate + distBlock / sosWaterBlock;
|
||||
auto tof = shiftInSamples / sampleRate + distBlock / aSOSWater;
|
||||
auto sosValue = distBlock / tof;
|
||||
DetectResult result;
|
||||
result.tof = tof;
|
||||
@@ -245,9 +244,7 @@ namespace Recon {
|
||||
DetectResult detectTofAndAtt(
|
||||
const Aurora::Matrix &AscanBlock, const Aurora::Matrix &AscanRefBlock,
|
||||
const Aurora::Matrix &distBlock, const Aurora::Matrix &distRefBlock,
|
||||
const Aurora::Matrix &sosWaterBlock,
|
||||
const Aurora::Matrix &sosWaterRefBlock,
|
||||
int resampleFactor,int nthreads, float expectedSOSWater,
|
||||
int resampleFactor,int nthreads, float aSOSWater, float aSOSWaterRef,
|
||||
int useTimeWindowing, int aScanReconstructionFrequency,int detectionWindowATT,
|
||||
float offsetElectronic, int detectionWindowSOS, float minSpeedOfSound,
|
||||
float maxSpeedOfSound, bool gaussWindow)
|
||||
@@ -261,12 +258,12 @@ namespace Recon {
|
||||
timeResult2.AscanBlockProcessed = AscanRefBlock;
|
||||
if (useTimeWindowing == 1) {
|
||||
timeResult1 = applyTimeWindowing(
|
||||
AscanBlock, sampleRate, distBlock, sosWaterBlock,
|
||||
expectedSOSWater, offsetElectronicSamples, detectionWindowSOS,
|
||||
AscanBlock, sampleRate, distBlock,
|
||||
aSOSWater, offsetElectronicSamples, detectionWindowSOS,
|
||||
minSpeedOfSound, maxSpeedOfSound, gaussWindow);
|
||||
timeResult2 = applyTimeWindowing(
|
||||
AscanRefBlock, sampleRate, distRefBlock, sosWaterRefBlock,
|
||||
expectedSOSWater, offsetElectronicSamples, detectionWindowSOS,
|
||||
AscanRefBlock, sampleRate, distRefBlock,
|
||||
aSOSWaterRef, offsetElectronicSamples, detectionWindowSOS,
|
||||
minSpeedOfSound, maxSpeedOfSound, gaussWindow);
|
||||
|
||||
diffStartSearch = timeResult1.startSearch - timeResult2.startSearch;
|
||||
@@ -307,13 +304,13 @@ namespace Recon {
|
||||
if (useTimeWindowing) {
|
||||
shiftInSamples = shiftInSamples - diffStartSearch;
|
||||
}
|
||||
auto tof = shiftInSamples / sampleRate + distBlock / sosWaterBlock;
|
||||
auto tof = shiftInSamples / sampleRate + distBlock / aSOSWater;
|
||||
auto sosValue = distBlock / tof;
|
||||
DetectResult result;
|
||||
result.sosValue = sosValue;
|
||||
auto tofRel = tof - distBlock / sosWaterBlock;
|
||||
auto tofRel = tof - distBlock / aSOSWater;
|
||||
result.att = detectAttVectorized(
|
||||
_AscanBlock, _AscanRefBlock, distRefBlock, sosWaterRefBlock,
|
||||
_AscanBlock, _AscanRefBlock, distRefBlock, aSOSWaterRef,
|
||||
tof, aScanReconstructionFrequency, offsetElectronic,
|
||||
detectionWindowATT);
|
||||
result.tof = tofRel;
|
||||
@@ -423,11 +420,8 @@ namespace Recon {
|
||||
const Aurora::CudaMatrix &AscanRefBlock,
|
||||
const Aurora::CudaMatrix &distBlock,
|
||||
const Aurora::CudaMatrix &distRefBlock,
|
||||
const Aurora::Matrix &sosWaterBlock,
|
||||
const Aurora::Matrix &sosWaterRefBlock,
|
||||
float expectedSOSWater) {
|
||||
auto _sosWaterBlock = temperatureToSoundSpeed(sosWaterBlock, "marczak").toDeviceMatrix();
|
||||
auto _sosWaterRefBlock = temperatureToSoundSpeed(sosWaterRefBlock, "marczak").toDeviceMatrix();
|
||||
float aSOSWater, float aSOSWaterRef)
|
||||
{
|
||||
switch (Recon::transParams::version) {
|
||||
// case 1: {
|
||||
// return detectTofAndAttMex(
|
||||
@@ -442,8 +436,8 @@ namespace Recon {
|
||||
default:
|
||||
auto r = detectTofAndAtt(
|
||||
AscanBlock, AscanRefBlock, distBlock, distRefBlock,
|
||||
_sosWaterBlock, _sosWaterRefBlock, Recon::transParams::resampleFactor, Recon::transParams::nThreads,
|
||||
expectedSOSWater, Recon::transParams::useTimeWindowing,
|
||||
Recon::transParams::resampleFactor, Recon::transParams::nThreads,
|
||||
aSOSWater, aSOSWaterRef, Recon::transParams::useTimeWindowing,
|
||||
Recon::transParams::aScanReconstructionFrequency, Recon::transParams::detectionWindowATT,
|
||||
Recon::transParams::offsetElectronic, Recon::transParams::detectionWindowSOS, Recon::transParams::minSpeedOfSound,
|
||||
Recon::transParams::maxSpeedOfSound, Recon::transParams::gaussWindow);
|
||||
|
||||
Reference in New Issue
Block a user