casacore::CurvedImage2D< T > Class Template Reference

An image crosscut based on a curve in a plane. More...

#include <CurvedImage2D.h>

Inheritance diagram for casacore::CurvedImage2D< T >:
casacore::ImageInterface< T > casacore::MaskedLattice< T > casacore::Lattice< T > casacore::LatticeBase

List of all members.

Public Member Functions

 CurvedImage2D ()
 The default constructor.
 CurvedImage2D (const ImageInterface< T > &, const CLInterpolator2D< T > &, const PixelCurve1D &, uInt axis1, uInt axis2, Int curveAxis=-1)
 Take a curved slice from the given image.
 CurvedImage2D (const CurvedImage2D< T > &other)
 Copy constructor (reference semantics).
virtual ~CurvedImage2D ()
CurvedImage2D< T > & operator= (const CurvedImage2D< T > &other)
 Assignment (reference semantics).
virtual ImageInterface< T > * cloneII () const
 Make a copy of the object (reference semantics).
virtual String imageType () const
 Get the image type (returns name of derived class).
virtual Bool isMasked () const
 Is the CurvedImage2D masked? It is if its parent image is masked.
virtual Bool hasPixelMask () const
 Does the image object have a pixelmask? It does if its parent has a pixelmask.
virtual const Lattice< Bool > & pixelMask () const
 Get access to the pixelmask in use (thus to the pixelmask of the parent).
virtual Lattice< Bool > & pixelMask ()
virtual const LatticeRegiongetRegionPtr () const
 Get the region used (always returns 0).
virtual Bool isPersistent () const
 A CurvedImage2D is not persistent.
virtual Bool isPaged () const
 Is the CurvedImage2D paged to disk?
virtual Bool isWritable () const
 An CurvedImage2D is not writable.
virtual IPosition shape () const
 Returns the shape of the CurvedImage2D.
virtual uInt advisedMaxPixels () const
 This function returns the recommended maximum number of pixels to include in the cursor of an iterator.
virtual void resize (const TiledShape &newShape)
 Function which changes the shape of the CurvedImage2D.
virtual String name (Bool stripPath=False) const
 Return the name of the parent ImageInterface object.
virtual Bool ok () const
 Check class invariants.
virtual ImageAttrHandlerattrHandler (Bool createHandler=False)
 Get access to the attribute handler (of the parent image).
virtual Bool doGetSlice (Array< T > &buffer, const Slicer &section)
 Do the actual getting of an array of values.
virtual void doPutSlice (const Array< T > &sourceBuffer, const IPosition &where, const IPosition &stride)
 Putting data is not possible.
virtual Bool doGetMaskSlice (Array< Bool > &buffer, const Slicer &section)
 Get a section of the mask.
virtual LatticeIterInterface< T > * makeIter (const LatticeNavigator &navigator, Bool useRef) const
 This function is used by the LatticeIterator class to generate an iterator of the correct type for this Lattice.
virtual IPosition doNiceCursorShape (uInt maxPixels) const
 Get the best cursor shape.
virtual Bool lock (FileLocker::LockType, uInt nattempts)
 Handle the (un)locking and syncing, etc.
virtual void unlock ()
virtual Bool hasLock (FileLocker::LockType) const
virtual void resync ()
 Resynchronize the Lattice object with the lattice file.
virtual void flush ()
 Flush the data (but do not unlock).
virtual void tempClose ()
 Temporarily close the lattice.
virtual void reopen ()
 Explicitly reopen the temporarily closed lattice.

Private Attributes

ImageInterface< T > * itsImagePtr
CurvedLattice2D< T > * itsCurLatPtr

Detailed Description

template<class T>
class casacore::CurvedImage2D< T >

An image crosscut based on a curve in a plane.

Intended use:

Public interface

Review Status

Test programs:
tCurvedImage2D

Prerequisite

Synopsis

Class CurvedImage2D can be used to make a crosscut through an image with a dimensionality >= 2. The dimensionality of the resulting image is one less. The crosscut is based on a curve defined by a PixelCurve1D object. The curve can be any 1-dim function (e.g. straight line, spline) supported by the Functionals module. The curve must be in one of the main planes of the image as defined by the axes arguments in the constructor.
For example: in an RA-DEC-FREQ image a straight line can be defined in the RA-DEC plane (axis1=0, axis2=1) from blc {0,0) to trc (511,511). The crosscut will follow this line, so the result is a 2-dim image with axes 'line' and FREQ. So it contains the spectrum for all points on the line (points (0,0), (1,1) ... (511,511)).
In this example the line only contains exact grid points. In practice that usually won't be case, so interpolation has to be done. This is done by a class derived from CLInterpolator2D , so any interpolation scheme is possible. Currently only the nearest neighbour scheme is implemented ( CLIPNearest2D ).

Example

The following example uses a 3-dim image. It makes a crosscut using a line from the blc to the trc in the XY plane. The number of points on the line is the maximum of the number of points in X and Y.

 // Open an image.
 PagedImage<Float> image("name.img");
 // Make a straight line from (0,0) to the trc.
 IPosition shp = lat.shape();
 Int xtop = shp(0);
 Int ytop = shp(1);
 Int nr = xtop;
 if (nr > ytop) nr = ytop;
 PixelCurve1D pc(0, 0, xtop-1, ytop-1, nr);
 // Create the crosscut image.
 // The new axis (the curve axis) is the first axis in the result.
 CurvedImage2D<Float> clat(image, CLIPNearest2D<Float>(), pc, 0, 1, 0);

Note that in the general case the line (or any curve) won't be from the blc to the trc. In fact, it is possible to give any starting and end point and any number of points on the curve.

Motivation

Users like to view arbitrary image crosscuts.

Definition at line 113 of file CurvedImage2D.h.


Constructor & Destructor Documentation

template<class T>
casacore::CurvedImage2D< T >::CurvedImage2D (  ) 

The default constructor.

template<class T>
casacore::CurvedImage2D< T >::CurvedImage2D ( const ImageInterface< T > &  ,
const CLInterpolator2D< T > &  ,
const PixelCurve1D ,
uInt  axis1,
uInt  axis2,
Int  curveAxis = -1 
)

Take a curved slice from the given image.

The PixelCurve1D object defines the curve in one of the planes of the image. The arguments axis1 and axis2 define the plane the curve is in. The CLInterpolator2D object defines the interpolation scheme for pixels that are not on grid points. An example is CLIPNearest2D which takes the nearest neighbour. The dimensionality of the CurvedImage2D is one less than the dimensionality of the given image. Two axes (axis1 and axis2) are replaced by the new axis representing the curve. The argument curveAxis defines the axis number of the new axis. It defaults to the last axis. An exception is thrown if the dimensionality of the input image is < 2 or if the given axes numbers are too high. Note that the output CoordinateSystem of the CurvedImage is just a dummy LinearCoordinate at this point. The values are all arbitrary.

template<class T>
casacore::CurvedImage2D< T >::CurvedImage2D ( const CurvedImage2D< T > &  other  ) 

Copy constructor (reference semantics).

template<class T>
virtual casacore::CurvedImage2D< T >::~CurvedImage2D (  )  [virtual]

Member Function Documentation

template<class T>
virtual uInt casacore::CurvedImage2D< T >::advisedMaxPixels (  )  const [virtual]

This function returns the recommended maximum number of pixels to include in the cursor of an iterator.

Reimplemented from casacore::Lattice< T >.

template<class T>
virtual ImageAttrHandler& casacore::CurvedImage2D< T >::attrHandler ( Bool  createHandler = False  )  [virtual]

Get access to the attribute handler (of the parent image).

If a handler keyword does not exist yet, it is created if createHandler is set. Otherwise the handler is empty and no groups can be created for it.

Reimplemented from casacore::ImageInterface< T >.

template<class T>
virtual ImageInterface<T>* casacore::CurvedImage2D< T >::cloneII (  )  const [virtual]

Make a copy of the object (reference semantics).

Implements casacore::ImageInterface< T >.

template<class T>
virtual Bool casacore::CurvedImage2D< T >::doGetMaskSlice ( Array< Bool > &  buffer,
const Slicer section 
) [virtual]

Get a section of the mask.

Reimplemented from casacore::MaskedLattice< T >.

template<class T>
virtual Bool casacore::CurvedImage2D< T >::doGetSlice ( Array< T > &  buffer,
const Slicer section 
) [virtual]

Do the actual getting of an array of values.

Implements casacore::Lattice< T >.

template<class T>
virtual IPosition casacore::CurvedImage2D< T >::doNiceCursorShape ( uInt  maxPixels  )  const [virtual]

Get the best cursor shape.

Reimplemented from casacore::LatticeBase.

template<class T>
virtual void casacore::CurvedImage2D< T >::doPutSlice ( const Array< T > &  sourceBuffer,
const IPosition where,
const IPosition stride 
) [virtual]

Putting data is not possible.

Implements casacore::Lattice< T >.

template<class T>
virtual void casacore::CurvedImage2D< T >::flush (  )  [virtual]

Flush the data (but do not unlock).


By default the function does not do anything at all.

Reimplemented from casacore::LatticeBase.

template<class T>
virtual const LatticeRegion* casacore::CurvedImage2D< T >::getRegionPtr (  )  const [virtual]

Get the region used (always returns 0).

Implements casacore::MaskedLattice< T >.

template<class T>
virtual Bool casacore::CurvedImage2D< T >::hasLock ( FileLocker::LockType   )  const [virtual]

Reimplemented from casacore::LatticeBase.

template<class T>
virtual Bool casacore::CurvedImage2D< T >::hasPixelMask (  )  const [virtual]

Does the image object have a pixelmask? It does if its parent has a pixelmask.

Reimplemented from casacore::MaskedLattice< T >.

template<class T>
virtual String casacore::CurvedImage2D< T >::imageType (  )  const [virtual]

Get the image type (returns name of derived class).

Implements casacore::ImageInterface< T >.

template<class T>
virtual Bool casacore::CurvedImage2D< T >::isMasked (  )  const [virtual]

Is the CurvedImage2D masked? It is if its parent image is masked.

Reimplemented from casacore::MaskedLattice< T >.

template<class T>
virtual Bool casacore::CurvedImage2D< T >::isPaged (  )  const [virtual]

Is the CurvedImage2D paged to disk?

Reimplemented from casacore::LatticeBase.

template<class T>
virtual Bool casacore::CurvedImage2D< T >::isPersistent (  )  const [virtual]

A CurvedImage2D is not persistent.

Reimplemented from casacore::LatticeBase.

template<class T>
virtual Bool casacore::CurvedImage2D< T >::isWritable (  )  const [virtual]

An CurvedImage2D is not writable.

Reimplemented from casacore::LatticeBase.

template<class T>
virtual Bool casacore::CurvedImage2D< T >::lock ( FileLocker::LockType  ,
uInt  nattempts 
) [virtual]

Handle the (un)locking and syncing, etc.

Reimplemented from casacore::LatticeBase.

template<class T>
virtual LatticeIterInterface<T>* casacore::CurvedImage2D< T >::makeIter ( const LatticeNavigator navigator,
Bool  useRef 
) const [virtual]

This function is used by the LatticeIterator class to generate an iterator of the correct type for this Lattice.

Not recommended for general use.

Reimplemented from casacore::Lattice< T >.

template<class T>
virtual String casacore::CurvedImage2D< T >::name ( Bool  stripPath = False  )  const [virtual]

Return the name of the parent ImageInterface object.

Implements casacore::ImageInterface< T >.

template<class T>
virtual Bool casacore::CurvedImage2D< T >::ok (  )  const [virtual]

Check class invariants.

Implements casacore::ImageInterface< T >.

template<class T>
CurvedImage2D<T>& casacore::CurvedImage2D< T >::operator= ( const CurvedImage2D< T > &  other  ) 

Assignment (reference semantics).

Reimplemented from casacore::ImageInterface< T >.

template<class T>
virtual Lattice<Bool>& casacore::CurvedImage2D< T >::pixelMask (  )  [virtual]

Reimplemented from casacore::MaskedLattice< T >.

template<class T>
virtual const Lattice<Bool>& casacore::CurvedImage2D< T >::pixelMask (  )  const [virtual]

Get access to the pixelmask in use (thus to the pixelmask of the parent).

An exception is thrown if the parent does not have a pixelmask.

Reimplemented from casacore::MaskedLattice< T >.

template<class T>
virtual void casacore::CurvedImage2D< T >::reopen (  )  [virtual]

Explicitly reopen the temporarily closed lattice.


By default the function does not do anything at all.

Reimplemented from casacore::LatticeBase.

template<class T>
virtual void casacore::CurvedImage2D< T >::resize ( const TiledShape newShape  )  [virtual]

Function which changes the shape of the CurvedImage2D.

Throws an exception as resizing an CurvedImage2D is not possible.

Implements casacore::ImageInterface< T >.

template<class T>
virtual void casacore::CurvedImage2D< T >::resync (  )  [virtual]

Resynchronize the Lattice object with the lattice file.

This function is only useful if no read-locking is used, ie. if the table lock option is UserNoReadLocking or AutoNoReadLocking. In that cases the table system does not acquire a read-lock, thus does not synchronize itself automatically.
By default the function does not do anything at all.

Reimplemented from casacore::LatticeBase.

template<class T>
virtual IPosition casacore::CurvedImage2D< T >::shape (  )  const [virtual]

Returns the shape of the CurvedImage2D.

Implements casacore::LatticeBase.

template<class T>
virtual void casacore::CurvedImage2D< T >::tempClose (  )  [virtual]

Temporarily close the lattice.

It will be reopened automatically on the next access.
By default the function does not do anything at all.

Reimplemented from casacore::LatticeBase.

template<class T>
virtual void casacore::CurvedImage2D< T >::unlock (  )  [virtual]

Reimplemented from casacore::LatticeBase.


Member Data Documentation

template<class T>
CurvedLattice2D<T>* casacore::CurvedImage2D< T >::itsCurLatPtr [private]

Definition at line 240 of file CurvedImage2D.h.

template<class T>
ImageInterface<T>* casacore::CurvedImage2D< T >::itsImagePtr [private]

Definition at line 239 of file CurvedImage2D.h.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 31 Aug 2016 for casa by  doxygen 1.6.1