CVD::SubImage< T > Class Template Reference
[Image storage and manipulation]

#include <image.h>

Inheritance diagram for CVD::SubImage< T >:

CVD::BasicImage< T > CVD::Image< T > CVD::VideoFrame< T > CVD::DeinterlaceFrame< T > CVD::DVFrame CVD::LocalVideoFrame< T > CVD::O2VideoFrame CVD::V4L1Frame< T > CVD::V4L2FrameT< T > CVD::ColourspaceFrame< T > CVD::DiskBuffer2Frame< T > CVD::ServerPushJpegFrame< T > CVD::VideoFileFrame< T >

List of all members.


Detailed Description

template<class T>
class CVD::SubImage< T >

A generic image class to manage a block of arbitrarily padded data as an image.

Provides basic image access such as accessing a particular pixel co-ordinate.

Parameters:
T The pixel type for this image. Typically either CVD::byte or CVD::Rgb<CVD::byte> > are used, but images could be constructed of any available type.
A BasicImage does not manage its own data, but provides access to an arbitrary externally-managed block of data as though it were an image. Use the derived Image class if you want an image which also has its own data.

Definition at line 263 of file image.h.


Public Types

typedef
SubImageIterator< T > 
iterator
typedef
ConstSubImageIterator
< T > 
const_iterator

Public Member Functions

 SubImage (T *data, const ImageRef &size, int stride)
bool in_image (const ImageRef &ir) const
bool in_image_with_border (const ImageRef &ir, int border) const
 ~SubImage ()
T & operator[] (const ImageRef &pos)
const T & operator[] (const ImageRef &pos) const
T * operator[] (int row)
const T * operator[] (int row) const
ImageRef pos (const T *ptr) const
const T * data () const
T * data ()
iterator begin ()
const_iterator begin () const
iterator end ()
const_iterator end () const
SubImageIteratorEnd< T > fastend ()
ConstSubImageIteratorEnd
< T > 
fastend () const
ImageRef size () const
int row_stride () const
int totalsize () const
void zero ()
void fill (const T d)
 SubImage (const SubImage &copyof)
SubImage sub_image (const ImageRef &start, const ImageRef &size)
const SubImage sub_image (const ImageRef &start, const ImageRef &size) const
SubImageref ()

Protected Member Functions

T * end_ptr ()
const T * end_ptr () const
 SubImage ()

Protected Attributes

T * my_data
ImageRef my_size
int my_stride

Constructor & Destructor Documentation

template<class T>
CVD::SubImage< T >::SubImage ( T *  data,
const ImageRef size,
int  stride 
) [inline]

Construct an image from a block of data.

Parameters:
data The image data in horizontal scanline order
size The size of the image
stride The row stride (or width, including the padding)

Definition at line 270 of file image.h.

template<class T>
CVD::SubImage< T >::~SubImage (  )  [inline]

The image data is not destroyed when a BasicImage is destroyed.

Definition at line 292 of file image.h.

template<class T>
CVD::SubImage< T >::SubImage ( const SubImage< T > &  copyof  )  [inline]

Copy constructor.

Parameters:
copyof The image to copy

Definition at line 429 of file image.h.


Member Function Documentation

template<class T>
bool CVD::SubImage< T >::in_image ( const ImageRef ir  )  const [inline]

Is this pixel co-ordinate inside the image?

Parameters:
ir The co-ordinate to test

Definition at line 278 of file image.h.

Referenced by CVD::combineImages(), CVD::copy(), CVD::SubImage< CVD::Rgb< unsigned char > >::operator[](), and CVD::SubImage< CVD::Rgb< unsigned char > >::sub_image().

template<class T>
bool CVD::SubImage< T >::in_image_with_border ( const ImageRef ir,
int  border 
) const [inline]

Is this pixel co-ordinate inside the image, and not too close to the edges?

Parameters:
ir The co-ordinate to test
border The size of the border: positive points inside the image.

Definition at line 286 of file image.h.

template<class T>
T& CVD::SubImage< T >::operator[] ( const ImageRef pos  )  [inline]

Access a pixel from the image.

Bounds checking is only performed if the library is compiled with -D CVD_IMAGE_DEBUG, in which case an ImageError::AccessOutsideImage exception is thrown.

Definition at line 298 of file image.h.

template<class T>
const T& CVD::SubImage< T >::operator[] ( const ImageRef pos  )  const [inline]

Access a pixel from the image.

Bounds checking is only performed if the library is compiled with -D CVD_IMAGE_DEBUG, in which case an ImageError::AccessOutsideImage exception is thrown.

Definition at line 307 of file image.h.

template<class T>
T* CVD::SubImage< T >::operator[] ( int  row  )  [inline]

Access pointer to pixel row.

Returns the pointer to the first element of the passed row. Allows to use [y][x] on images to access a pixel. Bounds checking is only performed if the library is compiled with -D CVD_IMAGE_DEBUG, in which case an ImageError::AccessOutsideImage exception is thrown.

Definition at line 317 of file image.h.

template<class T>
const T* CVD::SubImage< T >::operator[] ( int  row  )  const [inline]

Access pointer to pixel row.

Returns the pointer to the first element of the passed row. Allows to use [y][x] on images to access a pixel. Bounds checking is only performed if the library is compiled with -D CVD_IMAGE_DEBUG, in which case an ImageError::AccessOutsideImage exception is thrown.

Definition at line 327 of file image.h.

template<class T>
ImageRef CVD::SubImage< T >::pos ( const T *  ptr  )  const [inline]

Given a pointer, this returns the image position as an ImageRef.

Definition at line 334 of file image.h.

template<class T>
const T* CVD::SubImage< T >::data (  )  const [inline]

Returns the raw image data.

Definition at line 341 of file image.h.

Referenced by CVD::SubImage< CVD::Rgb< unsigned char > >::begin(), CVD::ConvertImage< T, T, Pixel::GenericConversion< T, T >, 1 >::convert(), CVD::convolve_gaussian_3(), CVD::convolveGaussian(), CVD::convolveGaussian5_1(), CVD::convolveSeparableSymmetric(), CVD::convolveSymmetric(), CVD::convolveWithBox(), CVD::copy(), CVD::flipVertical(), CVD::DeinterlaceBuffer< T >::get_frame(), CVD::glDrawPixels(), CVD::glReadPixels(), CVD::glTexImage2D(), CVD::glTexSubImage2D(), CVD::haar2D(), CVD::halfSample(), CVD::SubImage< CVD::Rgb< unsigned char > >::pos(), CVD::V4L1Buffer< T >::put_frame(), CVD::DeinterlaceBuffer< T >::put_frame(), and CVD::stats().

template<class T>
T* CVD::SubImage< T >::data (  )  [inline]

Returns the raw image data.

Definition at line 347 of file image.h.

template<class T>
iterator CVD::SubImage< T >::begin (  )  [inline]

Returns an iterator referencing the first (top-left) pixel in the image.

Reimplemented in CVD::BasicImage< T >, CVD::BasicImage< unsigned char >, CVD::BasicImage< CVD::Rgb8 >, and CVD::BasicImage< CVD::Rgb< unsigned char > >.

Definition at line 356 of file image.h.

Referenced by CVD::Image< CVD::Rgb< unsigned char > >::copy_from().

template<class T>
const_iterator CVD::SubImage< T >::begin (  )  const [inline]

Returns a const iterator referencing the first (top-left) pixel in the image.

Reimplemented in CVD::BasicImage< T >, CVD::BasicImage< unsigned char >, CVD::BasicImage< CVD::Rgb8 >, and CVD::BasicImage< CVD::Rgb< unsigned char > >.

Definition at line 361 of file image.h.

template<class T>
iterator CVD::SubImage< T >::end (  )  [inline]

Returns an iterator pointing to one past the end of the image.

Reimplemented in CVD::BasicImage< T >, CVD::BasicImage< unsigned char >, CVD::BasicImage< CVD::Rgb8 >, and CVD::BasicImage< CVD::Rgb< unsigned char > >.

Definition at line 367 of file image.h.

Referenced by CVD::Image< CVD::Rgb< unsigned char > >::copy_from().

template<class T>
const_iterator CVD::SubImage< T >::end (  )  const [inline]

Returns a const iterator pointing to one past the end of the image.

Reimplemented in CVD::BasicImage< T >, CVD::BasicImage< unsigned char >, CVD::BasicImage< CVD::Rgb8 >, and CVD::BasicImage< CVD::Rgb< unsigned char > >.

Definition at line 373 of file image.h.

template<class T>
SubImageIteratorEnd<T> CVD::SubImage< T >::fastend (  )  [inline]

Returns an object corresponding to end(), which should eliminate a test.

Definition at line 380 of file image.h.

template<class T>
ConstSubImageIteratorEnd<T> CVD::SubImage< T >::fastend (  )  const [inline]

Returns an object corresponding to end() const, which should eliminate a test.

Definition at line 385 of file image.h.

template<class T>
ImageRef CVD::SubImage< T >::size (  )  const [inline]

What is the size of this image?

Definition at line 396 of file image.h.

Referenced by CVD::SubImage< CVD::Rgb< unsigned char > >::begin(), CVD::combineImages(), CVD::ConvertImage< From, To, Conv, both_pod >::convert(), CVD::convert_image(), CVD::convert_image_pair(), CVD::convolve_gaussian_3(), CVD::convolveGaussian(), CVD::convolveGaussian5_1(), CVD::convolveSeparableSymmetric(), CVD::convolveSymmetric(), CVD::convolveWithBox(), CVD::copy(), CVD::Image< CVD::Rgb< unsigned char > >::copy_from(), CVD::dense_tensor_vote_gradients(), CVD::DiskBuffer2< T >::DiskBuffer2(), CVD::drawLine(), CVD::flipVertical(), CVD::ServerPushJpegBuffer< C >::get_frame(), CVD::glDrawPixels(), CVD::glReadPixels(), CVD::glTexImage2D(), CVD::glTexSubImage2D(), CVD::gradient(), CVD::Gradient< S, T, 1, 2 >::gradient(), CVD::haar2D(), CVD::halfSample(), CVD::harris_corner_detect(), CVD::harrislike_corner_detect(), CVD::integral_image(), CVD::interpolate_extremum(), CVD::interpolate_extremum_value(), CVD::joinImages(), CVD::median_filter_3x3(), CVD::output_eps_header(), CVD::sample(), CVD::shitomasi_corner_detect(), CVD::transform(), and CVD::zeroBorders().

template<class T>
int CVD::SubImage< T >::row_stride (  )  const [inline]

What is the row stride of the image?

Definition at line 402 of file image.h.

Referenced by CVD::dense_tensor_vote_gradients(), CVD::glDrawPixels(), CVD::glTexImage2D(), CVD::glTexSubImage2D(), CVD::haar2D(), and CVD::median_filter_3x3().

template<class T>
int CVD::SubImage< T >::totalsize (  )  const [inline]

What is the total number of elements in the image (i.e. size().x * size().y), including padding.

Definition at line 408 of file image.h.

Referenced by CVD::ConvertImage< T, T, Pixel::GenericConversion< T, T >, 1 >::convert(), CVD::convolve_gaussian_3(), CVD::copy(), CVD::halfSample(), CVD::Image< CVD::Rgb< unsigned char > >::Image(), CVD::stats(), and CVD::SubImage< CVD::Rgb< unsigned char > >::zero().

template<class T>
void CVD::SubImage< T >::zero (  )  [inline]

Set all the pixels in the image to zero. This is a relatively fast operation, using memset.

Definition at line 414 of file image.h.

template<class T>
void CVD::SubImage< T >::fill ( const T  d  )  [inline]

Set all the pixels in the image to a value.

This is a relatively fast operation, using memfill.

Parameters:
d The value to write into the image

Definition at line 421 of file image.h.

Referenced by CVD::Image< CVD::Rgb< unsigned char > >::Image(), and CVD::Image< CVD::Rgb< unsigned char > >::resize().

template<class T>
SubImage CVD::SubImage< T >::sub_image ( const ImageRef start,
const ImageRef size 
) [inline]

Return a sub image.

Parameters:
start Top left pixel of the sub image
size width and height of the sub image

Definition at line 440 of file image.h.

template<class T>
const SubImage CVD::SubImage< T >::sub_image ( const ImageRef start,
const ImageRef size 
) const [inline]

Return const a sub image.

Parameters:
start Top left pixel of the sub image
size width and height of the sub image

Definition at line 450 of file image.h.

template<class T>
SubImage& CVD::SubImage< T >::ref (  )  [inline]

Return a reference to a SubImage. Useful for passing anonymous SubImages to functions.

Definition at line 460 of file image.h.

template<class T>
T* CVD::SubImage< T >::end_ptr (  )  [inline, protected]

Return an off-the-end pointer without ever throwing AccessOutsideImage.

Definition at line 471 of file image.h.

Referenced by CVD::SubImage< CVD::Rgb< unsigned char > >::begin(), and CVD::SubImage< CVD::Rgb< unsigned char > >::end().

template<class T>
const T* CVD::SubImage< T >::end_ptr (  )  const [inline, protected]

Return an off-the-end pointer without ever throwing AccessOutsideImage.

Definition at line 474 of file image.h.


Member Data Documentation

template<class T>
T* CVD::SubImage< T >::my_data [protected]

The raw image data.

Definition at line 466 of file image.h.

Referenced by CVD::SubImage< CVD::Rgb< unsigned char > >::data(), CVD::SubImage< CVD::Rgb< unsigned char > >::end_ptr(), CVD::Image< CVD::Rgb< unsigned char > >::Image(), CVD::BasicImage< CVD::Rgb< unsigned char > >::operator=(), CVD::SubImage< CVD::Rgb< unsigned char > >::operator[](), CVD::SubImage< CVD::Rgb< unsigned char > >::sub_image(), CVD::SubImage< CVD::Rgb< unsigned char > >::SubImage(), CVD::SubImage< CVD::Rgb< unsigned char > >::zero(), and CVD::DVFrame::~DVFrame().

template<class T>
ImageRef CVD::SubImage< T >::my_size [protected]

The size of the image.

Definition at line 467 of file image.h.

Referenced by CVD::SubImage< CVD::Rgb< unsigned char > >::end_ptr(), CVD::SubImage< CVD::Rgb< unsigned char > >::fill(), CVD::Image< CVD::Rgb< unsigned char > >::Image(), CVD::SubImage< CVD::Rgb< unsigned char > >::in_image(), CVD::SubImage< CVD::Rgb< unsigned char > >::in_image_with_border(), CVD::BasicImage< CVD::Rgb< unsigned char > >::operator=(), CVD::SubImage< CVD::Rgb< unsigned char > >::pos(), CVD::SubImage< CVD::Rgb< unsigned char > >::size(), CVD::SubImage< CVD::Rgb< unsigned char > >::SubImage(), and CVD::SubImage< CVD::Rgb< unsigned char > >::totalsize().

template<class T>
int CVD::SubImage< T >::my_stride [protected]

The row stride.

Definition at line 468 of file image.h.

Referenced by CVD::SubImage< CVD::Rgb< unsigned char > >::begin(), CVD::SubImage< CVD::Rgb< unsigned char > >::end_ptr(), CVD::Image< CVD::Rgb< unsigned char > >::Image(), CVD::BasicImage< CVD::Rgb< unsigned char > >::operator=(), CVD::SubImage< CVD::Rgb< unsigned char > >::operator[](), CVD::SubImage< CVD::Rgb< unsigned char > >::pos(), CVD::SubImage< CVD::Rgb< unsigned char > >::row_stride(), CVD::SubImage< CVD::Rgb< unsigned char > >::sub_image(), CVD::SubImage< CVD::Rgb< unsigned char > >::SubImage(), and CVD::SubImage< CVD::Rgb< unsigned char > >::totalsize().


The documentation for this class was generated from the following file:
Generated on Wed Feb 18 10:23:07 2009 for CVD by  doxygen 1.5.3