DiScaleTemplate< T > Class Template Reference

Template class to scale images (on pixel data level). More...

Inheritance diagram for DiScaleTemplate< T >:

DiTransTemplate< T > DiColorScaleTemplate< T > DiMonoScaleTemplate< T > List of all members.

Public Member Functions

 DiScaleTemplate (const int planes, const Uint16 columns, const Uint16 rows, const signed long left_pos, const signed long top_pos, const Uint16 src_cols, const Uint16 src_rows, const Uint16 dest_cols, const Uint16 dest_rows, const Uint32 frames, const int bits=0)
 constructor, scale clipping area.
 DiScaleTemplate (const int planes, const Uint16 src_cols, const Uint16 src_rows, const Uint16 dest_cols, const Uint16 dest_rows, const Uint32 frames, const int bits=0)
 constructor, scale whole image.
virtual ~DiScaleTemplate ()
 destructor
void scaleData (const T *src[], T *dest[], const int interpolate, const T value=0)
 choose scaling/clipping algorithm depending on specified parameters.

Protected Attributes

const signed long Left
 left coordinate of clipping area
const signed long Top
 top coordinate of clipping area
const Uint16 Columns
 width of source image
const Uint16 Rows
 height of source image

Private Member Functions

void clipPixel (const T *src[], T *dest[])
 clip image to specified area (only inside image boundaries).
void clipBorderPixel (const T *src[], T *dest[], const T value)
 clip image to specified area and add a border if necessary.
void replicatePixel (const T *src[], T *dest[])
 enlarge image by an integer factor.
void suppressPixel (const T *src[], T *dest[])
 shrink image by an integer divisor Pixels are suppressed independently in both directions.
void scalePixel (const T *src[], T *dest[])
 free scaling method without interpolation.
void interpolatePixel (const T *src[], T *dest[])
 free scaling method with interpolation.
void expandPixel (const T *src[], T *dest[])
 free scaling method with interpolation (only for expansion).
void reducePixel (const T *src[], T *dest[])
 free scaling method with interpolation (only for reduction).

Detailed Description

template<class T>
class DiScaleTemplate< T >

Template class to scale images (on pixel data level).

with and without interpolation

Definition at line 100 of file discalet.h.


Constructor & Destructor Documentation

template<class T>
DiScaleTemplate< T >::DiScaleTemplate const int  planes,
const Uint16  columns,
const Uint16  rows,
const signed long  left_pos,
const signed long  top_pos,
const Uint16  src_cols,
const Uint16  src_rows,
const Uint16  dest_cols,
const Uint16  dest_rows,
const Uint32  frames,
const int  bits = 0
[inline]
 

constructor, scale clipping area.

Parameters:
planes number of planes (1 or 3)
columns width of source image
rows height of source image
left_pos left coordinate of clipping area
top_pos top coordinate of clipping area
src_cols width of clipping area
src_rows height of clipping area
dest_cols width of destination image (scaled image)
dest_rows height of destination image
frames number of frames
bits number of bits per plane/pixel

Definition at line 120 of file discalet.h.

template<class T>
DiScaleTemplate< T >::DiScaleTemplate const int  planes,
const Uint16  src_cols,
const Uint16  src_rows,
const Uint16  dest_cols,
const Uint16  dest_rows,
const Uint32  frames,
const int  bits = 0
[inline]
 

constructor, scale whole image.

Parameters:
planes number of planes (1 or 3)
src_cols width of source image
src_rows height of source image
dest_cols width of destination image (scaled image)
dest_rows height of destination image
frames number of frames
bits number of bits per plane/pixel

Definition at line 149 of file discalet.h.


Member Function Documentation

template<class T>
void DiScaleTemplate< T >::clipBorderPixel const T *  src[],
T *  dest[],
const T  value
[inline, private]
 

clip image to specified area and add a border if necessary.

NOT fully tested - UNTESTED for multi-frame and multi-plane images !!

Parameters:
src array of pointers to source image pixels
dest array of pointers to destination image pixels
value value to be set outside the image boundaries

Definition at line 284 of file discalet.h.

References DiScaleTemplate< T >::Columns, DiScaleTemplate< T >::Left, DiTransTemplate< T >::Planes, DiScaleTemplate< T >::Rows, DiTransTemplate< T >::Src_X, DiTransTemplate< T >::Src_Y, and DiScaleTemplate< T >::Top.

Referenced by DiScaleTemplate< T >::scaleData().

template<class T>
void DiScaleTemplate< T >::clipPixel const T *  src[],
T *  dest[]
[inline, private]
 

clip image to specified area (only inside image boundaries).

This is an optimization of the more general method clipBorderPixel().

Parameters:
src array of pointers to source image pixels
dest array of pointers to destination image pixels

Definition at line 251 of file discalet.h.

References DiScaleTemplate< T >::Columns, DiScaleTemplate< T >::Left, DiTransTemplate< T >::Planes, DiScaleTemplate< T >::Rows, DiTransTemplate< T >::Src_X, and DiScaleTemplate< T >::Top.

Referenced by DiScaleTemplate< T >::scaleData().

template<class T>
void DiScaleTemplate< T >::expandPixel const T *  src[],
T *  dest[]
[inline, private]
 

free scaling method with interpolation (only for expansion).

Parameters:
src array of pointers to source image pixels
dest array of pointers to destination image pixels

Definition at line 692 of file discalet.h.

References DicomImageClass::checkDebugLevel(), DiScaleTemplate< T >::Columns, DiTransTemplate< T >::Dest_X, DiTransTemplate< T >::Dest_Y, DicomImageClass::DL_Informationals, DiTransTemplate< T >::Frames, DiTransTemplate< T >::Planes, DiScaleTemplate< T >::Rows, and DiScaleTemplate< T >::Top.

Referenced by DiScaleTemplate< T >::scaleData().

template<class T>
void DiScaleTemplate< T >::interpolatePixel const T *  src[],
T *  dest[]
[inline, private]
 

free scaling method with interpolation.

Parameters:
src array of pointers to source image pixels
dest array of pointers to destination image pixels

Definition at line 518 of file discalet.h.

References DicomImageClass::checkDebugLevel(), DiScaleTemplate< T >::Columns, DiTransTemplate< T >::Dest_X, DiTransTemplate< T >::Dest_Y, DicomImageClass::DL_Errors, DiTransTemplate< T >::Frames, DiPixelRepresentationTemplate< T >::isSigned(), DicomImageClass::maxval(), DiTransTemplate< T >::Planes, DiScaleTemplate< T >::Rows, and OFBitmanipTemplate< T >::zeroMem().

Referenced by DiScaleTemplate< T >::scaleData().

template<class T>
void DiScaleTemplate< T >::reducePixel const T *  src[],
T *  dest[]
[inline, private]
 

free scaling method with interpolation (only for reduction).

Parameters:
src array of pointers to source image pixels
dest array of pointers to destination image pixels

Definition at line 795 of file discalet.h.

References DicomImageClass::checkDebugLevel(), DiScaleTemplate< T >::Columns, DiTransTemplate< T >::Dest_X, DiTransTemplate< T >::Dest_Y, DicomImageClass::DL_Informationals, DicomImageClass::DL_Warnings, DiTransTemplate< T >::Frames, DiTransTemplate< T >::Planes, DiScaleTemplate< T >::Rows, and DiScaleTemplate< T >::Top.

Referenced by DiScaleTemplate< T >::scaleData().

template<class T>
void DiScaleTemplate< T >::replicatePixel const T *  src[],
T *  dest[]
[inline, private]
 

enlarge image by an integer factor.

Pixels are replicated independently in both directions.

Parameters:
src array of pointers to source image pixels
dest array of pointers to destination image pixels

Definition at line 359 of file discalet.h.

References DiScaleTemplate< T >::Columns, DiTransTemplate< T >::Dest_X, DiTransTemplate< T >::Dest_Y, DiScaleTemplate< T >::Left, DiTransTemplate< T >::Planes, DiScaleTemplate< T >::Rows, DiTransTemplate< T >::Src_Y, and DiScaleTemplate< T >::Top.

Referenced by DiScaleTemplate< T >::scaleData().

template<class T>
void DiScaleTemplate< T >::scaleData const T *  src[],
T *  dest[],
const int  interpolate,
const T  value = 0
[inline]
 

choose scaling/clipping algorithm depending on specified parameters.

Parameters:
src array of pointers to source image pixels
dest array of pointers to destination image pixels
interpolate interpolation algorithm (0 = no interpolation, 1 = pbmplus algorithm, 2 = c't algorithm)
value value to be set outside the image boundaries (used for clipping, default: 0)

Definition at line 177 of file discalet.h.

References DicomImageClass::checkDebugLevel(), DiScaleTemplate< T >::clipBorderPixel(), DiScaleTemplate< T >::clipPixel(), DiScaleTemplate< T >::Columns, DiTransTemplate< T >::copyPixel(), DiTransTemplate< T >::Dest_X, DiTransTemplate< T >::Dest_Y, DicomImageClass::DL_DebugMessages, DicomImageClass::DL_Informationals, DiScaleTemplate< T >::expandPixel(), DiTransTemplate< T >::fillPixel(), DiScaleTemplate< T >::interpolatePixel(), DiScaleTemplate< T >::Left, DiScaleTemplate< T >::reducePixel(), DiScaleTemplate< T >::replicatePixel(), DiScaleTemplate< T >::Rows, DiScaleTemplate< T >::scalePixel(), DiTransTemplate< T >::Src_X, DiTransTemplate< T >::Src_Y, DiScaleTemplate< T >::suppressPixel(), and DiScaleTemplate< T >::Top.

template<class T>
void DiScaleTemplate< T >::scalePixel const T *  src[],
T *  dest[]
[inline, private]
 

free scaling method without interpolation.

This algorithm is necessary for overlays (1 bpp).

Parameters:
src array of pointers to source image pixels
dest array of pointers to destination image pixels

Definition at line 440 of file discalet.h.

References DiScaleTemplate< T >::Columns, DiTransTemplate< T >::Dest_X, DiTransTemplate< T >::Dest_Y, DiTransTemplate< T >::Frames, DiTransTemplate< T >::Planes, DiScaleTemplate< T >::Rows, OFBitmanipTemplate< T >::setMem(), DiTransTemplate< T >::Src_Y, and DiScaleTemplate< T >::Top.

Referenced by DiScaleTemplate< T >::scaleData().

template<class T>
void DiScaleTemplate< T >::suppressPixel const T *  src[],
T *  dest[]
[inline, private]
 

shrink image by an integer divisor Pixels are suppressed independently in both directions.

Parameters:
src array of pointers to source image pixels
dest array of pointers to destination image pixels

Definition at line 404 of file discalet.h.

References DiScaleTemplate< T >::Columns, DiTransTemplate< T >::Dest_X, DiTransTemplate< T >::Planes, DiScaleTemplate< T >::Rows, and DiScaleTemplate< T >::Top.

Referenced by DiScaleTemplate< T >::scaleData().


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


Generated on 20 Dec 2005 for OFFIS DCMTK Version 3.5.4 by Doxygen 1.4.5