Fix transmissionDetection

This commit is contained in:
kradchen
2023-05-29 13:57:45 +08:00
parent b22437e9ff
commit 8ffa95198a
2 changed files with 20 additions and 14 deletions

View File

@@ -10,6 +10,7 @@
#include "Function3D.h"
#include "Matrix.h"
#include "common/getMeasurementMetaData.h"
#include "config/config.h"
#include "calculateBankDetectAndHilbertTransformation.hpp"
@@ -146,6 +147,7 @@ namespace Recon {
auto endPos = zeros(Ascan.getDimSize(1), 1);
auto startPosRef = zeros(Ascan.getDimSize(1), 1);
auto endPosRef = zeros(Ascan.getDimSize(1), 1);
#pragma omp parallel for
for (size_t i = 0; i < Ascan.getDimSize(1); i++)
{
startPos[i] = std::floor(std::max(tof[i]*sampleRate+offsetElectronicSamples,1.0));
@@ -314,11 +316,11 @@ namespace Recon {
Matrix _AscanRefBlock_trim = _AscanRefBlock.getDimSize(0)!=M?_AscanRefBlock.block(0, 0, M-1):_AscanRefBlock;
std::copy(_AscanBlock_trim.getData(), _AscanBlock_trim.getData() + totalSize, aScans_r);
std::copy(_AscanRefBlock_trim.getData(), _AscanRefBlock_trim.getData() + totalSize,
aScans_r);
aScansRef_r);
}
calculateBankDetectAndHilbertTransformation(
aScans_r, aScansRef_r, M, N, resampleFactor, nthreads,
aScans_r, aScansRef_r, N, M, resampleFactor, nthreads,
resDetect, resEnvelope, resEnvelopeRef);
delete [] aScans_r;
delete [] aScansRef_r;
@@ -363,12 +365,13 @@ namespace Recon {
auto endPos = zeros(_AscanBlock.getDimSize(1), 1);
auto startPosRef = zeros(_AscanBlock.getDimSize(1), 1);
auto endPosRef = zeros(_AscanBlock.getDimSize(1), 1);
#pragma omp parallel for
for (size_t i = 0; i < _AscanBlock.getDimSize(1); i++)
{
startPos[i] = std::floor(std::max(tofAbs[i]*sampleRate+offsetElectronicSamples,1.0));
endPos[i] = std::ceil(std::min(sizeAscan[1], tofAbs[i]*sampleRate+offsetElectronicSamples+detectionWindowATT));
endPos[i] = std::ceil(std::min(sizeAscan[0], tofAbs[i]*sampleRate+offsetElectronicSamples+detectionWindowATT));
startPosRef[i] = std::floor(std::max( tof2[i],1.0));
endPosRef[i] = std::ceil(std::min(sizeAscan[1], tof2[i]+detectionWindowATT));
endPosRef[i] = std::ceil(std::min(sizeAscan[0], tof2[i]+detectionWindowATT));
}
DetectResult result;
result.att = calculateAttenuation(resEnvelope,startPos,endPos,resEnvelopeRef,startPosRef,endPosRef);
@@ -384,11 +387,13 @@ namespace Recon {
const Aurora::Matrix &sosWaterBlock,
const Aurora::Matrix &sosWaterRefBlock,
double expectedSOSWater) {
auto _sosWaterBlock = temperatureToSoundSpeed(sosWaterBlock, "marczak");
auto _sosWaterRefBlock = temperatureToSoundSpeed(sosWaterRefBlock, "marczak");
switch (Recon::transParams::version) {
case 1: {
return detectTofAndAttMex(
AscanBlock, AscanRefBlock, distBlock, distRefBlock,
sosWaterBlock, sosWaterRefBlock, Recon::transParams::resampleFactor, Recon::transParams::nThreads,
_sosWaterBlock, _sosWaterRefBlock, Recon::transParams::resampleFactor, Recon::transParams::nThreads,
expectedSOSWater, Recon::transParams::useTimeWindowing,
Recon::transParams::aScanReconstructionFrequency, Recon::transParams::detectionWindowATT,
Recon::transParams::offsetElectronic, Recon::transParams::detectionWindowSOS, Recon::transParams::minSpeedOfSound,
@@ -398,7 +403,7 @@ namespace Recon {
default:
return detectTofAndAtt(
AscanBlock, AscanRefBlock, distBlock, distRefBlock,
sosWaterBlock, sosWaterRefBlock, Recon::transParams::resampleFactor, Recon::transParams::nThreads,
_sosWaterBlock, _sosWaterRefBlock, Recon::transParams::resampleFactor, Recon::transParams::nThreads,
expectedSOSWater, Recon::transParams::useTimeWindowing,
Recon::transParams::aScanReconstructionFrequency, Recon::transParams::detectionWindowATT,
Recon::transParams::offsetElectronic, Recon::transParams::detectionWindowSOS, Recon::transParams::minSpeedOfSound,