#ifndef MBARIVISUALOBJECT_H_
#define MBARIVISUALOBJECT_H_

#include "SIFT/VisualObject.H"

class MbariVisualObject : public VisualObject
{
public:
	MbariVisualObject();
	
	//! Constructor assuming precomputed keypoints
	/*! @param name the name of the object.
	    @param imagefname the filename to store our image into; see operator<<
        and operator>> for details on how this will be used.
      @param image an image of the object. Also see operator<< and operator>>
        for details.
      @param salpt the salient point location of the object.
      @param preattfeatures preattentive features, as obtained, for example,
        from VisualCortex::getFeatures().
      @param keypoints a vector of SIFT Keypoint descriptors. If this is
        empty, then a ScaleSpace will be built from the image and the SIFT
        keypoints will be extracted from it. */
  MbariVisualObject(const std::string& name = "",
               const std::string& imagefname = "",
               const Image< PixRGB<byte> >& image = Image< PixRGB<byte> >(),
               const Point2D& salpt = Point2D(-1,-1),
               const std::vector<double>& preattfeatures =
               std::vector<double>(),
               const std::vector< rutz::shared_ptr<Keypoint> >& keypoints =
               std::vector< rutz::shared_ptr<Keypoint> >(),
               const bool useColor = false);	
	
	//! Copy constructor
	MbariVisualObject(const MbariVisualObject& vo);
	
	virtual ~MbariVisualObject();
};

#endif /*MBARIVISUALOBJECT_H_*/
