Proposals:Refactoring Statistics Framework 2007 Action Items: Difference between revisions

From KitwarePublic
Jump to navigationJump to search
No edit summary
 
(73 intermediate revisions by 2 users not shown)
Line 4: Line 4:


* ImageToCoocurrenceListAdaptor
* ImageToCoocurrenceListAdaptor
** Create a Generator for this operation, in this class the Compute() method will be used.
** 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.
** 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) <font style="color: #8b0000;">'''Done'''</font>
* ListSample (Luis) <font style="color: #8b0000;">'''Done'''</font>
* Histogram (Luis) <font style="color: #8b0000;">'''Done'''</font>
* Subsample (Andinet) <font style="color: #8b0000;">'''Done'''</font>
* MembershipSample (Andinet) <font style="color: #006400;">'''Done'''</font>
* KdTree (Andinet) <font style="color: #0000a0;">'''Done'''</font>
** Replace "WeightedCentroid" with "SumMeasurmentVector"
** propagate this to KdTree generators
* VariableDimensionHistogram (Luis) <font style="color: #0000a0;">'''Done'''</font>
* MembershipFunctionBase (Andinet) <font style="color: #0000a0;">'''Done'''</font>
== Process Objects ==
* MeanFilter (Andinet) <font style="color: #8b0000;">'''Done!'''</font>
* SampleToHistogramFilter (it was ListSampleToHistogramGenerator) (Luis) <font style="color: #8b0000;">'''Done!'''</font>
* ImageToCooccurrenceListFilter (it was ImageToCooccurrenceListAdaptor) (Luis) <font style="color: #8b0000;">'''Done!'''</font>
* CovarianceFilter (Andinet)
* HistogramToTextureFeaturesFilter (it was GreyLevelCooccurrenceMatrixTextureCoefficientsFilter) (Andinet) <font style="color: #8b0000;">'''Done!'''</font>
* ScalarImageToTextureFeaturesFilter (Andinet)
* WeightedCovarianceFilter (Andinet)
* WeightedMeanFilter (Andinet) <font style="color: #8b0000;">'''Done!'''</font>
* ImageToHistogramFilter (was ImageToHistogramGenerator) (Luis)
* ImageToListSampleFilter (ImageToListGenerator) (Andinet) <font style="color: #8b0000;">'''Done!'''</font>
* SampleToKdTreeFilter (it was KdTreeGenerator  ) (Andinet)
** (+option for generating sum vectors)
** WeigthedCentroidKdTreeGenerator will be deprecated
* ScalarImageToCooccurrenceMatrixFilter (it was ScalarImageToGreyLevelCooccurrenceMatrixGenerator)(Andinet) <font style="color: #8b0000;">'''Done!'''</font>
** MaskedScalarImageToGreyLevelCooccurrenceMatrixGenerator will be deprecated
** ScalarImageToCooccurrenceMatrixFilter takes a mask image if provided
* ScalarImageToHistogramFilter (it was ScalarImageToHistogramGenerator)(Luis)
* SampleToSubsampleFilter (New class) (Luis)  <font style="color: #006400;">'''In Progress'''</font>
** ClassLabelSubsamplerFilter (it was SelectiveSubsampleGenerator) (Luis)
** NeighborSubsamplerFilter (it was NeighborhoodSampler)(Luis)  <font style="color: #006400;">'''In Progress'''</font>
* 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) <font style="color: #006400;">'''In Progress'''</font>
* 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 [[http://www.itk.org/Wiki/Proposals:Refactoring_Statistics_Framework_2007_New_Statistics_Framework#Classifiers_.28Suggested_Design.29_2]] (Andinet :Done)
** Use the new MeasurmentVectorTraits added to set/get MeasurementVectorSize
** Update the migration guide ([[http://www.itk.org/Wiki/Proposals:Refactoring_Statistics_Framework_2007_Migration_Users_Guide]])
** 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)

Latest revision as of 15:19, 13 August 2008

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)