commit dev-sun.
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
#include "getAScanBlockPreprocessed.h"
|
||||
|
||||
#include "CudaMatrix.h"
|
||||
#include "Matrix.h"
|
||||
#include "blockingGeometryInfo.h"
|
||||
#include "removeDataFromArrays.h"
|
||||
@@ -10,15 +11,36 @@
|
||||
#include "src/transmissionReconstruction/dataFilter/dataFilter.h"
|
||||
#include "src/reflectionReconstruction/dataFilter.h"
|
||||
|
||||
#include "Aurora.h"
|
||||
|
||||
using namespace Aurora;
|
||||
using namespace Recon;
|
||||
|
||||
#include <sys/time.h>
|
||||
#include <iostream>
|
||||
void printTime()
|
||||
{
|
||||
struct timeval tpend;
|
||||
gettimeofday(&tpend,NULL);
|
||||
int secofday = (tpend.tv_sec + 3600 * 8 ) % 86400;
|
||||
int hours = secofday / 3600;
|
||||
int minutes = (secofday - hours * 3600 ) / 60;
|
||||
int seconds = secofday % 60;
|
||||
int milliseconds = tpend.tv_usec/1000;
|
||||
std::cout<< hours << ":" <<minutes<<":"<<seconds<<"."<<milliseconds<<std::endl;
|
||||
}
|
||||
|
||||
AscanBlockPreprocessed Recon::getAscanBlockPreprocessed(Parser* aParser, const Aurora::Matrix& aMp, const Aurora::Matrix& aSl, const Aurora::Matrix& aSn,
|
||||
const Aurora::Matrix& aRl, const Aurora::Matrix& aRn, GeometryInfo& aGeom, const MeasurementInfo& aMeasInfo,
|
||||
bool aApplyFilter, bool aTransReco)
|
||||
{
|
||||
//std::cout<<"strart"<<std::endl;
|
||||
//printTime();
|
||||
//550ms
|
||||
AscanBlockPreprocessed result;
|
||||
AscanBlock ascanBlock = getAscanBlock(aParser, aMp, aSl, aSn, aRl, aRn);
|
||||
//printTime();
|
||||
//10ms
|
||||
result.gainBlock = ascanBlock.gainBlock;
|
||||
result.mpBlock = ascanBlock.mpBlock;
|
||||
result.rlBlock = ascanBlock.rlBlock;
|
||||
@@ -26,6 +48,8 @@ AscanBlockPreprocessed Recon::getAscanBlockPreprocessed(Parser* aParser, const A
|
||||
result.slBlock = ascanBlock.slBlock;
|
||||
result.snBlock = ascanBlock.snBlock;
|
||||
GeometryBlock geometryBlock = blockingGeometryInfos(aGeom, ascanBlock.rnBlock, ascanBlock.rlBlock, ascanBlock.snBlock, ascanBlock.slBlock, ascanBlock.mpBlock);
|
||||
//printTime();
|
||||
//3ms
|
||||
result.receiverPositionBlock = geometryBlock.receiverPositionBlock;
|
||||
result.senderPositionBlock = geometryBlock.senderPositionBlock;
|
||||
if(aApplyFilter)
|
||||
@@ -40,7 +64,8 @@ AscanBlockPreprocessed Recon::getAscanBlockPreprocessed(Parser* aParser, const A
|
||||
{
|
||||
usedData = filterReflectionData(geometryBlock.receiverPositionBlock, geometryBlock.senderPositionBlock, geometryBlock.senderNormalBlock, reflectParams::constrictReflectionAngles);
|
||||
}
|
||||
|
||||
//printTime();
|
||||
//150ms
|
||||
ascanBlock.ascanBlock = removeDataFromArrays(ascanBlock.ascanBlock, usedData);
|
||||
result.mpBlock = removeDataFromArrays(ascanBlock.mpBlock, usedData);
|
||||
result.slBlock = removeDataFromArrays(ascanBlock.slBlock, usedData);
|
||||
@@ -51,7 +76,8 @@ AscanBlockPreprocessed Recon::getAscanBlockPreprocessed(Parser* aParser, const A
|
||||
result.senderPositionBlock = removeDataFromArrays(geometryBlock.senderPositionBlock, usedData);
|
||||
result.receiverPositionBlock = removeDataFromArrays(geometryBlock.receiverPositionBlock, usedData);
|
||||
result.gainBlock = removeDataFromArrays(ascanBlock.gainBlock, usedData);
|
||||
|
||||
//printTime();
|
||||
//120ms
|
||||
}
|
||||
|
||||
if (ascanBlock.ascanBlock.getDataSize() > 0)
|
||||
@@ -62,6 +88,72 @@ AscanBlockPreprocessed Recon::getAscanBlockPreprocessed(Parser* aParser, const A
|
||||
{
|
||||
result.ascanBlockPreprocessed = ascanBlock.ascanBlock;
|
||||
}
|
||||
|
||||
//printTime();
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
AscanBlockPreprocessedCuda Recon::getAscanBlockPreprocessedCuda(Parser* aParser, const Aurora::Matrix& aMp, const Aurora::Matrix& aSl, const Aurora::Matrix& aSn,
|
||||
const Aurora::Matrix& aRl, const Aurora::Matrix& aRn, GeometryInfo& aGeom, const MeasurementInfo& aMeasInfo,
|
||||
bool aApplyFilter, bool aTransReco)
|
||||
{
|
||||
//std::cout<<"strart"<<std::endl;
|
||||
//printTime();
|
||||
//550ms
|
||||
AscanBlockPreprocessedCuda result;
|
||||
AscanBlock ascanBlock = getAscanBlock(aParser, aMp, aSl, aSn, aRl, aRn);
|
||||
//printTime();
|
||||
//300ms
|
||||
result.ascanBlockPreprocessed = ascanBlock.ascanBlock.toDeviceMatrix();
|
||||
result.gainBlock = ascanBlock.gainBlock.toDeviceMatrix();
|
||||
result.mpBlock = ascanBlock.mpBlock;
|
||||
result.rlBlock = ascanBlock.rlBlock;
|
||||
result.rnBlock = ascanBlock.rnBlock;
|
||||
result.slBlock = ascanBlock.slBlock;
|
||||
result.snBlock = ascanBlock.snBlock;
|
||||
GeometryBlock geometryBlock = blockingGeometryInfos(aGeom, ascanBlock.rnBlock, ascanBlock.rlBlock, ascanBlock.snBlock, ascanBlock.slBlock, ascanBlock.mpBlock);
|
||||
//printTime();
|
||||
//3ms
|
||||
result.receiverPositionBlock = geometryBlock.receiverPositionBlock;
|
||||
result.senderPositionBlock = geometryBlock.senderPositionBlock;
|
||||
if(aApplyFilter)
|
||||
{
|
||||
Matrix usedData;
|
||||
if(aTransReco)
|
||||
{
|
||||
usedData = filterTransmissionData(ascanBlock.slBlock, ascanBlock.snBlock, ascanBlock.rlBlock, ascanBlock.rnBlock,
|
||||
aGeom.sensData, geometryBlock.senderNormalBlock, geometryBlock.receiverNormalBlock);
|
||||
}
|
||||
else
|
||||
{
|
||||
usedData = filterReflectionData(geometryBlock.receiverPositionBlock, geometryBlock.senderPositionBlock, geometryBlock.senderNormalBlock, reflectParams::constrictReflectionAngles);
|
||||
}
|
||||
//printTime();
|
||||
//40ms
|
||||
CudaMatrix usedDataDevice = usedData.toDeviceMatrix();
|
||||
result.ascanBlockPreprocessed = valid(result.ascanBlockPreprocessed, usedDataDevice);
|
||||
result.mpBlock = removeDataFromArrays(ascanBlock.mpBlock, usedData);
|
||||
result.slBlock = removeDataFromArrays(ascanBlock.slBlock, usedData);
|
||||
result.snBlock = removeDataFromArrays(ascanBlock.snBlock, usedData);
|
||||
result.rlBlock = removeDataFromArrays(ascanBlock.rlBlock, usedData);
|
||||
result.rnBlock = removeDataFromArrays(ascanBlock.rnBlock, usedData);
|
||||
|
||||
result.senderPositionBlock = removeDataFromArrays(geometryBlock.senderPositionBlock, usedData);
|
||||
result.receiverPositionBlock = removeDataFromArrays(geometryBlock.receiverPositionBlock, usedData);
|
||||
result.gainBlock = valid(result.gainBlock, usedDataDevice);
|
||||
//printTime();
|
||||
//10ms
|
||||
}
|
||||
|
||||
if (ascanBlock.ascanBlock.getDataSize() > 0)
|
||||
{
|
||||
result.ascanBlockPreprocessed = preprocessAscanBlockCuda(result.ascanBlockPreprocessed, aMeasInfo);
|
||||
}
|
||||
// else
|
||||
// {
|
||||
// result.ascanBlockPreprocessed = ascanBlock.ascanBlock;
|
||||
// }
|
||||
//printTime();
|
||||
//std::cout<<"end"<<std::endl;
|
||||
return result;
|
||||
}
|
||||
Reference in New Issue
Block a user