From dc3e50391dcaba7bbbbf0c5fd501b84619e94e0e Mon Sep 17 00:00:00 2001 From: "raffaele.gaetano" <raffaele.gaetano@cirad.fr> Date: Wed, 20 Jul 2022 16:58:35 +0200 Subject: [PATCH] Allows to fix margin manually --- app/otbSingleTileGRMGraph.cxx | 6 +++++- include/lsgrmController.h | 2 +- include/lsgrmController.txx | 5 +++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/app/otbSingleTileGRMGraph.cxx b/app/otbSingleTileGRMGraph.cxx index 50b5633..e714a1d 100644 --- a/app/otbSingleTileGRMGraph.cxx +++ b/app/otbSingleTileGRMGraph.cxx @@ -110,6 +110,8 @@ private: AddParameter(ParameterType_Int, "tiling.user.sizex", "Tiles width"); AddParameter(ParameterType_Int, "tiling.user.sizey", "Tiles height"); AddParameter(ParameterType_Int, "tiling.user.nfirstiter", "Number of first iterations"); + AddParameter(ParameterType_Int, "tiling.user.margin", "Allows to manually set margin between tiles."); + MandatoryOff("tiling.user.margin"); AddChoice("tiling.none", "No tiling layout"); } @@ -167,7 +169,9 @@ private: } // Run the segmentation - controller->GetTilingLayout(); + unsigned int margin = 0; + if (HasValue("tiling.user.margin")) margin = GetParameterInt("tiling.user.margin"); + controller->GetTilingLayout(margin); if (HasValue("xtileidx")) { if (HasValue("ytileidx")) { diff --git a/include/lsgrmController.h b/include/lsgrmController.h index 5be9e20..80a1e3f 100644 --- a/include/lsgrmController.h +++ b/include/lsgrmController.h @@ -40,7 +40,7 @@ public: void Modified(); void RunSegmentation(); - void GetTilingLayout(); + void GetTilingLayout(const unsigned int margin = 0); void ProcessSingleTile(unsigned int xidx, unsigned int yidx, const SegmentationParameterType& params); void JustMergeAndAchieveSegmentation(const unsigned int maxiter); diff --git a/include/lsgrmController.txx b/include/lsgrmController.txx index f4f92fc..c79dc90 100644 --- a/include/lsgrmController.txx +++ b/include/lsgrmController.txx @@ -213,7 +213,7 @@ void Controller<TSegmenter>::RunSegmentation() * TODO: compute the correct number of iterations ! */ template<class TSegmenter> -void Controller<TSegmenter>::GetTilingLayout() +void Controller<TSegmenter>::GetTilingLayout(const unsigned int margin) { itkDebugMacro(<< "Entering GetTilingLayout()"); @@ -229,7 +229,8 @@ void Controller<TSegmenter>::GetTilingLayout() { m_NbTilesX = std::floor(m_InputImage->GetLargestPossibleRegion().GetSize()[0] / m_TileWidth); m_NbTilesY = std::floor(m_InputImage->GetLargestPossibleRegion().GetSize()[1] / m_TileHeight); - m_Margin = static_cast<unsigned int>(pow(2, m_NumberOfFirstIterations + 1) - 2); + if (!margin) m_Margin = static_cast<unsigned int>(pow(2, m_NumberOfFirstIterations + 1) - 2); + else m_Margin = margin; } std::cout << -- GitLab