From d63426ac5b5cdf982f750477640f2b62bb6eeebd Mon Sep 17 00:00:00 2001 From: valorun Date: Thu, 27 Feb 2020 23:04:35 +0100 Subject: [PATCH] fin methode regionMergingAndRefinement (presque) --- ColorimetricSegmenter.cpp | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/ColorimetricSegmenter.cpp b/ColorimetricSegmenter.cpp index 963b50d..15f9978 100644 --- a/ColorimetricSegmenter.cpp +++ b/ColorimetricSegmenter.cpp @@ -313,7 +313,8 @@ std::vector* findRegion(std::vector regionMergingAndRefinement(ccPointCloud* basePointCloud, std::vector* regions, const unsigned TNN, const double TRR, const double TD) + +std::vector* regionMergingAndRefinement(ccPointCloud* basePointCloud, std::vector* regions, const unsigned TNN, const double TRR, const double TD, unsigned Min) { std::vector*>* homogeneous = new std::vector*>(); @@ -351,11 +352,34 @@ std::vector regionMergingAndRefinement(ccPointCloud* bas } } } + // merge all the regions in the same list in {H} and get {R’} + std::vector* mergedRegionsRef = new std::vector(); + for(std::vector* l : *homogeneous) + { + CCLib::ReferenceCloud* merged = l->at(0); + for(int i = 1; isize(); i++) + { + merged->add(*l->at(i)); + } + mergedRegionsRef->push_back(merged); + } + std::vector* knnResult; // for each region Ri in {R’} + /*for (CCLib::ReferenceCloud* r : *mergedRegionsRef) + { // if sizeof(Ri)size() < Min) + { // merge Ri to its nearest neighbors - // end if - // end for + knnRegions(basePointCloud, mergedRegionsRef, r, 1, knnResult, 0); + mergedRegionsRef. + } + }*/ //Return the merged and refined {R’} + std::vector* mergedRegions = new std::vector(); + for (CCLib::ReferenceCloud* r : *mergedRegionsRef) { + mergedRegions->push_back(basePointCloud->partialClone(r)); + } + return mergedRegions; }