1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
|
/*=========================================================================
Program: ORFEO Toolbox
Language: C++
Date: $Date$
Version: $Revision$
Copyright (c) Centre National d'Etudes Spatiales. All rights reserved.
See OTBCopyright.txt for details.
Copyright (c) CS Systemes d'information. All rights reserved.
See CSCopyright.txt for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#ifndef otbPointSetToDensityImageFilter_h
#define otbPointSetToDensityImageFilter_h
#include "itkProcessObject.h"
#include "itkPointSet.h"
#include "itkPointSetToImageFilter.h"
#include "otbPointSetDensityFunction.h"
#include "itkPoint.h"
namespace otb
{
/** \class PointSetToDensityImageFilter
* \brief Draw the density of a point set on an image
*
* \ingroup OTBDensity
*/
template <class TInputPointSet, class TOutputImage,
class TDensityFunction = PointSetDensityFunction<TInputPointSet, typename TOutputImage::PixelType> >
class ITK_EXPORT PointSetToDensityImageFilter
: public itk::PointSetToImageFilter<TInputPointSet, TOutputImage>
{
public:
/** Standard class typedefs. */
typedef PointSetToDensityImageFilter Self;
typedef itk::PointSetToImageFilter<TInputPointSet, TOutputImage> Superclass;
typedef itk::SmartPointer<Self> Pointer;
typedef itk::SmartPointer<const Self> ConstPointer;
/** Method for creation through the object factory. */
itkNewMacro(Self);
/** Run-time type information (and related methods). */
itkTypeMacro(PointSetToDensityImageFilter, itk::PointSetToImageFilter);
/** typedefs parameters support */
typedef TInputPointSet PointSetType;
typedef TOutputImage OutputImageType;
typedef typename OutputImageType::PixelType PixelType;
typedef typename OutputImageType::IndexType IndexType;
typedef typename OutputImageType::RegionType OutputImageRegionType;
/** typedef filter support*/
typedef TDensityFunction PointSetDensityFunctionType;
typedef typename PointSetDensityFunctionType::InputType InputType;
typedef typename PointSetDensityFunctionType::Pointer PointSetDensityFunctionPointerType;
/** Set/Get Radius*/
itkGetMacro(Radius, unsigned int);
itkSetMacro(Radius, unsigned int);
protected:
/**
* Constructor.
*/
PointSetToDensityImageFilter();
/**
* Destructor.
*/
~PointSetToDensityImageFilter() ITK_OVERRIDE {}
/**
* Standard PrintSelf method.
*/
void PrintSelf(std::ostream& os, itk::Indent indent) const ITK_OVERRIDE;
/**
* Call the ImageSource::GenerateData which handle multithreading
*/
void GenerateData() ITK_OVERRIDE;
/**
* Main computation method.
*/
void ThreadedGenerateData(const OutputImageRegionType& outputRegionForThread,
itk::ThreadIdType threadId) ITK_OVERRIDE;
/**
* Main computation method.
*/
void GenerateOutputInformation() ITK_OVERRIDE;
private:
PointSetToDensityImageFilter(const Self &); //purposely not implemented
void operator =(const Self&); //purposely not implemented
unsigned int m_Radius;
};
}
#ifndef OTB_MANUAL_INSTANTIATION
#include "otbPointSetToDensityImageFilter.txx"
#endif
#endif
|