TrackerFeatureSet diagram ========================= .. uml:: ..@startuml package "TrackerFeature package" #DDDDDD { class TrackerFeatureSet{ -vector > > features -vector responses ... TrackerFeatureSet(); ~TrackerFeatureSet(); -- +extraction(const std::vector& images); +selection(); +removeOutliers(); +vector response getResponses(); +vector > > getTrackerFeatures(); +bool addTrackerFeature(string trackerFeatureType); +bool addTrackerFeature(Ptr& feature); -clearResponses(); } class TrackerFeature <>{ static Ptr = create(const string& trackerFeatureType); compute(const std::vector& images, Mat& response); selection(Mat& response, int npoints); } note bottom: Can be specialized as in table II\nA tracker can use more types of features class TrackerFeatureFeature2D{ -vector keypoints --- TrackerFeatureFeature2D(string detectorType, string descriptorType); ~TrackerFeatureFeature2D(); --- compute(const std::vector& images, Mat& response); selection( Mat& response, int npoints); } class TrackerFeatureHOG{ TrackerFeatureHOG(); ~TrackerFeatureHOG(); --- compute(const std::vector& images, Mat& response); selection(Mat& response, int npoints); } TrackerFeatureSet *-- TrackerFeature TrackerFeature <|-- TrackerFeatureHOG TrackerFeature <|-- TrackerFeatureFeature2D note "Per readability and simplicity in this diagram\n there are only two TrackerFeature but you\n can considering the implementation of the other TrackerFeature" as N1 TrackerFeatureHOG .. N1 TrackerFeatureFeature2D .. N1 } ..@enduml