diff --git a/Modules/Fusion/MajorityVoting/include/otbNeighborhoodMajorityVotingImageFilter.h b/Modules/Fusion/MajorityVoting/include/otbNeighborhoodMajorityVotingImageFilter.h index 39d04f689ad6bb90b695073cb6a4a32c9b8e6685..ce25b90ecedb1db3c54530bac7ffd8b0d9f3bfe7 100644 --- a/Modules/Fusion/MajorityVoting/include/otbNeighborhoodMajorityVotingImageFilter.h +++ b/Modules/Fusion/MajorityVoting/include/otbNeighborhoodMajorityVotingImageFilter.h @@ -164,6 +164,7 @@ protected: const KernelIteratorType kernelBegin, const KernelIteratorType kernelEnd); + virtual void GenerateOutputInformation(); private: NeighborhoodMajorityVotingImageFilter(const Self&); //purposely not implemented diff --git a/Modules/Fusion/MajorityVoting/include/otbNeighborhoodMajorityVotingImageFilter.txx b/Modules/Fusion/MajorityVoting/include/otbNeighborhoodMajorityVotingImageFilter.txx index 2889cf1d861de2ec69193924e94da97db67d565c..93c05d6b2034c637528cfaecec84e7e69a9fc89b 100644 --- a/Modules/Fusion/MajorityVoting/include/otbNeighborhoodMajorityVotingImageFilter.txx +++ b/Modules/Fusion/MajorityVoting/include/otbNeighborhoodMajorityVotingImageFilter.txx @@ -23,6 +23,9 @@ // gets integrated into the main directories. #include "otbNeighborhoodMajorityVotingImageFilter.h" +#include "itkDefaultConvertPixelTraits.h" +#include "itkMetaDataObject.h" +#include "otbMetaDataKey.h" namespace otb { @@ -118,6 +121,30 @@ const KernelIteratorType kernelEnd) return majorityLabel; } +template<class TInputImage, class TOutputImage, class TKernel> +void +NeighborhoodMajorityVotingImageFilter<TInputImage, TOutputImage, TKernel> +::GenerateOutputInformation() +{ + Superclass::GenerateOutputInformation(); + + TOutputImage* outputPtr = this->GetOutput(); + + // Set the NoData value using the background + const unsigned int & nbBands = outputPtr->GetNumberOfComponentsPerPixel(); + std::vector<bool> noDataValueAvailable; + noDataValueAvailable.resize(nbBands,true); + std::vector<double> noDataValue; + noDataValue.resize(nbBands,0.0); + for (unsigned int i=0 ; i<nbBands ; ++i) + { + noDataValue[i] = itk::DefaultConvertPixelTraits<PixelType>::GetNthComponent(i,m_LabelForNoDataPixels); + } + itk::MetaDataDictionary& dict = outputPtr->GetMetaDataDictionary(); + itk::EncapsulateMetaData<std::vector<bool> >(dict,MetaDataKey::NoDataValueAvailable,noDataValueAvailable); + itk::EncapsulateMetaData<std::vector<double> >(dict,MetaDataKey::NoDataValue,noDataValue); +} + } // end namespace otb #endif diff --git a/Modules/Fusion/MajorityVoting/otb-module.cmake b/Modules/Fusion/MajorityVoting/otb-module.cmake index bc585bf62a7088aa2ca551d384bcc6f9d011b36b..8643c503476f640fd87ad82754cfb97720c56a8b 100644 --- a/Modules/Fusion/MajorityVoting/otb-module.cmake +++ b/Modules/Fusion/MajorityVoting/otb-module.cmake @@ -5,6 +5,7 @@ this label value (see also DempsterShafer module).") otb_module(OTBMajorityVoting DEPENDS OTBITK + OTBOSSIMAdapters TEST_DEPENDS OTBTestKernel