diff --git a/Code/Learning/otbListSampleGenerator.h b/Code/Learning/otbListSampleGenerator.h index 62a16aef81b1118ac9640407cb4a56057bc9da78..bebfea70ee4f1cab2166778727aa0644ca00b201 100644 --- a/Code/Learning/otbListSampleGenerator.h +++ b/Code/Learning/otbListSampleGenerator.h @@ -145,7 +145,9 @@ protected: void PrintSelf(std::ostream& os, itk::Indent indent) const; /** Triggers the Computation of the sample list */ - void GenerateData(void); + virtual void GenerateData(void); + + virtual void GenerateInputRequestedRegion(void); /** Compute the calss statistics*/ void GenerateClassStatistics(); diff --git a/Code/Learning/otbListSampleGenerator.txx b/Code/Learning/otbListSampleGenerator.txx index 5351fe16f4a4e207e4e777dfafeffe7153d2d0cb..c1a7ea684dc5ba938b2d73ea77fd7b9a888c17ad 100644 --- a/Code/Learning/otbListSampleGenerator.txx +++ b/Code/Learning/otbListSampleGenerator.txx @@ -188,6 +188,27 @@ ListSampleGenerator<TImage, TVectorData> return dynamic_cast<ListLabelType*>(this->itk::ProcessObject::GetOutput(3)); } +template <class TImage, class TVectorData> +void +ListSampleGenerator<TImage, TVectorData> +::GenerateInputRequestedRegion() +{ + ImagePointerType img = static_cast<ImageType *>(this->ProcessObject::GetInput(0)); + + if(img.IsNotNull()) + { + + // Requested regions will be generated during GenerateData + // call. For now request an empty region so as to avoid requesting + // the largest possible region (fixes bug #943 ) + typename ImageType::RegionType dummyRegion; + typename ImageType::SizeType dummySize; + dummySize.Fill(0); + dummyRegion.SetSize(dummySize); + img->SetRequestedRegion(dummyRegion); + } +} + template <class TImage, class TVectorData> void