Tekkotsu Homepage | Demos | Overview | Downloads | Dev. Resources | Reference | Credits |
RawCameraGenerator Class Reference#include <RawCameraGenerator.h>
Inheritance diagram for RawCameraGenerator:
![]() Detailed DescriptionGenerates FilterBankEvents containing raw camera images directly from the system (doesn't make a copy).Definition at line 11 of file RawCameraGenerator.h.
Member Enumeration Documentationholds id values for specifying image channel/bands
Definition at line 41 of file RawCameraGenerator.h.
Constructor & Destructor Documentation
constructor, numRawLayers is the number of real layers passed from the system, numCalcLayers is the total number of layers to make available The extra calculated layers are simply created by giving larger increments, they reference the same data (no computational cost, marginal memory costs... it's just nice to have more layers in the image pyramid. However you'll have to write your code to use the getIncrement() value properly if you want it to work. Otherwise, you could write a de-interlace generator which will do the resampling. The top most layer (largest index) is a double-scale image. For the Y-channel, it is reconstructed from the 4 Y channels. For the other channels, it just does a fast scaling (but these operations do cost, so use the top layer conservatively.
Definition at line 17 of file RawCameraGenerator.cc.
don't call
Member Function Documentation
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 38 of file RawCameraGenerator.h.
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 52 of file RawCameraGenerator.h.
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 35 of file RawCameraGenerator.cc.
the memory for all layers except the double layer 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 260 of file RawCameraGenerator.cc. Referenced by processEvent(), setDimensions(), and ~RawCameraGenerator().
Calculates space needed to save - if you can't precisely add up the size, just make sure to overestimate and things will still work. getBinSize is used for reserving buffers during serialization, but does not necessarily determine the actual size of what is written -- the return value of saveBuffer() specifies that after the data actually has been written. If getBinSize overestimates, the extra memory allocation is only temporary, no extra filler bytes are actually stored.
Reimplemented from FilterBankGenerator. Definition at line 102 of file RawCameraGenerator.cc.
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 110 of file RawCameraGenerator.cc.
Save to a given buffer in memory.
Reimplemented from FilterBankGenerator. Definition at line 135 of file RawCameraGenerator.cc.
overrridden to allow saving direct to file without an extra buffer copy
Reimplemented from LoadSave. Definition at line 176 of file RawCameraGenerator.cc.
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 271 of file RawCameraGenerator.cc. Referenced by RawCameraGenerator().
resets the width, height, skip and stride values
Reimplemented from FilterBankGenerator. Definition at line 245 of file RawCameraGenerator.cc. Referenced by processEvent().
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 287 of file RawCameraGenerator.cc. Referenced by loadBuffer().
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 295 of file RawCameraGenerator.cc.
deletes the arrays
Reimplemented from FilterBankGenerator. Definition at line 351 of file RawCameraGenerator.cc. Referenced by ~RawCameraGenerator().
returns the value to pass to OPENR functions corresponding to the desired channel_id_t.
Definition at line 360 of file RawCameraGenerator.cc. Referenced by calcImage().
Creates a double resolution version of a channel, doesn't do any smoothing.
Definition at line 381 of file RawCameraGenerator.cc. Referenced by calcImage().
Creates a double resolution Y-channel from the Y and Y gradient channels. This function is lifted from Sony's ImageObserver sample code. Here's Sony's original license for the file (ImageObserver.cc) that contained this function: Copyright 2002,2003 Sony Corporation
Permission to use, copy, modify, and redistribute this software for non-commercial use is hereby granted.
This software is provided "as is" without warranty of any kind, either expressed or implied, including but not limited to the implied warranties of fitness for a particular purpose. Definition at line 422 of file RawCameraGenerator.cc. Referenced by calcImage().
helper functions for reconstructImage() - see documentation for that function
Definition at line 96 of file RawCameraGenerator.h. Referenced by reconstructImage().
don't call
Member Data Documentation
ohh, this is so yucky. But we need to get around heap allocation bugs with large regions in Aperios :( So we store the double size images statically within the class. What a waste of memory since we're probably not using these very much, and they are rather large... :( The 2.0 release had the proper dynamic allocation implementation, but has been replaced in 2.0.1 with this static allocation so it won't crash. Definition at line 77 of file RawCameraGenerator.h. Referenced by createImageCache().
the number of "real" layers being sent from the system
Definition at line 102 of file RawCameraGenerator.h. Referenced by calcImage(), processEvent(), setDimensions(), and setNumImages().
points to the image data supplied by the system, one per layer (all channels are interleaved by row)
Definition at line 104 of file RawCameraGenerator.h. Referenced by calcImage(), destruct(), processEvent(), and setNumImages().
image info provided by the system
Definition at line 105 of file RawCameraGenerator.h. Referenced by calcImage(), destruct(), processEvent(), setDimensions(), and setNumImages().
The documentation for this class was generated from the following files: |
Tekkotsu v4.0 |
Generated Thu Nov 22 00:58:37 2007 by Doxygen 1.5.4 |