From 79ecef8e411b4e30544b02c6ebae7633b5c36695 Mon Sep 17 00:00:00 2001 From: Daniel Girardeau-Montaut Date: Mon, 6 May 2019 21:22:27 +0200 Subject: [PATCH] Ugly bug fix (scales were considered in the opposite order!) --- q3DMASCTools.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/q3DMASCTools.cpp b/q3DMASCTools.cpp index 63800cc..3903fdb 100644 --- a/q3DMASCTools.cpp +++ b/q3DMASCTools.cpp @@ -1145,9 +1145,11 @@ bool Tools::PrepareFeatures(const CorePoints& corePoints, Feature::Set& features //for each scale (from the largest to the smallest) for (size_t scaleIndex = 0; scaleIndex < fas.scales.size(); ++scaleIndex) { + double currentScale = fas.scales[fas.scales.size() - 1 - scaleIndex]; //from the biggest to the smallest! + if (scaleIndex != 0) { - double radius = fas.scales[fas.scales.size() - 1 - scaleIndex] / 2; //scale is the diameter! + double radius = currentScale / 2; //scale is the diameter! double sqRadius = radius * radius; //remove the farthest points for (; kNN > 0; --kNN) @@ -1167,7 +1169,7 @@ bool Tools::PrepareFeatures(const CorePoints& corePoints, Feature::Set& features } //Point features - for (PointFeature::Shared& feature : fas.pointFeaturesPerScale[fas.scales[scaleIndex]]) + for (PointFeature::Shared& feature : fas.pointFeaturesPerScale[currentScale]) { if (feature->cloud1 == sourceCloud && feature->statSF1 && feature->field1) { @@ -1200,7 +1202,7 @@ bool Tools::PrepareFeatures(const CorePoints& corePoints, Feature::Set& features } //Neighborhood features - for (NeighborhoodFeature::Shared& feature : fas.neighborhoodFeaturesPerScale[fas.scales[scaleIndex]]) + for (NeighborhoodFeature::Shared& feature : fas.neighborhoodFeaturesPerScale[currentScale]) { if (feature->cloud1 == sourceCloud && feature->sf1) { @@ -1235,7 +1237,7 @@ bool Tools::PrepareFeatures(const CorePoints& corePoints, Feature::Set& features } //Context-based features - for (ContextBasedFeature::Shared& feature : fas.contextBasedFeaturesPerScale[fas.scales[scaleIndex]]) + for (ContextBasedFeature::Shared& feature : fas.contextBasedFeaturesPerScale[currentScale]) { if (feature->cloud2 == sourceCloud && feature->sf) {