template<typename TInputVectorImage, typename TLabelsType = unsigned char, typename TPosteriorsPrecisionType = double, typename TPriorsPrecisionType = double>
class itk::BayesianClassifierImageFilter< TInputVectorImage, TLabelsType, TPosteriorsPrecisionType, TPriorsPrecisionType >
Performs Bayesian Classification on an image.
- Inputs and Outputs
- The input to this filter is an itk::VectorImage that represents pixel memberships to 'n' classes. This image is conveniently generated by the BayesianClassifierInitializationImageFilter. You may use that filter to generate the membership images or specify your own.
- The output of the filter is a label map (an image of unsigned char's is the default.) with pixel values indicating the classes they correspond to. Pixels with intensity 0 belong to the 0th class, 1 belong to the 1st class etc.... The classification is done by applying a Maximum decision rule to the posterior image.
- Parameters
- The filter optionally allows you to specify a prior image as well. The prior image, if specified must be a VectorImage with as many components as the number of classes. The posterior image is then generated by multiplying the prior image with the membership image. If the prior image is not specified, the posterior image is the same as the membership image. Another way to look at it is that the priors default to having a uniform distribution over the number of classes. Posterior membership of a pixel = Prior * Membership
- The filter optionally accepts a smoothing filter and number of iterations associated with the smoothing filter. The philosophy is that the filter allows you to iteratively smooth the posteriors prior to applying the decision rule. It is hoped that this would yield a better classification. The user will need to plug in his own smoothing filter with all the parameters set.
- Template parameters
- InputVectorImage, datatype of the output labelmap, precision of the posterior image, precision of the prior image.
- Author
- John Melonakos, Georgia Tech
- Note
- This work is part of the National Alliance for Medical Image Computing (NAMIC), funded by the National Institutes of Health through the NIH Roadmap for Medical Research, Grant U54 EB005149.
- See Also
- VectorImage
-
BayesianClassifierInitializationImageFilter
- Examples:
- Examples/Statistics/BayesianClassifier.cxx.
Definition at line 81 of file itkBayesianClassifierImageFilter.h.
|
virtual ::itk::LightObject::Pointer | CreateAnother () const |
|
virtual const char * | GetNameOfClass () const |
|
virtual SmoothingFilterPointer | GetSmoothingFilter () const |
|
virtual DataObjectPointer | MakeOutput (DataObjectPointerArraySizeType idx) override |
|
virtual void | SetPriors (const PriorsImageType *) |
|
void | SetSmoothingFilter (SmoothingFilterType *) |
|
| typedef (Concept::Convertible< unsigned int, TLabelsType >) UnsignedIntConvertibleToLabelsCheck |
|
| typedef (Concept::AdditiveOperators< TPosteriorsPrecisionType >) PosteriorsAdditiveOperatorsCheck |
|
| typedef (Concept::Convertible< int, TPosteriorsPrecisionType >) IntConvertibleToPosteriorsCheck |
|
| typedef (Concept::HasNumericTraits< typename InputPixelType::ValueType >) InputHasNumericTraitsCheck |
|
| typedef (Concept::HasNumericTraits< TPosteriorsPrecisionType >) PosteriorsHasNumericTraitsCheck |
|
| typedef (Concept::HasNumericTraits< TPriorsPrecisionType >) PriorsHasNumericTraitsCheck |
|
| typedef (Concept::MultiplyOperator< typename InputPixelType::ValueType, PriorsPixelType, PosteriorsPixelType >) InputPriorsPosteriorsMultiplyOperatorCheck |
|
|
virtual void | SetNumberOfSmoothingIterations (unsigned int _arg) |
|
virtual unsigned int | GetNumberOfSmoothingIterations () const |
|
const InputImageType * | GetInput () const |
|
const InputImageType * | GetInput (unsigned int idx) const |
|
virtual void | PopBackInput () override |
|
virtual void | PopFrontInput () override |
|
virtual void | PushBackInput (const InputImageType *image) |
|
virtual void | PushFrontInput (const InputImageType *image) |
|
virtual void | SetInput (const InputImageType *image) |
|
virtual void | SetInput (unsigned int, const TInputVectorImage *image) |
|
virtual void | SetCoordinateTolerance (double _arg) |
|
virtual double | GetCoordinateTolerance () const |
|
virtual void | SetDirectionTolerance (double _arg) |
|
virtual double | GetDirectionTolerance () const |
|
OutputImageType * | GetOutput (unsigned int idx) |
|
virtual void | GraftNthOutput (unsigned int idx, DataObject *output) |
|
virtual void | GraftOutput (const DataObjectIdentifierType &key, DataObject *output) |
|
OutputImageType * | GetOutput () |
|
const OutputImageType * | GetOutput () const |
|
virtual void | GraftOutput (DataObject *output) |
|
virtual
ProcessObject::DataObjectPointer | MakeOutput (const ProcessObject::DataObjectIdentifierType &) override |
|
virtual void | AbortGenerateDataOff () |
|
virtual void | AbortGenerateDataOn () |
|
virtual void | EnlargeOutputRequestedRegion (DataObject *) |
|
virtual const bool & | GetAbortGenerateData () const |
|
DataObjectPointerArray | GetIndexedInputs () |
|
DataObjectPointerArray | GetIndexedOutputs () |
|
NameArray | GetInputNames () const |
|
DataObjectPointerArray | GetInputs () |
|
MultiThreader * | GetMultiThreader () const |
|
DataObjectPointerArraySizeType | GetNumberOfIndexedInputs () const |
|
DataObjectPointerArraySizeType | GetNumberOfIndexedOutputs () const |
|
DataObjectPointerArraySizeType | GetNumberOfInputs () const |
|
DataObjectPointerArraySizeType | GetNumberOfOutputs () const |
|
virtual
DataObjectPointerArraySizeType | GetNumberOfValidRequiredInputs () const |
|
NameArray | GetOutputNames () const |
|
DataObjectPointerArray | GetOutputs () |
|
virtual const float & | GetProgress () const |
|
NameArray | GetRequiredInputNames () const |
|
bool | HasInput (const DataObjectIdentifierType &key) const |
|
bool | HasOutput (const DataObjectIdentifierType &key) const |
|
virtual void | PrepareOutputs () |
|
virtual void | PropagateRequestedRegion (DataObject *output) |
|
virtual void | ResetPipeline () |
|
virtual void | SetAbortGenerateData (bool _arg) |
|
virtual void | Update () |
|
virtual void | UpdateLargestPossibleRegion () |
|
virtual void | UpdateOutputData (DataObject *output) |
|
virtual void | UpdateOutputInformation () |
|
void | UpdateProgress (float progress) |
|
void | SetProgress (float progress) |
|
virtual void | SetReleaseDataFlag (bool flag) |
|
virtual bool | GetReleaseDataFlag () const |
|
void | ReleaseDataFlagOn () |
|
void | ReleaseDataFlagOff () |
|
virtual void | SetReleaseDataBeforeUpdateFlag (bool _arg) |
|
virtual const bool & | GetReleaseDataBeforeUpdateFlag () const |
|
virtual void | ReleaseDataBeforeUpdateFlagOn () |
|
virtual void | ReleaseDataBeforeUpdateFlagOff () |
|
virtual void | SetNumberOfThreads (ThreadIdType _arg) |
|
virtual const ThreadIdType & | GetNumberOfThreads () const |
|
unsigned long | AddObserver (const EventObject &event, Command *) |
|
unsigned long | AddObserver (const EventObject &event, Command *) const |
|
virtual void | DebugOff () const |
|
virtual void | DebugOn () const |
|
Command * | GetCommand (unsigned long tag) |
|
bool | GetDebug () const |
|
MetaDataDictionary & | GetMetaDataDictionary () |
|
const MetaDataDictionary & | GetMetaDataDictionary () const |
|
virtual ModifiedTimeType | GetMTime () const |
|
virtual const TimeStamp & | GetTimeStamp () const |
|
bool | HasObserver (const EventObject &event) const |
|
void | InvokeEvent (const EventObject &) |
|
void | InvokeEvent (const EventObject &) const |
|
virtual void | Modified () const |
|
virtual void | Register () const override |
|
void | RemoveAllObservers () |
|
void | RemoveObserver (unsigned long tag) |
|
void | SetDebug (bool debugFlag) const |
|
void | SetMetaDataDictionary (const MetaDataDictionary &rhs) |
|
virtual void | SetReferenceCount (int) override |
|
virtual void | UnRegister () const noexceptoverride |
|
virtual void | SetObjectName (std::string _arg) |
|
virtual const std::string & | GetObjectName () const |
|
virtual void | Delete () |
|
virtual int | GetReferenceCount () const |
|
| itkCloneMacro (Self) |
|
void | Print (std::ostream &os, Indent indent=0) const |
|
|
| BayesianClassifierImageFilter () |
|
virtual void | ClassifyBasedOnPosteriors () |
|
virtual void | ComputeBayesRule () |
|
virtual void | GenerateData () override |
|
virtual void | GenerateOutputInformation (void) override |
|
PosteriorsImageType * | GetPosteriorImage () |
|
virtual void | NormalizeAndSmoothPosteriors () |
|
void | PrintSelf (std::ostream &os, Indent indent) const override |
|
virtual | ~BayesianClassifierImageFilter () |
|
virtual void | CallCopyInputRegionToOutputRegion (OutputImageRegionType &destRegion, const InputImageRegionType &srcRegion) |
|
virtual void | CallCopyOutputRegionToInputRegion (InputImageRegionType &destRegion, const OutputImageRegionType &srcRegion) |
|
virtual void | GenerateInputRequestedRegion () override |
|
| ImageToImageFilter () |
|
virtual void | VerifyInputInformation () override |
|
| ~ImageToImageFilter () |
|
void | PushBackInput (const DataObject *input) override |
|
void | PushFrontInput (const DataObject *input) override |
|
virtual void | AfterThreadedGenerateData () |
|
virtual void | AllocateOutputs () |
|
virtual void | BeforeThreadedGenerateData () |
|
virtual const
ImageRegionSplitterBase * | GetImageRegionSplitter () const |
|
| ImageSource () |
|
virtual unsigned int | SplitRequestedRegion (unsigned int i, unsigned int pieces, OutputImageRegionType &splitRegion) |
|
virtual void | ThreadedGenerateData (const OutputImageRegionType &outputRegionForThread, ThreadIdType threadId) |
|
virtual | ~ImageSource () |
|
virtual void | AddInput (DataObject *input) |
|
virtual void | AddOutput (DataObject *output) |
|
bool | AddRequiredInputName (const DataObjectIdentifierType &) |
|
bool | AddRequiredInputName (const DataObjectIdentifierType &, DataObjectPointerArraySizeType idx) |
|
virtual void | CacheInputReleaseDataFlags () |
|
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 |
|
| itkLegacyMacro (virtual void RemoveOutput(DataObject *output)) |
|
| itkLegacyMacro (void SetNumberOfOutputs(DataObjectPointerArraySizeType num)) |
|
| itkLegacyMacro (virtual void RemoveInput(DataObject *input)) |
|
| itkLegacyMacro (void SetNumberOfInputs(DataObjectPointerArraySizeType num)) |
|
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 () |
|
| ~ProcessObject () |
|
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 (void) const |
|
DataObject * | GetOutput (const DataObjectIdentifierType &key) |
|
const DataObject * | GetOutput (const DataObjectIdentifierType &key) const |
|
virtual void | SetPrimaryOutputName (const DataObjectIdentifierType &key) |
|
virtual const char * | GetPrimaryOutputName (void) 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) |
|
virtual | ~Object () |
|
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 () |
|
template<typename TInputVectorImage , typename TLabelsType = unsigned char, typename TPosteriorsPrecisionType = double, typename TPriorsPrecisionType = double>
virtual::itk::LightObject::Pointer itk::BayesianClassifierImageFilter< TInputVectorImage, TLabelsType, TPosteriorsPrecisionType, TPriorsPrecisionType >::CreateAnother |
( |
| ) |
const |
|
virtual |
Create an object from an instance, potentially deferring to a factory. This method allows you to create an instance of an object that is exactly the same type as the referring object. This is useful in cases where an object has been cast back to a base class.
Reimplemented from itk::Object.
template<typename TInputVectorImage , typename TLabelsType = unsigned char, typename TPosteriorsPrecisionType = double, typename TPriorsPrecisionType = double>
Generate the information describing the output data. The default implementation of this method will copy information from the input to the output. A filter may override this method if its output will have different information than its input. For instance, a filter that shrinks an image will need to provide an implementation for this method that changes the spacing of the pixels. Such filters should call their superclass' implementation of this method prior to changing the information values they need (i.e. GenerateOutputInformation() should call Superclass::GenerateOutputInformation() prior to changing the information.
Reimplemented from itk::ProcessObject.