Tekkotsu Homepage
Demos
Overview
Downloads
Dev. Resources
Reference
Credits

CDTGenerator Class Reference

Generates SegmentedColorFilterBankEvents with images provided from the system. More...

#include <CDTGenerator.h>

Inheritance diagram for CDTGenerator:

Detailed Description

Generates SegmentedColorFilterBankEvents with images provided from the system.

The Aibo has hardware-level color segmentation based on rectangular regions of UV color space. This less flexible than the CMVision segmentation routines, which allow arbitrary shapes in color space, but the CDT (Color Detection Table) implementation has the major advantage of being done in hardware.

This class doesn't do any processing of its own, it simply provides access to the CDT segmented images generated by the system.

To use this, you will first have to send the system the color regions that define the CDT. You'll need to look in the OPEN-R documentation regarding the OCdtVectorData data structure and the New/Set/DeleteCdtVectorData() functions.

For now, the color information in the Segmented Color Events will be NULL, so you won't be able to connect it to the rest of the CMVision stages unless you fill it in. Filling in the color information will require modifications of this source - I'm consciously cutting some corners to get this out the door sooner. Hopefully someone who needs this capability can pick up where I left off. It would be nice if someone made a version of CMVision's .col file format which also held the CDT information so the whole thing could be set up with one file load.

Only the actual layers sent by the system will be referenced - no double resolution layer. Much like RawCameraGenerator, the extra subsampled images are simply using a larger interleave value. If you want the images in continuous memory, you'll need to pass this through a de-interleaver stage.

Only one channel is available.

Definition at line 43 of file CDTGenerator.h.

List of all members.

Public Types

enum  channel_id_t { CHAN_CDT, NUM_CHANNELS }
 

holds id values for specifying image channel/bands

More...

Public Member Functions

 CDTGenerator (unsigned int numRawLayers, unsigned int numCalcLayers, unsigned int mysid, EventBase::EventGeneratorID_t gid, unsigned int sid)
 constructor
virtual ~CDTGenerator ()
 destructor
virtual void doStart ()
 need to override EventGeneratorBase's lazy listening -- as a root stage, need to remember each frame, just in case it might be used
virtual void doEvent ()
 called with system's image info
virtual void freeCaches ()
 the memory for all layers was allocated by system, so we just set them to NULL before calling FilterBankGenerator::freeCaches() so it won't try to delete them
virtual unsigned int getBinSize () const
virtual unsigned int loadBuffer (const char buf[], unsigned int len, const char *filename=NULL)
virtual unsigned int saveBuffer (char buf[], unsigned int len) const

Static Public Member Functions

static std::string getClassDescription ()
 Gives a short description of what this class of behaviors does... you should override this (but don't have to).

Protected Member Functions

virtual void setNumImages (unsigned int nLayers, unsigned int nChannels)
 resizes the filter bank information storage area, you should override this to do your setup and call it from your constructor
virtual void setDimensions ()
 resets the current width, height, stride, and skip for all of the layers
virtual unsigned char * createImageCache (unsigned int layer, unsigned int chan) const
 create new image data storage area for the cache - this called by getImage() only when the corresponding entry in images is NULL
virtual void calcImage (unsigned int layer, unsigned int chan)
 should calculate new image data, called by getImage() only when imageValids indicates the image being requested is dirty (and only after getImage() has already called createImageCache())
virtual void destruct ()
 deletes the arrays

Protected Attributes

unsigned int numRealLayers
 the number of actual layers to expect from the system
unsigned char ** layers
 an array of pointers to actual system memory for each layer
const OFbkImageInfo ** imageInfos
 information about image properties

Private Member Functions

 CDTGenerator (const CDTGenerator &fbk)
 don't call
const CDTGeneratoroperator= (const CDTGenerator &fbk)
 don't call

Member Enumeration Documentation

holds id values for specifying image channel/bands

Enumerator:
CHAN_CDT 

Color Detection Table, segmented image.

NUM_CHANNELS 

number of channels per resolution layer

Definition at line 57 of file CDTGenerator.h.


Constructor & Destructor Documentation

CDTGenerator::CDTGenerator ( unsigned int  numRawLayers,
unsigned int  numCalcLayers,
unsigned int  mysid,
EventBase::EventGeneratorID_t  gid,
unsigned int  sid 
)

constructor

Definition at line 15 of file CDTGenerator.cc.

virtual CDTGenerator::~CDTGenerator (  )  [virtual]

destructor

Definition at line 49 of file CDTGenerator.h.

CDTGenerator::CDTGenerator ( const CDTGenerator fbk  )  [private]

don't call


Member Function Documentation

void CDTGenerator::calcImage ( unsigned int  layer,
unsigned int  channel 
) [protected, virtual]

should calculate new image data, called by getImage() only when imageValids indicates the image being requested is dirty (and only after getImage() has already called createImageCache())

This is where you'll want to put your user-specific code for calculating the image data

Implements FilterBankGenerator.

Definition at line 200 of file CDTGenerator.cc.

unsigned char * CDTGenerator::createImageCache ( unsigned int  layer,
unsigned int  channel 
) const [protected, virtual]

create new image data storage area for the cache - this called by getImage() only when the corresponding entry in images is NULL

You should return the pointer you want stored in images to be returned by any calls to getFirstRow. Interpretation of the data it points to is dependant on the the generator which creates it

Implements FilterBankGenerator.

Definition at line 195 of file CDTGenerator.cc.

void CDTGenerator::destruct (  )  [protected, virtual]

deletes the arrays

Reimplemented from FilterBankGenerator.

Definition at line 252 of file CDTGenerator.cc.

Referenced by ~CDTGenerator().

void CDTGenerator::doEvent (  )  [virtual]

called with system's image info

The const casts in this function are regretable but necessary since the OPEN-R OFbkImage constructor requires mutable arguments, even though it shouldn't be modifying the data

Reimplemented from FilterBankGenerator.

Definition at line 33 of file CDTGenerator.cc.

virtual void CDTGenerator::doStart (  )  [virtual]

need to override EventGeneratorBase's lazy listening -- as a root stage, need to remember each frame, just in case it might be used

Reimplemented from EventGeneratorBase.

Definition at line 63 of file CDTGenerator.h.

void CDTGenerator::freeCaches (  )  [virtual]

the memory for all layers was allocated by system, so we just set them to NULL before calling FilterBankGenerator::freeCaches() so it won't try to delete them

Reimplemented from FilterBankGenerator.

Definition at line 168 of file CDTGenerator.cc.

Referenced by setDimensions(), and ~CDTGenerator().

unsigned int CDTGenerator::getBinSize (  )  const [virtual]

The loadBuffer() functions of the included subclasses aren't tested, so don't assume they'll work without a little debugging...

Reimplemented from FilterBankGenerator.

Definition at line 88 of file CDTGenerator.cc.

static std::string CDTGenerator::getClassDescription (  )  [static]

Gives a short description of what this class of behaviors does... you should override this (but don't have to).

If you do override this, also consider overriding getDescription() to return it

Reimplemented from BehaviorBase.

Definition at line 54 of file CDTGenerator.h.

unsigned int CDTGenerator::loadBuffer ( const char  buf[],
unsigned int  len,
const char *  filename = NULL 
) [virtual]

The loadBuffer() functions of the included subclasses aren't tested, so don't assume they'll work without a little debugging...

Reimplemented from FilterBankGenerator.

Definition at line 98 of file CDTGenerator.cc.

const CDTGenerator& CDTGenerator::operator= ( const CDTGenerator fbk  )  [private]

don't call

unsigned int CDTGenerator::saveBuffer ( char  buf[],
unsigned int  len 
) const [virtual]

The loadBuffer() functions of the included subclasses aren't tested, so don't assume they'll work without a little debugging...

Reimplemented from FilterBankGenerator.

Definition at line 105 of file CDTGenerator.cc.

void CDTGenerator::setDimensions (  )  [protected, virtual]

resets the current width, height, stride, and skip for all of the layers

Reimplemented from FilterBankGenerator.

Definition at line 153 of file CDTGenerator.cc.

Referenced by doEvent().

void CDTGenerator::setNumImages ( unsigned int  nLayers,
unsigned int  nChannels 
) [protected, virtual]

resizes the filter bank information storage area, you should override this to do your setup and call it from your constructor

In general, it isn't expected that FilterBankGenerator's should necessarily be dynamically resizeable (although it would be nice), which is why this isn't public. If yours is, just add some pubic accessor functions which call this. In general, the included subclasses should be able to handle being resized, but there's no reason to do so since the system won't be changing its available resolutions at run time.

The default implementation is a no-op if(numLayers==nLayers && numChannels==nChannels)

Reimplemented from FilterBankGenerator.

Definition at line 179 of file CDTGenerator.cc.

Referenced by CDTGenerator().


Member Data Documentation

information about image properties

Definition at line 90 of file CDTGenerator.h.

Referenced by calcImage(), destruct(), doEvent(), setDimensions(), and setNumImages().

unsigned char** CDTGenerator::layers [protected]

an array of pointers to actual system memory for each layer

Definition at line 89 of file CDTGenerator.h.

Referenced by calcImage(), destruct(), doEvent(), and setNumImages().

unsigned int CDTGenerator::numRealLayers [protected]

the number of actual layers to expect from the system

Definition at line 87 of file CDTGenerator.h.

Referenced by calcImage(), doEvent(), setDimensions(), and setNumImages().


The documentation for this class was generated from the following files:

Tekkotsu v5.1CVS
Generated Mon May 9 04:59:05 2016 by Doxygen 1.6.3