diff --git a/src/reflectionReconstruction/startReflectionReconstruction.cpp b/src/reflectionReconstruction/startReflectionReconstruction.cpp index 388d58a..ba75876 100644 --- a/src/reflectionReconstruction/startReflectionReconstruction.cpp +++ b/src/reflectionReconstruction/startReflectionReconstruction.cpp @@ -61,9 +61,9 @@ void producerThread( Parser* aParser, const Aurora::Matrix& aMotorPos, int index=1; for(int i=0; i lock(PRODUCER_MUTEX); diff --git a/src/transmissionReconstruction/detection/detection.cpp b/src/transmissionReconstruction/detection/detection.cpp index 68f6c11..9aad287 100644 --- a/src/transmissionReconstruction/detection/detection.cpp +++ b/src/transmissionReconstruction/detection/detection.cpp @@ -13,6 +13,8 @@ #include "common/getMeasurementMetaData.h" #include "config/config.h" +#include "log/log.h" + using namespace Aurora; namespace Recon { Matrix analyzeDetections(const Matrix &slBlockTotal, const Matrix &snBlockTotal, const Matrix &rlBlockTotal, const Matrix &rnBlockTotal, const Matrix &tofDataTotal){ @@ -154,6 +156,7 @@ namespace Recon { startPosRef[i] = std::floor(std::max( tof2[i],(float)1.0)); endPosRef[i] = std::ceil(std::min(sizeAscan[1], tof2[i]+detectionWindowATT)); } + RECON_INFO("calculateAttenuation start"); return calculateAttenuation(envelopeOfAScan,startPos,endPos,envelopeOfReferenceAScan,startPosRef,endPosRef); } @@ -257,6 +260,7 @@ namespace Recon { TimeWindowResult timeResult2; timeResult2.AscanBlockProcessed = AscanRefBlock; if (useTimeWindowing == 1) { + RECON_INFO("applyTimeWindowing start"); timeResult1 = applyTimeWindowing( AscanBlock, sampleRate, distBlock, sosWaterBlock, expectedSOSWater, offsetElectronicSamples, detectionWindowSOS, @@ -267,6 +271,7 @@ namespace Recon { minSpeedOfSound, maxSpeedOfSound, gaussWindow); diffStartSearch = timeResult1.startSearch - timeResult2.startSearch; + RECON_INFO("applyTimeWindowing end"); } auto _AscanBlock = timeResult1.AscanBlockProcessed; auto _AscanRefBlock = timeResult2.AscanBlockProcessed; @@ -277,12 +282,12 @@ namespace Recon { auto mxl = std::min(maxlag, m - 1); auto ceilLog2 = nextpow2(2 * m - 1); auto m2 = pow(2, ceilLog2); - + RECON_INFO("fft start"); auto x = fft(_AscanBlock, m2); auto y = fft(_AscanRefBlock, m2); auto c_1_1 = x * conj(y); auto c_1_2 = ifft(c_1_1); - + RECON_INFO("fft end"); auto c1 = real(c_1_2); auto c = zeros(mxl + mxl + 1, c1.getDimSize(1)); c.setBlock(0, 0, mxl-1, c1.block(0, m2-mxl,m2-1)); @@ -309,11 +314,13 @@ namespace Recon { DetectResult result; result.sosValue = sosValue; auto tofRel = tof - distBlock / sosWaterBlock; + RECON_INFO("detectAttVectorized start"); result.att = detectAttVectorized( _AscanBlock, _AscanRefBlock, distRefBlock, sosWaterRefBlock, tof, aScanReconstructionFrequency, offsetElectronic, detectionWindowATT); result.tof = tofRel; + RECON_INFO("detectAttVectorized end"); return result; } diff --git a/src/transmissionReconstruction/detection/getTransmissionData.cpp b/src/transmissionReconstruction/detection/getTransmissionData.cpp index 295ce74..c238b6c 100644 --- a/src/transmissionReconstruction/detection/getTransmissionData.cpp +++ b/src/transmissionReconstruction/detection/getTransmissionData.cpp @@ -57,12 +57,14 @@ namespace std::mutex PROCESS_BUFFER_MUTEX; std::condition_variable PROCESS_BUFFER_CONDITION; int BUFFER_COUNT = 0; - int BUFFER_SIZE = 4; + int BUFFER_SIZE = 1; Matrix prepareAScansForTransmissionDetection(const Matrix& aAscanBlock, const Matrix& aGainBlock) { + RECON_INFO("prepareAScansForTransmissionDetection start"); Matrix result = aAscanBlock / repmat(aGainBlock, aAscanBlock.getDimSize(0), 1); result = result - repmat(mean(result,FunctionDirection::Column), result.getDimSize(0), 1); + RECON_INFO("prepareAScansForTransmissionDetection end"); return result; } @@ -73,12 +75,17 @@ namespace { BlockOfTransmissionData result; MetaInfos metaInfos; + RECON_INFO("getAscanBlockPreprocessed start"); auto blockData = getAscanBlockPreprocessed(aParser, aMp, aSl, aSn, aRlList, aRnList, aGeom, aExpInfo, true, true); auto blockDataRef = getAscanBlockPreprocessed(aParserRef, aMpRef, aSl, aSn, aRlList, aRnList, aGeomRef, aExpInfoRef, true, true); + RECON_INFO("getAscanBlockPreprocessed end"); + RECON_INFO("prepareAScansForTransmissionDetection start"); Matrix ascanBlock = prepareAScansForTransmissionDetection(blockData.ascanBlockPreprocessed, blockData.gainBlock); Matrix ascanBlockRef = prepareAScansForTransmissionDetection(blockDataRef.ascanBlockPreprocessed, blockDataRef.gainBlock); + RECON_INFO("prepareAScansForTransmissionDetection end"); blockData.ascanBlockPreprocessed = Matrix(); blockDataRef.ascanBlockPreprocessed = Matrix(); + RECON_INFO("Matrix * + start"); if(aExpInfo.Hardware == "USCT3dv3") { Matrix channelList = precalculateChannelList(aRlList, aRnList, aExpInfo, aPreComputes); @@ -159,6 +166,7 @@ namespace cblas_scopy(image.getDataSize(), image.getData(), 1 , complexData + 1 ,2); complex = Matrix::New(complexData, real.getDimSize(0), real.getDimSize(1), 1, Aurora::Complex); ascanBlockRef = Aurora::real(ifft(complex)); + RECON_INFO("Matrix * + end"); } else { @@ -168,16 +176,15 @@ namespace if(transParams::applyCalib) { + RECON_INFO("calculateSnr start"); metaInfos.snrValues = calculateSnr(ascanBlock, aSnrRmsNoise[0]); metaInfos.snrValuesRef = calculateSnr(ascanBlockRef, aSnrRmsNoiseRef[0]); + RECON_INFO("calculateSnr end"); } - Matrix dists = distanceBetweenTwoPoints(blockData.senderPositionBlock, blockData.receiverPositionBlock); Matrix distRefBlock = distanceBetweenTwoPoints(blockDataRef.senderPositionBlock, blockDataRef.receiverPositionBlock); - Matrix waterTempBlock = calculateWaterTemperature(aTasTemps.waterTempPreCalc_sl, aTasTemps.waterTempPreCalc_rl, blockData.slBlock, blockData.rlBlock, blockData.mpBlock); Matrix waterTempRefBlock = calculateWaterTemperature(aTasTemps.waterTempRefPreCalc_sl, aTasTemps.waterTempRefPreCalc_rl, blockData.slBlock, blockData.rlBlock, blockDataRef.mpBlock); - if(transParams::saveDetection || transParams::outlierOnTasDetection || transParams::saveDebugInfomation) { metaInfos.mpBlock = blockData.mpBlock; @@ -216,6 +223,7 @@ void getBlockOfTransmissionDataInThread(size_t aIndex, const Matrix& aMp, const aExpInfo, aExpInfoRef, aPreComputes, aParser, aParserRef); std::unique_lock lock(CREATE_BUFFER_MUTEX); BLOCK_OF_TRANSIMISSIONDARA_BUFFER[std::to_string(aIndex)] = buffer; + RECON_INFO("add"); std::cout<<"add: "< lock(CREATE_BUFFER_MUTEX); CREATE_BUFFER_CONDITION.wait(lock, []{return BUFFER_COUNT lockBufferCount(CREATE_BUFFER_MUTEX); BLOCK_OF_TRANSIMISSIONDARA_BUFFER.erase(std::to_string(index)); --BUFFER_COUNT; finish_count++; lockBufferCount.unlock(); - std::cout<<"\rTransmission reconstructing...... "<< finish_count<<"/64"; - std::cout.flush(); + RECON_INFO("Remove"); + std::cout<<"Remove: "<