Proposals:Refactoring Statistics Framework 2007 Action Items

From KitwarePublic
Jump to navigationJump to search

Action Items

API Fixes

  • ImageToCoocurrenceListAdaptor
    • Create a Filter for this operation, in this class the Compute() method will be used.
    • Fix the API so it is a real Adaptor : must have a GetMeasurementVector(unsigned int id) method.
  • There is no conceptual difference between "Generators" and "Calculators"
    • They should become Filters
  • Estimators have similar characterstics as "Generators" and "Calculators"
    • They could be converted to filters

Proposals

  • Sample class could be derived from a DataObject
    • Subsequently, all the derived classes such as ListSampleBase, Histogram and Subsample will be part of the pipeline.
  • Add a typedef in the Sample class for the DataObjectDectorator of a Measurement vector
  • KDTree could be derived from a DataObject
  • ListSampleBase : to be deprecated
  • SampleAlgorithmBase will be derived from ProcessObject
    • Subsequently, classes derived from the SampleAlgorithmBase will be process objects.
  • The following Calculator classes will also be derived from process object
    • ScalarImageTextureCalculator
    • GreyLevelCooccurrenceMatrixTextureCoefficientsCalculator
  • The following Generator classes will be derived from process object
    • ImageToHistogramGenerator
    • ImageToListGenerator
    • KdTreeGenerator
    • ListSampleToHistogramGenerator
    • MaskedScalarImageToGreyLevelCooccurrenceMatrixGenerator
    • MembershipSampleGenerator
    • ScalarImageToGreyLevelCooccurrenceMatrixGenerator
    • ScalarImageToHistogramGenerator
    • SelectiveSubsampleGenerator
    • WeightedCentroidKdTreeGenerator
  • The following two generator classes will remain as generators
    • NormalVariateGenerator
    • RandomVariateGeneratorBase
  • Frequency container classes ( DenseFrequencyContainer and SparseFrequencyContainer ) do not need any modification at this point unless
    • there is a filter which outputs this data type ( in which case DataObjectDecorator can be defined )
  • There is a duplication of data in the omponentbase, membership function

Progress of Specific Tasks

Data Objects

  • Sample (Luis) Done
  • ListSample (Luis) Done
  • Histogram (Luis) Done
  • Subsample (Andinet) Done
  • MembershipSample (Andinet) Done
  • KdTree (Andinet) Done
    • Replace "WeightedCentroid" with "SumMeasurmentVector"
    • propagate this to KdTree generators
  • VariableDimensionHistogram (Luis) Done
  • MembershipFunctionBase (Andinet) Done

Process Objects

  • MeanFilter (Andinet) Done!
  • SampleToHistogramFilter (it was ListSampleToHistogramGenerator) (Luis) Done!
  • ImageToCooccurrenceListFilter (it was ImageToCooccurrenceListAdaptor) (Luis) Done!
  • CovarianceFilter (Andinet)
  • HistogramToTextureFeaturesFilter (it was GreyLevelCooccurrenceMatrixTextureCoefficientsFilter) (Andinet) Done!
  • ScalarImageToTextureFeaturesFilter (Andinet)
  • WeightedCovarianceFilter (Andinet)
  • WeightedMeanFilter (Andinet) Done!
  • ImageToHistogramFilter (was ImageToHistogramGenerator) (Luis)
  • ImageToListSampleFilter (ImageToListGenerator) (Andinet) Done!
  • SampleToKdTreeFilter (it was KdTreeGenerator ) (Andinet)
    • (+option for generating sum vectors)
    • WeigthedCentroidKdTreeGenerator will be deprecated
  • ScalarImageToCooccurrenceMatrixFilter (it was ScalarImageToGreyLevelCooccurrenceMatrixGenerator)(Andinet) Done!
    • MaskedScalarImageToGreyLevelCooccurrenceMatrixGenerator will be deprecated
    • ScalarImageToCooccurrenceMatrixFilter takes a mask image if provided
  • ScalarImageToHistogramFilter (it was ScalarImageToHistogramGenerator)(Luis)
  • SampleToSubsampleFilter (New class) (Luis) In Progress
    • ClassLabelSubsamplerFilter (it was SelectiveSubsampleGenerator) (Luis)
    • NeighborSubsamplerFilter (it was NeighborhoodSampler)(Luis) In Progress
  • ListSampleToHistogramFilter (make it derive from ProcessObject) Andinet
  • SampleFilterBase (it was SampleAlgorithmBase) (make it derive from ProcessObject) (Luis)
  • HistogramToImageFilter (remove decorator, now that Histogram is a DataObject) (Luis)
    • HistogramToEntropyImageFilter (do code review) (Andinet)
    • HistogramToIntensityImageFilter (do code review) (Luis)
    • HistogramToLogProbabilityImageFilter (do code review) (Andinet)
    • HistogramToProbabilityImageFilter (do code review) (Luis)
  • SampleToHistogramProjectionFilter (output Histogram should be created in MakeOutput)(Andinet)
  • MeanShiftBlurringSampleFilter (it was SampleMeanShiftBlurringFilter)(Andinet)
  • SelectiveMeanShiftBlurringSampleFilter (it was SampleSelectiveMeanShiftBlurringFilter)(Luis)
  • MeanShiftClusteringSampleFilter (it was SampleMeanShiftClusteringFilter) (Andinet)
  • SelectiveMeanShiftClusteringSampleFilter (it was SampleSelectiveMeanShiftClusteringFilter) (Luis)(why should be called "Selective")
  • SampleClassifierFilter (it was SampleClassifier) (Luis) In Progress
  • SampleClassifierWithMaskFilter (it was SampleClassifier) (Luis)
  • ExpectationMaximizationMixtureModelEstimator (Luis)
    • (review the Classifiers hierarchy)
    • Review Components and MembershipSample classes
  • SampleToKmeansFilter (it was KdTreeBasedKmeansEstimator) (Andinet)
    • (it now should use the WeightedKdTreeGenerator inside).
    • Output should be a container of MeasuremenVectors of RealType (Andinet)
    • Rework the Insight/Code/Algorithms/itkScalarImageKmeansImageFilter accordingly (Luis)
  • ClassificationSampleFilter (it was SampleClassifier) (Andinet)
    • Related to the classifier reorganization
  • MaskedClassificationSampleFilter (it was SampleClassifierWithMask) (Luis)
    • Related to the classifier reorganization

Adaptors

  • ImageToListAdaptor (Andinet)
  • JointDomainImageToListAdaptor (Andinet)
  • PointSetToListAdaptor (Luis)
  • ScalarImageToListAdaptor (Andinet)

Classifier related classes refactoring

  • Reorganize distance metrics and membership function bases as suggested in [[1]] (Andinet :Done)
    • Use the new MeasurmentVectorTraits added to set/get MeasurementVectorSize
    • Update the migration guide ([[2]])
    • Add unit tests if necessary
    • Fix code style issues
  • Refactor Gaussian density function
    • Rename itkGaussianDensityfunction as GaussianMembership function
    • Remove itkDenistyFunction (it does exactly what itkMembershipfunction is supposed to do)