template<typename TInputImage, typename TOutputImage>
class itk::PatchBasedDenoisingImageFilter< TInputImage, TOutputImage >
Derived class implementing a specific patch-based denoising algorithm, as detailed below.
This class is derived from the base class PatchBasedDenoisingBaseImageFilter; please refer to the documentation of the base class first. This class implements a denoising filter that uses iterative non-local, or semi-local, weighted averaging of image patches for image denoising. The intensity at each pixel 'p' gets updated as a weighted average of intensities of a chosen subset of pixels from the image.
This class implements the denoising algorithm using a Gaussian kernel function for nonparametric density estimation. The class implements a scheme to automatically estimated the kernel bandwidth parameter (namely, sigma) using leave-one-out cross validation. It implements schemes for random sampling of patches non-locally (from the entire image) as well as semi-locally (from the spatial proximity of the pixel being denoised at the specific point in time). It implements a specific scheme for defining patch weights (mask) as described in Awate and Whitaker 2005 IEEE CVPR and 2006 IEEE TPAMI.
- See Also
- PatchBasedDenoisingBaseImageFilter
Definition at line 60 of file itkPatchBasedDenoisingImageFilter.h.
|
using | BaseSamplerPointer = typename BaseSamplerType::Pointer |
|
using | BaseSamplerType = itk::Statistics::RegionConstrainedSubsampler< PatchSampleType, InputImageRegionType > |
|
using | ConstPointer = SmartPointer< const Self > |
|
using | EigenValuesArrayType = FixedArray< PixelValueType, 3 > |
|
using | EigenValuesCacheType = std::vector< EigenValuesArrayType > |
|
using | EigenVectorsCacheType = std::vector< EigenVectorsMatrixType > |
|
using | EigenVectorsMatrixType = Matrix< PixelValueType, 3, 3 > |
|
using | InputImagePatchIterator = typename Superclass::InputImagePatchIterator |
|
using | InputImageRegionConstIteratorType = ImageRegionConstIterator< InputImageType > |
|
using | InputImageRegionType = typename InputImageType::RegionType |
|
using | InputImageType = typename Superclass::InputImageType |
|
using | InstanceIdentifier = typename BaseSamplerType::InstanceIdentifier |
|
using | ListAdaptorType = typename Superclass::ListAdaptorType |
|
using | OutputImagePointer = typename Superclass::OutputImagePointer |
|
using | OutputImageRegionIteratorType = ImageRegionIterator< OutputImageType > |
|
using | OutputImageType = typename Superclass::OutputImageType |
|
using | PatchRadiusType = typename Superclass::PatchRadiusType |
|
using | PatchSampleType = ListAdaptorType |
|
using | PatchWeightsType = typename Superclass::PatchWeightsType |
|
using | PixelArrayType = Array< PixelValueType > |
|
using | PixelType = typename Superclass::PixelType |
|
using | PixelValueType = typename Superclass::PixelValueType |
|
using | Pointer = SmartPointer< Self > |
|
using | RealArrayType = Array< RealValueType > |
|
using | RealType = typename NumericTraits< PixelType >::RealType |
|
using | RealValueType = typename NumericTraits< PixelValueType >::RealType |
|
using | Self = PatchBasedDenoisingImageFilter |
|
using | ShortArrayType = Array< unsigned short > |
|
using | Superclass = PatchBasedDenoisingBaseImageFilter< TInputImage, TOutputImage > |
|
using | BoundaryConditionType = ZeroFluxNeumannBoundaryCondition< OutputImageType > |
|
enum | ComponentSpaceType {
EUCLIDEAN = 0,
RIEMANNIAN = 1
} |
|
using | ConstPointer = SmartPointer< const Self > |
|
enum | FilterStateType {
UNINITIALIZED = 0,
INITIALIZED = 1
} |
|
using | InputImagePatchIterator = ConstNeighborhoodIterator< InputImageType, BoundaryConditionType > |
|
using | InputImageType = TInputImage |
|
using | InputPixelType = typename InputImageType::PixelType |
|
using | ListAdaptorType = typename::itk::Statistics::ImageToNeighborhoodSampleAdaptor< OutputImageType, BoundaryConditionType > |
|
enum | NoiseModelType {
NOMODEL = 0,
GAUSSIAN = 1,
RICIAN = 2,
POISSON = 3
} |
|
using | OutputImageType = TOutputImage |
|
using | OutputPixelType = typename OutputImageType::PixelType |
|
using | PatchRadiusType = typename ListAdaptorType::NeighborhoodRadiusType |
|
using | PatchWeightsType = Array< float > |
|
using | PixelType = OutputPixelType |
|
using | PixelValueType = typename NumericTraits< PixelType >::ValueType |
|
using | Pointer = SmartPointer< Self > |
|
using | Self = PatchBasedDenoisingBaseImageFilter |
|
using | Superclass = ImageToImageFilter< TInputImage, TOutputImage > |
|
using | ConstPointer = SmartPointer< const Self > |
|
using | InputImageConstPointer = typename InputImageType::ConstPointer |
|
using | InputImagePixelType = typename InputImageType::PixelType |
|
using | InputImagePointer = typename InputImageType::Pointer |
|
using | InputImageRegionType = typename InputImageType::RegionType |
|
using | InputImageType = TInputImage |
|
using | OutputImagePixelType = typename Superclass::OutputImagePixelType |
|
using | OutputImageRegionType = typename Superclass::OutputImageRegionType |
|
using | Pointer = SmartPointer< Self > |
|
using | Self = ImageToImageFilter |
|
using | Superclass = ImageSource< TOutputImage > |
|
using | ConstPointer = SmartPointer< const Self > |
|
using | DataObjectIdentifierType = Superclass::DataObjectIdentifierType |
|
using | DataObjectPointer = DataObject::Pointer |
|
using | DataObjectPointerArraySizeType = Superclass::DataObjectPointerArraySizeType |
|
using | OutputImagePixelType = typename OutputImageType::PixelType |
|
using | OutputImagePointer = typename OutputImageType::Pointer |
|
using | OutputImageRegionType = typename OutputImageType::RegionType |
|
using | OutputImageType = TOutputImage |
|
using | Pointer = SmartPointer< Self > |
|
using | Self = ImageSource |
|
using | Superclass = ProcessObject |
|
using | ConstPointer = SmartPointer< const Self > |
|
using | DataObjectIdentifierType = DataObject::DataObjectIdentifierType |
|
using | DataObjectPointer = DataObject::Pointer |
|
using | DataObjectPointerArray = std::vector< DataObjectPointer > |
|
using | DataObjectPointerArraySizeType = DataObjectPointerArray::size_type |
|
using | MultiThreaderType = MultiThreaderBase |
|
using | NameArray = std::vector< DataObjectIdentifierType > |
|
using | Pointer = SmartPointer< Self > |
|
using | Self = ProcessObject |
|
using | Superclass = Object |
|
using | ConstPointer = SmartPointer< const Self > |
|
using | Pointer = SmartPointer< Self > |
|
using | Self = Object |
|
using | Superclass = LightObject |
|
using | ConstPointer = SmartPointer< const Self > |
|
using | Pointer = SmartPointer< Self > |
|
using | Self = LightObject |
|
|
template<typename RealT > |
RealType | AddUpdate (const RealT &a, const RealType &b) |
|
void | AllocateUpdateBuffer () override |
|
void | ApplyUpdate () override |
|
template<typename PixelT > |
void | ComputeDifferenceAndWeightedSquaredNorm (const PixelT &a, const PixelT &b, const RealArrayType &weight, bool useCachedComputations, SizeValueType cacheIndex, EigenValuesCacheType &eigenValsCache, EigenVectorsCacheType &eigenVecsCache, RealType &diff, RealArrayType &norm) |
|
virtual RealType | ComputeGradientJointEntropy (InstanceIdentifier id, typename ListAdaptorType::Pointer &inList, BaseSamplerPointer &sampler, ThreadDataStruct &threadData) |
|
void | ComputeImageUpdate () override |
|
void | ComputeKernelBandwidthUpdate () override |
|
void | ComputeMinMax (const Image< DiffusionTensor3D< PixelValueType >, ImageDimension > *img) |
|
template<typename TImageType > |
DisableIfMultiComponent
< typename
TImageType::PixelType >::type | ComputeMinMax (const TImageType *img) |
|
template<typename TImageType > |
EnableIfMultiComponent
< typename
TImageType::PixelType >::type | ComputeMinMax (const TImageType *img) |
|
void | CopyInputToOutput () override |
|
virtual void | EmptyCaches () |
|
virtual void | EnforceConstraints () |
|
void | GenerateInputRequestedRegion () override |
|
template<typename T > |
DisableIfMultiComponent< T, T >
::type | GetComponent (const T pix, unsigned int) const |
|
template<typename T > |
EnableIfMultiComponent< T,
typename NumericTraits< T >
::ValueType >::type | GetComponent (const T &pix, unsigned int idx) const |
|
virtual ThreadDataStruct | GetThreadData (int threadId) |
|
void | Initialize () override |
|
void | InitializeIteration () override |
|
virtual void | InitializeKernelSigma () |
|
void | InitializePatchWeights () override |
|
virtual void | InitializePatchWeightsSmoothDisc () |
|
| PatchBasedDenoisingImageFilter () |
|
void | PostProcessOutput () override |
|
void | PrintSelf (std::ostream &os, Indent indent) const override |
|
virtual RealArrayType | ResolveSigmaUpdate () |
|
template<typename T > |
void | SetComponent (T &pix, unsigned int, typename DisableIfMultiComponent< T, RealValueType >::type val) const |
|
template<typename T > |
void | SetComponent (T &pix, unsigned int idx, typename EnableIfMultiComponent< T, RealValueType >::type val) const |
|
virtual void | SetThreadData (int threadId, const ThreadDataStruct &data) |
|
virtual void | ThreadedApplyUpdate (const InputImageRegionType ®ionToProcess, const int) |
|
virtual ThreadDataStruct | ThreadedComputeImageUpdate (const InputImageRegionType ®ionToProcess, const int threadId, ThreadDataStruct threadData) |
|
virtual ThreadDataStruct | ThreadedComputeSigmaUpdate (const InputImageRegionType ®ionToProcess, const int, ThreadDataStruct threadData) |
|
| ~PatchBasedDenoisingImageFilter () override |
|
|
void | ComputeDifferenceAndWeightedSquaredNorm (const DiffusionTensor3D< PixelValueType > &a, const DiffusionTensor3D< PixelValueType > &b, const RealArrayType &weight, bool useCachedComputations, SizeValueType cacheIndex, EigenValuesCacheType &eigenValsCache, EigenVectorsCacheType &eigenVecsCache, RealType &diff, RealArrayType &norm) |
|
|
RealType | AddUpdate (const DiffusionTensor3D< RealValueType > &a, const RealType &b) |
|
ComponentSpaceType | DetermineComponentSpace (const RGBPixel< PixelValueType > &) |
|
ComponentSpaceType | DetermineComponentSpace (const RGBAPixel< PixelValueType > &) |
|
ComponentSpaceType | DetermineComponentSpace (const DiffusionTensor3D< PixelValueType > &) |
|
template<typename PixelT > |
ComponentSpaceType | DetermineComponentSpace (const PixelT &) |
|
void | GenerateData () override |
|
virtual bool | Halt () |
|
| PatchBasedDenoisingBaseImageFilter () |
|
virtual void | PreProcessInput () |
|
virtual void | SetElapsedIterations (unsigned int _arg) |
|
virtual bool | ThreadedHalt (void *) |
|
| ~PatchBasedDenoisingBaseImageFilter () override=default |
|
virtual void | SetComponentSpace (ComponentSpaceType _arg) |
|
virtual ComponentSpaceType | GetComponentSpace () const |
|
virtual void | CallCopyInputRegionToOutputRegion (OutputImageRegionType &destRegion, const InputImageRegionType &srcRegion) |
|
virtual void | CallCopyOutputRegionToInputRegion (InputImageRegionType &destRegion, const OutputImageRegionType &srcRegion) |
|
| ImageToImageFilter () |
|
void | VerifyInputInformation () ITKv5_CONST override |
|
| ~ImageToImageFilter () override |
|
void | PushBackInput (const DataObject *input) override |
|
void | PushFrontInput (const DataObject *input) override |
|
virtual void | AfterThreadedGenerateData () |
|
virtual void | AllocateOutputs () |
|
virtual void | BeforeThreadedGenerateData () |
|
void | ClassicMultiThread (ThreadFunctionType callbackFunction) |
|
virtual const
ImageRegionSplitterBase * | GetImageRegionSplitter () const |
|
| ImageSource () |
|
virtual unsigned int | SplitRequestedRegion (unsigned int i, unsigned int pieces, OutputImageRegionType &splitRegion) |
|
| ~ImageSource () override=default |
|
virtual void | ThreadedGenerateData (const OutputImageRegionType &outputRegionForThread, ThreadIdType threadId) |
|
virtual void | DynamicThreadedGenerateData (const OutputImageRegionType &outputRegionForThread) |
|
virtual bool | GetDynamicMultiThreading () const |
|
virtual void | SetDynamicMultiThreading (bool _arg) |
|
virtual void | DynamicMultiThreadingOn () |
|
virtual void | DynamicMultiThreadingOff () |
|
virtual void | AddInput (DataObject *input) |
|
void | AddOptionalInputName (const DataObjectIdentifierType &) |
|
void | AddOptionalInputName (const DataObjectIdentifierType &, DataObjectPointerArraySizeType idx) |
|
virtual void | AddOutput (DataObject *output) |
|
bool | AddRequiredInputName (const DataObjectIdentifierType &) |
|
bool | AddRequiredInputName (const DataObjectIdentifierType &, DataObjectPointerArraySizeType idx) |
|
virtual void | CacheInputReleaseDataFlags () |
|
virtual void | GenerateOutputInformation () |
|
virtual void | GenerateOutputRequestedRegion (DataObject *output) |
|
DataObject * | GetInput (const DataObjectIdentifierType &key) |
|
const DataObject * | GetInput (const DataObjectIdentifierType &key) const |
|
virtual const
DataObjectPointerArraySizeType & | GetNumberOfRequiredInputs () const |
|
virtual const
DataObjectPointerArraySizeType & | GetNumberOfRequiredOutputs () const |
|
bool | IsIndexedInputName (const DataObjectIdentifierType &) const |
|
bool | IsIndexedOutputName (const DataObjectIdentifierType &) const |
|
bool | IsRequiredInputName (const DataObjectIdentifierType &) const |
|
DataObjectPointerArraySizeType | MakeIndexFromInputName (const DataObjectIdentifierType &name) const |
|
DataObjectPointerArraySizeType | MakeIndexFromOutputName (const DataObjectIdentifierType &name) const |
|
DataObjectIdentifierType | MakeNameFromInputIndex (DataObjectPointerArraySizeType idx) const |
|
DataObjectIdentifierType | MakeNameFromOutputIndex (DataObjectPointerArraySizeType idx) const |
|
| ProcessObject () |
|
virtual void | PropagateResetPipeline () |
|
virtual void | ReleaseInputs () |
|
virtual void | RemoveInput (const DataObjectIdentifierType &key) |
|
virtual void | RemoveInput (DataObjectPointerArraySizeType) |
|
virtual void | RemoveOutput (const DataObjectIdentifierType &key) |
|
virtual void | RemoveOutput (DataObjectPointerArraySizeType idx) |
|
bool | RemoveRequiredInputName (const DataObjectIdentifierType &) |
|
virtual void | RestoreInputReleaseDataFlags () |
|
virtual void | SetInput (const DataObjectIdentifierType &key, DataObject *input) |
|
virtual void | SetNthInput (DataObjectPointerArraySizeType num, DataObject *input) |
|
virtual void | SetNthOutput (DataObjectPointerArraySizeType num, DataObject *output) |
|
void | SetNumberOfIndexedInputs (DataObjectPointerArraySizeType num) |
|
void | SetNumberOfIndexedOutputs (DataObjectPointerArraySizeType num) |
|
virtual void | SetNumberOfRequiredInputs (DataObjectPointerArraySizeType) |
|
virtual void | SetNumberOfRequiredOutputs (DataObjectPointerArraySizeType _arg) |
|
virtual void | SetOutput (const DataObjectIdentifierType &key, DataObject *output) |
|
virtual void | SetPrimaryInput (DataObject *input) |
|
virtual void | SetPrimaryOutput (DataObject *output) |
|
void | SetRequiredInputNames (const NameArray &) |
|
virtual void | VerifyPreconditions () ITKv5_CONST |
|
| ~ProcessObject () override |
|
DataObject * | GetInput (DataObjectPointerArraySizeType idx) |
|
const DataObject * | GetInput (DataObjectPointerArraySizeType idx) const |
|
DataObject * | GetPrimaryInput () |
|
const DataObject * | GetPrimaryInput () const |
|
virtual void | SetPrimaryInputName (const DataObjectIdentifierType &key) |
|
virtual const char * | GetPrimaryInputName () const |
|
DataObject * | GetOutput (const DataObjectIdentifierType &key) |
|
const DataObject * | GetOutput (const DataObjectIdentifierType &key) const |
|
virtual void | SetPrimaryOutputName (const DataObjectIdentifierType &key) |
|
virtual const char * | GetPrimaryOutputName () const |
|
DataObject * | GetOutput (DataObjectPointerArraySizeType idx) |
|
const DataObject * | GetOutput (DataObjectPointerArraySizeType idx) const |
|
DataObject * | GetPrimaryOutput () |
|
const DataObject * | GetPrimaryOutput () const |
|
| Object () |
|
bool | PrintObservers (std::ostream &os, Indent indent) const |
|
virtual void | SetTimeStamp (const TimeStamp &time) |
|
| ~Object () override |
|
virtual LightObject::Pointer | InternalClone () const |
|
| LightObject () |
|
virtual void | PrintHeader (std::ostream &os, Indent indent) const |
|
virtual void | PrintTrailer (std::ostream &os, Indent indent) const |
|
virtual | ~LightObject () |
|
|
RealType | AddEuclideanUpdate (const RealType &a, const RealType &b) |
|
RealType | AddExponentialMapUpdate (const DiffusionTensor3D< RealValueType > &spdMatrix, const DiffusionTensor3D< RealValueType > &symMatrix) |
|
template<typename TensorValueT > |
void | Compute3x3EigenAnalysis (const DiffusionTensor3D< TensorValueT > &spdMatrix, FixedArray< TensorValueT, 3 > &eigenVals, Matrix< TensorValueT, 3, 3 > &eigenVecs) |
|
void | ComputeLogMapAndWeightedSquaredGeodesicDifference (const DiffusionTensor3D< PixelValueType > &spdMatrixA, const DiffusionTensor3D< PixelValueType > &spdMatrixB, const RealArrayType &weight, bool useCachedComputations, SizeValueType cacheIndex, EigenValuesCacheType &eigenValsCache, EigenVectorsCacheType &eigenVecsCache, RealType &symMatrixLogMap, RealArrayType &geodesicDist) |
|
void | ComputeSignedEuclideanDifferenceAndWeightedSquaredNorm (const PixelType &a, const PixelType &b, const RealArrayType &weight, bool useCachedComputations, SizeValueType cacheIndex, EigenValuesCacheType &eigenValsCache, EigenVectorsCacheType &eigenVecsCache, RealType &diff, RealArrayType &norm) |
|
template<typename TInputImageType > |
void | DispatchedArrayMinMax (const TInputImageType *img) |
|
template<typename TInputImageType > |
void | DispatchedMinMax (const TInputImageType *img) |
|
template<typename TInputImageType > |
void | DispatchedRiemannianMinMax (const TInputImageType *img) |
|
template<typename TInputImageType > |
void | DispatchedVectorMinMax (const TInputImageType *img) |
|
virtual void | ResolveRiemannianMinMax () |
|
ThreadDataStruct | ThreadedRiemannianMinMax (const InputImageRegionType ®ionToProcess, const int, const InputImageType *img, ThreadDataStruct threadData) |
|