libimage  0.25.4
 All Classes Namespaces Files Functions Variables Enumerations Macros Pages
Public Member Functions | Private Member Functions | Private Attributes | List of all members
ResampledImage Class Reference

#include <ResampledImage.h>

Inheritance diagram for ResampledImage:
Inheritance graph
Collaboration diagram for ResampledImage:
Collaboration graph

Public Member Functions

int getline (float *buffer, int line)
int getline (uint8_t *buffer, int line)
int getline (uint16_t *buffer, int line)
 ResampledImage (Image *image, int width, int height, double resx, double resy, BoundingBox< double > bbox, Interpolation::KernelType KT=Interpolation::LANCZOS_3, bool bMask=false)
 Create a ResampledImage object, from all attributes.
 ~ResampledImage ()
 Default destructor.
void print ()
 Resampled image description output.
- Public Member Functions inherited from Image
void makeMask ()
 Define the image as a mask.
int getWidth ()
 Return the image's width.
int getHeight ()
 Return the image's height.
void setBbox (BoundingBox< double > box)
 Define the image's bounding box and calculate resolutions.
bool setDimensions (int w, int h, BoundingBox< double > box, double rx, double ry)
 Define the image's bounding box and calculate resolutions.
BoundingBox< double > getBbox () const
 Return the image's bounding box.
void setCRS (CRS srs)
 Define the CRS of the image's bounding box.
CRS getCRS () const
 Return the image's bounding box's CRS.
double getXmin () const
 Return bounding box's xmin.
double getYmax () const
 Return bounding box's ymax.
double getXmax () const
 Return bounding box's xmax.
double getYmin () const
 Return bounding box's ymin.
double getResX () const
 Return the X wise resolution.
double getResY () const
 Return the Y wise resolution.
ImagegetMask ()
 Return the associated mask.
bool setMask (Image *newMask)
 Defined data mask and check consistency.
int x2c (double x)
 Conversion from terrain coordinate X to image column indice.
int y2l (double y)
 Conversion from terrain coordinate Y to image line indice.
double c2x (int c)
 Conversion from image column indice to terrain coordinate X (pixel's center)
double l2y (int l)
 Conversion from image line indice to terrain coordinate X (pixel's center)
double getPhaseX ()
 Phasis calculation, X wise.
double getPhaseY ()
 Phasis calculation, Y wise.
bool isCompatibleWith (Image *pImage)
 Determine compatibility with another image, comparing CRS, phasis and resolutions.
 Image (int width, int height, int channels, double resx, double resy, BoundingBox< double > bbox)
 Create an Image object, from all attributes.
 Image (int width, int height, int channels)
 Create an Image without providing georeferencement, neither resolutions nor bounding box.
 Image (int width, int height, int channels, BoundingBox< double > bbox)
 Create an Image without providing resolutions.
 Image (int width, int height, int channels, double resx, double resy)
 Create an Image object without providing bbox.
virtual ~Image ()
 Default destructor.
virtual void printTFW ()
 Image TFW output.

Private Member Functions

int resampleSourceLine (int line)

Private Attributes

ImagesourceImage
 Source image, to resample.
bool useMask
 Precise if mask have to be used by interpolation (heavy)
const KernelK
 Interpolation kernel to use.
int Kx
 Number of source pixels used by interpolation, widthwise.
int Ky
 Number of source pixels used by interpolation, heightwise.
double ratioX
 Ratio between destination resolution and source resolution, widthwise.
double ratioY
 Ratio between destination resolution and source resolution, heighthwise.
double top
 Offset between source image's top and resmapled image's top.
double left
 Offset between source image's left and resmapled image's left.
float * __buffer
 Global buffer.
float * src_image_buffer [4]
 Image source lines storage buffer.
float * mux_src_image_buffer
 Multiplexed image source lines storage buffer.
float * src_mask_buffer [4]
 Mask source lines storage buffer.
float * mux_src_mask_buffer
 Multiplexed mask source lines storage buffer.
int memorizedLines
 Number of memorized resampled lines, for image and mask.
int * resampled_line_index
 Memorized lines indexing.
float ** resampled_image
 Buffer to memorize already calculated image's lines.
float ** resampled_mask
 Buffer to memorize already calculated mask's lines.
float * mux_resampled_image
 Image's line, widthwise resampled, multiplexed.
float * mux_resampled_mask
 Mask's line, widthwise resampled, multiplexed.
float * dst_image_buffer
 Completly resampled line.
float * weight_buffer
 Temporary weights' array.
float * Wx
 Widthwise resampling weights.
int * xMin
 Min pixels coordinates array.

Additional Inherited Members

- Static Public Member Functions inherited from Image
static bool dimensionsAreConsistent (double resolution_x, double resolution_y, int w, int h, BoundingBox< double > bounding_box)
 Check provided dimensions' consistency.
- Public Attributes inherited from Image
const int channels
 Number of samples per pixel.
- Protected Member Functions inherited from Image
void computeResolutions ()
 Resolutions calculation, from pixel size and bounding box.
- Protected Attributes inherited from Image
int width
 Image's width, in pixel.
int height
 Image's height, in pixel.
bool isMask
 Is this image a mask ?
BoundingBox< double > bbox
 Image's bounding box.
CRS crs
 Bounding box's CRS.
Imagemask
 Mask associated to the image, optionnal.
double resx
 Image's resolution, X wise.
double resy
 Image's resolution, Y wise.

Detailed Description

Author
Institut national de l'information géographique et forestière
ri_2D.png

Constructor & Destructor Documentation

ResampledImage::ResampledImage ( Image image,
int  width,
int  height,
double  resx,
double  resy,
BoundingBox< double >  bbox,
Interpolation::KernelType  KT = Interpolation::LANCZOS_3,
bool  bMask = false 
)

Create a ResampledImage object, from all attributes.

Parameters
[in]imagesource image
[in]widthimage width, in pixel
[in]heightimage height, in pixel
[in]resxX wise resolution
[in]resyY wise resolution
[in]bboxbounding box
[in]bUseMaskprecise if resampling use masks
[in]KTinterpolation kernel to use for resampling

Here is the call graph for this function:

ResampledImage::~ResampledImage ( )
inline

Default destructor.

Desallocate :

And remove #source_image

Member Data Documentation

float* ResampledImage::__buffer
private

Global buffer.

Contains:

  • widthwise resampled lines memorization buffers (image and mask)
  • intermediate calculation buffers (image and mask)
  • weights' buffer
  • index buffer
double ResampledImage::left
private

Offset between source image's left and resmapled image's left.

Distance is expressed as source pixel and between pixels' centers.

float* ResampledImage::mux_src_image_buffer
private

Multiplexed image source lines storage buffer.

We store 4 lines, multiplexed

float* ResampledImage::mux_src_mask_buffer
private

Multiplexed mask source lines storage buffer.

We store 4 lines, multiplexed

double ResampledImage::ratioX
private

Ratio between destination resolution and source resolution, widthwise.

X ratio = X destination resolution / X source resolution

double ResampledImage::ratioY
private

Ratio between destination resolution and source resolution, heighthwise.

Y ratio = Y destination resolution / Y source resolution

float** ResampledImage::resampled_image
private

Buffer to memorize already calculated image's lines.

We memorize memorize_line lines of source image, widthwise resampled.

int* ResampledImage::resampled_line_index
private

Memorized lines indexing.

To convert source image line (widthwise resampled) indice to memorized line indice (in resampled_image and resampled_mask).

float** ResampledImage::resampled_mask
private

Buffer to memorize already calculated mask's lines.

We memorize memorize_line lines of source mask, widthwise resampled.

float* ResampledImage::src_image_buffer[4]
private

Image source lines storage buffer.

We store 4 lines

float* ResampledImage::src_mask_buffer[4]
private

Mask source lines storage buffer.

We store 4 lines

double ResampledImage::top
private

Offset between source image's top and resmapled image's top.

Distance is expressed as source pixel and between pixels' centers.

float* ResampledImage::weight_buffer
private

Temporary weights' array.

If masks are used, some pixels are not any more used by interpolation. Weight sum is not normalized. We have to memorize weight sum to normalize average in the end.

float* ResampledImage::Wx
private

Widthwise resampling weights.

Weights are quadrupled, to calulate 4 lines in the same time.

int* ResampledImage::xMin
private

Min pixels coordinates array.

For each destination pixel, we precise the first source pixel (column indice) which be used by interpolation (return value of function Kernel::weight)


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