Describes name and attributes of a visual object. More...
#include <SIFT/VisualObject.H>
Public Member Functions | |
Constructor, assigment and destructor | |
VisualObject (const std::string &name="NULL", const std::string &imagefname="NULL", const Image< PixRGB< byte > > &image=Image< PixRGB< byte > >(), const Point2D< int > &salpt=Point2D< int >(-1,-1), const std::vector< float > &preattfeatures=std::vector< float >(), const std::vector< rutz::shared_ptr< Keypoint > > &keypoints=std::vector< rutz::shared_ptr< Keypoint > >(), const bool useColor=false, bool computeKP=true) | |
Constructor assuming precomputed keypoints. | |
void | computeKeypoints () |
VisualObject (const VisualObject &vo) | |
Copy constructor. | |
~VisualObject () | |
Destructor. | |
VisualObject & | operator= (const VisualObject &vo) |
Assignment. | |
Access functions | |
const std::string & | getName () const |
name getter | |
void | setName (const std::string &name) |
change the name, e.g., after we have recognized the object | |
const std::string & | getImageFname () const |
image filename getter | |
void | setImageFname (const std::string &fname) |
change the image file name, e.g., after we have recognized the object | |
void | setObjectSize (const Dims size) |
change the size of the object | |
void | deleteImageFile () const |
delete the image file from disk | |
const Image< PixRGB< byte > > & | getImage () |
image getter | |
const Dims | getObjectSize () const |
get the object dims | |
const Point2D< int > & | getSalPoint () const |
get the salient point location | |
const std::vector< float > & | getFeatures () const |
get all preattentive features | |
uint | numFeatures () const |
get number of pre-attentive features | |
float | getFeature (const uint index) const |
get a given pre-attentive feature | |
const std::vector < rutz::shared_ptr< Keypoint > > & | getKeypoints () const |
get all SIFT keypoints | |
uint | numKeypoints () const |
get number of SIFT keypoints | |
const rutz::shared_ptr < Keypoint > & | getKeypoint (const uint index) const |
get a given SIFT keypoint | |
void | loadImage () |
load the visual object image without returning it | |
Compute functions | |
void | sortKeypoints () |
Sort our Keypoints in ascending order of their DoG magnitude. | |
double | getFeatureDistSq (const rutz::shared_ptr< VisualObject > &obj) const |
get squared distance between our and obj's pre-attentive features | |
Image< PixRGB< byte > > | getKeypointImage (const float scale=2.0F, const float vmag=5.0F, const PixRGB< byte > col=PixRGB< byte >(255, 0, 0)) |
Get an image that shows our SIFT keypoints. | |
Image< PixRGB< byte > > | getKeypointImage2 (const float scale=2.0F, const float vmag=5.0F, const PixRGB< byte > col=PixRGB< byte >(255, 0, 0)) |
same as getKeypointImage with scale displayed as well | |
Image< PixRGB< byte > > | getSalAndKeypointImage (const float scale=2.0F, const float vmag=5.0F, const PixRGB< byte > col=PixRGB< byte >(255, 0, 0)) |
same as getKeypointImage except + salient point | |
Static Public Member Functions | |
static void | createVisualObject (std::istream &is, VisualObject &v, bool loadImage=true) |
Protected Attributes | |
std::string | itsName |
std::string | itsImageFname |
Image< PixRGB< byte > > | itsImage |
std::vector< rutz::shared_ptr < Keypoint > > | itsKeypoints |
Point2D< int > | itsSalPoint |
std::vector< float > | itsFeatures |
bool | itsIsSorted |
bool | itsUseColor |
bool | itsImageLoaded |
Dims | itsObjectSize |
Friends | |
std::istream & | operator>> (std::istream &is, VisualObject &v) |
Load a VisualObject from an istream. | |
std::ostream & | operator<< (std::ostream &os, const VisualObject &v) |
Save a VisualObject to an ostream. |
Describes name and attributes of a visual object.
A VisualObject is a visual view of a given real-world object. As such, it is described by a name, an Image representing the view, and possibly a preattentive feature vector (as obtained, for example, from VisualCortex::getFeatures() ), and a list of SIFT Keypoint objects.
Definition at line 58 of file VisualObject.H.
VisualObject::VisualObject | ( | const std::string & | name = "NULL" , |
|
const std::string & | imagefname = "NULL" , |
|||
const Image< PixRGB< byte > > & | image = Image< PixRGB<byte> >() , |
|||
const Point2D< int > & | salpt = Point2D<int>(-1,-1) , |
|||
const std::vector< float > & | preattfeatures = std::vector<float>() , |
|||
const std::vector< rutz::shared_ptr< Keypoint > > & | keypoints = std::vector< rutz::shared_ptr<Keypoint> >() , |
|||
const bool | useColor = false , |
|||
bool | computeKP = true | |||
) |
Constructor assuming precomputed keypoints.
name | the name of the object. | |
imagefname | the filename to store our image into; see operator<< and operator>> for details on how this will be used. | |
image | an image of the object. Also see operator<< and operator>> for details. | |
salpt | the salient point location of the object. | |
preattfeatures | preattentive features, as obtained, for example, from VisualCortex::getFeatures(). | |
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. |
Definition at line 98 of file VisualObject.C.
References computeKeypoints(), Image< T >::getDims(), and image.
VisualObject::VisualObject | ( | const VisualObject & | vo | ) |
Copy constructor.
Definition at line 202 of file VisualObject.C.
References Image< T >::freeMem(), and Image< T >::initialized().
VisualObject::~VisualObject | ( | ) |
Destructor.
Definition at line 212 of file VisualObject.C.
void VisualObject::computeKeypoints | ( | ) |
this is for computing keypoints at a later time only compute if the image is initialized and keypoints vector is empty
Reimplemented in CUDAVisualObject.
Definition at line 117 of file VisualObject.C.
References CONV_BOUNDARY_CLEAN, decXY(), ScaleSpace::findKeypoints(), Image< T >::getHeight(), getRGBY(), ScaleSpace::getTwoSigmaImage(), Image< T >::getWidth(), Image< T >::initialized(), interpolate(), lum, sepFilter(), and sum().
Referenced by VisualObject().
void VisualObject::deleteImageFile | ( | ) | const |
delete the image file from disk
This is useful if you want to make sure that the current image will be saved, as by default operator<< will not overwrite the image file.
Definition at line 216 of file VisualObject.C.
References Raster::fileExists(), and RASFMT_PNG.
float VisualObject::getFeature | ( | const uint | index | ) | const [inline] |
double VisualObject::getFeatureDistSq | ( | const rutz::shared_ptr< VisualObject > & | obj | ) | const |
get squared distance between our and obj's pre-attentive features
Definition at line 239 of file VisualObject.C.
References ASSERT.
const std::vector< float > & VisualObject::getFeatures | ( | ) | const [inline] |
get all preattentive features
Definition at line 277 of file VisualObject.H.
image getter
Definition at line 250 of file VisualObject.H.
References Raster::ReadRGB().
Referenced by getKeypointImage(), and getKeypointImage2().
const std::string & VisualObject::getImageFname | ( | ) | const [inline] |
image filename getter
Definition at line 241 of file VisualObject.H.
const rutz::shared_ptr< Keypoint > & VisualObject::getKeypoint | ( | const uint | index | ) | const [inline] |
Image< PixRGB< byte > > VisualObject::getKeypointImage | ( | const float | scale = 2.0F , |
|
const float | vmag = 5.0F , |
|||
const PixRGB< byte > | col = PixRGB<byte>(255, 0, 0) | |||
) |
Get an image that shows our SIFT keypoints.
This returns our internal image onto which our keypoints are drawn as little vectors.
scale | optional scale factor to apply to the image, default is to zoom in by a factor 4, which makes the keypoints more visible. | |
vmag | magnitute factor for the length of the scale vectors. | |
col | color of the vectors. |
Definition at line 357 of file VisualObject.C.
References drawDisk(), Image< T >::getHeight(), getImage(), Image< T >::getWidth(), image, and rescale().
Referenced by getSalAndKeypointImage().
Image< PixRGB< byte > > VisualObject::getKeypointImage2 | ( | const float | scale = 2.0F , |
|
const float | vmag = 5.0F , |
|||
const PixRGB< byte > | col = PixRGB<byte>(255, 0, 0) | |||
) |
same as getKeypointImage with scale displayed as well
Definition at line 389 of file VisualObject.C.
References drawCircle(), drawDisk(), Image< T >::getHeight(), getImage(), Image< T >::getWidth(), image, and rescale().
const std::vector< rutz::shared_ptr< Keypoint > > & VisualObject::getKeypoints | ( | ) | const [inline] |
get all SIFT keypoints
Definition at line 290 of file VisualObject.H.
const std::string & VisualObject::getName | ( | void | ) | const [inline] |
name getter
Definition at line 235 of file VisualObject.H.
const Dims VisualObject::getObjectSize | ( | ) | const [inline] |
get the object dims
Definition at line 269 of file VisualObject.H.
Image< PixRGB< byte > > VisualObject::getSalAndKeypointImage | ( | const float | scale = 2.0F , |
|
const float | vmag = 5.0F , |
|||
const PixRGB< byte > | col = PixRGB<byte>(255, 0, 0) | |||
) |
same as getKeypointImage except + salient point
Definition at line 424 of file VisualObject.C.
References drawDisk(), getKeypointImage(), Point2D< T >::i, and image.
const Point2D< int > & VisualObject::getSalPoint | ( | ) | const [inline] |
get the salient point location
Definition at line 274 of file VisualObject.H.
void VisualObject::loadImage | ( | ) | [inline] |
load the visual object image without returning it
Definition at line 260 of file VisualObject.H.
References Raster::ReadRGB().
uint VisualObject::numFeatures | ( | ) | const [inline] |
get number of pre-attentive features
Definition at line 280 of file VisualObject.H.
uint VisualObject::numKeypoints | ( | ) | const [inline] |
get number of SIFT keypoints
Definition at line 293 of file VisualObject.H.
VisualObject & VisualObject::operator= | ( | const VisualObject & | vo | ) |
Assignment.
Definition at line 224 of file VisualObject.C.
References Image< T >::freeMem(), and Image< T >::initialized().
void VisualObject::setImageFname | ( | const std::string & | fname | ) | [inline] |
change the image file name, e.g., after we have recognized the object
Definition at line 244 of file VisualObject.H.
void VisualObject::setName | ( | const std::string & | name | ) | [inline] |
change the name, e.g., after we have recognized the object
Definition at line 238 of file VisualObject.H.
void VisualObject::setObjectSize | ( | const Dims | size | ) | [inline] |
change the size of the object
Definition at line 247 of file VisualObject.H.
void VisualObject::sortKeypoints | ( | ) |
Sort our Keypoints in ascending order of their DoG magnitude.
We internally keep track of when we are sorted, so calling this multiple times will not impact performance.
Definition at line 258 of file VisualObject.C.
std::ostream& operator<< | ( | std::ostream & | os, | |
const VisualObject & | v | |||
) | [friend] |
Save a VisualObject to an ostream.
If our image file name is known also save the image, but only if there is not already a file by than name. You should delete the file first if you want to ensure that the image will be saved. You can use VisualObject::deleteImageFile() for that.
Definition at line 268 of file VisualObject.C.
std::istream& operator>> | ( | std::istream & | is, | |
VisualObject & | v | |||
) | [friend] |
Load a VisualObject from an istream.
Definition at line 293 of file VisualObject.C.