Proposals:Refactoring Statistics Framework 2007 New Statistics Framework: Difference between revisions

From KitwarePublic
Jump to navigationJump to search
 
(31 intermediate revisions by the same user not shown)
Line 10: Line 10:
! Conceptual Class !! Number
! Conceptual Class !! Number
|-
|-
| Data Objects || 3
| Traits || 1
|-
|-
| Filters || 4
| Data Objects || 4
|-
|-
| '''Total''' || '''7'''
| Filters || 11
|-
| '''Total''' || '''16'''
|}
|}


= List of Classes per Category =
= List of Classes per Category =
=== Traits ===

* MeasurementVectorTraits


=== Data Objects ===
=== Data Objects ===
Line 24: Line 31:
* ListSample
* ListSample
* Histogram
* Histogram
* Subsample


=== Filters ===
=== Filters ===


* ListSampleToHistogramFilter
* SampleToHistogramFilter
* MeanFilter
* MeanFilter
* WeightedMeanFilter
* WeightedMeanFilter
* CovarianceFilter
* WeightedCovarianceFilter
* HistogramToTextureFeaturesFilter
* HistogramToTextureFeaturesFilter
* ImageToListSampleFilter
* ScalarImageToCooccurrenceMatrixFilter
* SampleToSubsampleFilter
* SampleClassifierFilter
* NeighborhoodSubsampler
=== Classifiers (Suggested Design) ===
==== Elements ====
* MembershipFunctionBase
** DistanceToCentroidMembershipFunction (plugs in a DistanceMetric)
* DistanceMetrics
** Euclidean
** Mahalanobis
** 1_1
==== Filters ====
* Sample, Array of Membership Functions --> MembershipSample(sample,labels) == SampleClassifierFilter
* Sample, Array of Membership Functions --> GoodnessOfFitComponent (sample,weights) == SampleGoodnessOfFitFilter


= Class Diagrams =
= Class Diagrams =
== Traits ==
<graphviz>
digraph G {
MeasurementVectorTraits [ shape=box URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1MeasurementVectorTraits.html"];
}
</graphviz>


== Data Objects ==
== Data Objects ==
Line 40: Line 79:
DataObject [URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1DataObject.html"];
DataObject [URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1DataObject.html"];
Sample [shape=box, URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1Sample.html"];
Sample [shape=box, URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1Sample.html"];
Subsample [shape=box, URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1Subsample.html"];
ListSample [shape=box,URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1ListSample.html"];
ListSample [shape=box,URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1ListSample.html"];
Histogram [shape=box,URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1Histogram.html"];
Histogram [shape=box,URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1Histogram.html"];
Line 45: Line 85:
Sample -> Histogram;
Sample -> Histogram;
Sample -> ListSample;
Sample -> ListSample;
Sample -> Subsample;
}
}
</graphviz>
</graphviz>
Line 53: Line 94:
digraph G {
digraph G {
ProcessObject [URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1ProcessObject.html"];
ProcessObject [URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1ProcessObject.html"];
ListSampleToHistogramFilter [shape=box,URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1ListSampleToHistogramFilter.html"];
SampleToHistogramFilter [shape=box,URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1SampleToHistogramFilter.html"];
ImageToListSampleFilter [shape=box,URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1ImageToListSampleFilter.html"];
MeanFilter [shape=box,URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1MeanFilter.html"];
MeanFilter [shape=box,URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1MeanFilter.html"];
WeightedMeanFilter [shape=box,URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1WeightedMeanFilter.html"];
WeightedMeanFilter [shape=box,URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1WeightedMeanFilter.html"];
CovarianceFilter [shape=box,URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1CovarianceFilter.html"];
WeightedCovarianceFilter [shape=box,URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1WeightedCovarianceFilter.html"];
HistogramToTextureFeaturesFilter [shape=box,URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1HistogramToTextureFeaturesFilter.html"];
HistogramToTextureFeaturesFilter [shape=box,URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1HistogramToTextureFeaturesFilter.html"];
ProcessObject -> ListSampleToHistogramFilter
SampleToSubsampleFilter [shape=box,URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1ListSampleToSubsampleFilter.html"];
NeighborhoodSubsampler [shape=box,URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1NeigborhoodSubsampler.html"];
SampleClassifierFilter [shape=box,URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1SampleClassifierFilter.html"];
ScalarImageToCooccurrenceMatrixFilter [shape=box,URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1ScalarImageToCooccurrenceMatrixFilter.html"];
ProcessObject -> SampleToHistogramFilter
ProcessObject -> MeanFilter
ProcessObject -> MeanFilter
ProcessObject -> WeightedMeanFilter
ProcessObject -> HistogramToTextureFeaturesFilter
ProcessObject -> HistogramToTextureFeaturesFilter
ProcessObject -> CovarianceFilter
ProcessObject -> ImageToListSampleFilter
ProcessObject -> SampleClassifierFilter
ProcessObject -> SampleToSubsampleFilter
ProcessObject -> ScalarImageToCooccurrenceMatrixFilter
SampleToSubsampleFilter -> NeighborhoodSubsampler
MeanFilter -> WeightedMeanFilter
CovarianceFilter -> WeightedCovarianceFilter
}
}
</graphviz>
</graphviz>
== Classifiers (Suggested Design) ==
<graphviz>
digraph G {
Object [URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Object.html"];
FunctionBase [URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1FunctionBase.html"];
MembershipFunctionBase [shape=box, URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1MembershipFunctionBase.html"];
DistanceToCentroidMembershipFunction [shape=box, URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1DistanceToCentroidMembershipFunction.html"];
DistanceMetric  [shape=box, URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1DistanceMetric.html"];
EuclideanDistanceMetric  [shape=box, URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1EuclideanDistanceMetric.html"];
MahalanobisDistanceMetric  [shape=box, URL="http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Statistics_1_1MahalanobisDistanceMetric.html"];
Object -> FunctionBase
FunctionBase -> MembershipFunctionBase
FunctionBase -> DistanceMetric
DistanceMetric -> MahalanobisDistanceMetric
DistanceMetric -> EuclideanDistanceMetric
DistanceMetric -> EuclideanSquaredDistanceMetric
DistanceMetric -> ManhattanDistanceMetric
MembershipFunctionBase -> DistanceToCentroidMembershipFunction
}
</graphviz>
=== Distance notation ===
* Manhattan (L1) = sum of absolute values
* Euclidean = square root of ( sum of squares )
* Euclidean Squared  (L2) = sum of squares
* Mahalanobis = square root of ( V . M . VT )
=== API ===
* DistanceToCentroidMembershipFunction
** SetDistanceMetric( const DistanceMetric * ) (new)
** const GetDistanceMetric()  (new)
** Evaluate( Measurement vector ) (already there)
** SetCentroid( )  (already there)

Latest revision as of 20:57, 17 July 2008

Class Manifesto of New Statistics Framework

Summary Table

The classes that integrate the new statistics framework are categorized in the following table


Conceptual Class Number
Traits 1
Data Objects 4
Filters 11
Total 16

List of Classes per Category

Traits



  • MeasurementVectorTraits

Data Objects



  • Sample
  • ListSample
  • Histogram
  • Subsample

Filters

  • SampleToHistogramFilter
  • MeanFilter
  • WeightedMeanFilter
  • CovarianceFilter
  • WeightedCovarianceFilter
  • HistogramToTextureFeaturesFilter
  • ImageToListSampleFilter
  • ScalarImageToCooccurrenceMatrixFilter
  • SampleToSubsampleFilter
  • SampleClassifierFilter
  • NeighborhoodSubsampler

Classifiers (Suggested Design)

Elements

  • MembershipFunctionBase
    • DistanceToCentroidMembershipFunction (plugs in a DistanceMetric)
  • DistanceMetrics
    • Euclidean
    • Mahalanobis
    • 1_1

Filters

  • Sample, Array of Membership Functions --> MembershipSample(sample,labels) == SampleClassifierFilter
  • Sample, Array of Membership Functions --> GoodnessOfFitComponent (sample,weights) == SampleGoodnessOfFitFilter

Class Diagrams

Traits

This is a graph with borders and nodes. Maybe there is an Imagemap used so the nodes may be linking to some Pages.

Data Objects

This is a graph with borders and nodes. Maybe there is an Imagemap used so the nodes may be linking to some Pages.

Filters

This is a graph with borders and nodes. Maybe there is an Imagemap used so the nodes may be linking to some Pages.

Classifiers (Suggested Design)

This is a graph with borders and nodes. Maybe there is an Imagemap used so the nodes may be linking to some Pages.


Distance notation

  • Manhattan (L1) = sum of absolute values
  • Euclidean = square root of ( sum of squares )
  • Euclidean Squared (L2) = sum of squares
  • Mahalanobis = square root of ( V . M . VT )

API

  • DistanceToCentroidMembershipFunction
    • SetDistanceMetric( const DistanceMetric * ) (new)
    • const GetDistanceMetric() (new)
    • Evaluate( Measurement vector ) (already there)
    • SetCentroid( ) (already there)