Quantum GIS API Documentation  1.7.5-Wroclaw
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | List of all members
QgsContrastEnhancement Class Reference

Manipulates raster pixel values so that they enhanceContrast or clip into a specified numerical range according to the specified ContrastEnhancementAlgorithm. More...

#include <qgscontrastenhancement.h>

Collaboration diagram for QgsContrastEnhancement:
Collaboration graph
[legend]

Public Types

enum  ContrastEnhancementAlgorithm {
  NoEnhancement, StretchToMinimumMaximum, StretchAndClipToMinimumMaximum, ClipToMinimumMaximum,
  UserDefinedEnhancement
}
 This enumerator describes the types of contrast enhancement algorithms that can be used. More...
 
enum  QgsRasterDataType {
  QGS_Unknown = 0, QGS_Byte = 1, QGS_UInt16 = 2, QGS_Int16 = 3,
  QGS_UInt32 = 4, QGS_Int32 = 5, QGS_Float32 = 6, QGS_Float64 = 7,
  QGS_CInt16 = 8, QGS_CInt32 = 9, QGS_CFloat32 = 10, QGS_CFloat64 = 11,
  QGS_TypeCount = 12
}
 These are exactly the same as GDAL pixel data types This was added so that the python bindings could be built, which initially was a problem because GDALDataType was passed around as an argument to numerous method, including the constructor. More...
 

Public Member Functions

 QgsContrastEnhancement (QgsContrastEnhancement::QgsRasterDataType theDatatype=QGS_Byte)
 
 ~QgsContrastEnhancement ()
 
double maximumValue () const
 Return the maximum value for the contrast enhancement range. More...
 
double minimumValue () const
 Return the minimum value for the contrast enhancement range. More...
 
ContrastEnhancementAlgorithm contrastEnhancementAlgorithm ()
 
int enhanceContrast (double)
 Apply the contrast enhancement to a value. More...
 
bool isValueInDisplayableRange (double)
 Return true if pixel is in stretable range, false if pixel is outside of range (i.e., clipped) More...
 
void setContrastEnhancementAlgorithm (ContrastEnhancementAlgorithm, bool generateTable=true)
 Set the contrast enhancement algorithm. More...
 
void setContrastEnhancementFunction (QgsContrastEnhancementFunction *)
 A public method that allows the user to set their own custom contrast enhancment function. More...
 
void setMaximumValue (double, bool generateTable=true)
 Set the maximum value for the contrast enhancement range. More...
 
void setMinimumValue (double, bool generateTable=true)
 Return the minimum value for the contrast enhancement range. More...
 

Static Public Member Functions

static double maximumValuePossible (QgsRasterDataType)
 Helper function that returns the maximum possible value for a GDAL data type. More...
 
static double minimumValuePossible (QgsRasterDataType)
 Helper function that returns the minimum possible value for a GDAL data type. More...
 

Private Member Functions

bool generateLookupTable ()
 Method to generate a new lookup table. More...
 
int calculateContrastEnhancementValue (double)
 Method to calculate the actual enhanceContrasted value(s) More...
 

Private Attributes

ContrastEnhancementAlgorithm mContrastEnhancementAlgorithm
 Current contrast enhancement algorithm. More...
 
QgsContrastEnhancementFunctionmContrastEnhancementFunction
 Pointer to the contrast enhancement function. More...
 
bool mEnhancementDirty
 Flag indicating if the lookup table needs to be regenerated. More...
 
double mLookupTableOffset
 Scalar so that values can be used as array indicies. More...
 
int * mLookupTable
 Pointer to the lookup table. More...
 
double mMinimumValue
 User defineable minimum value for the band, used for enhanceContrasting. More...
 
double mMaximumValue
 user defineable maximum value for the band, used for enhanceContrasting More...
 
QgsRasterDataType mRasterDataType
 Data type of the band. More...
 
double mRasterDataTypeRange
 Maximum range of values for a given data type. More...
 

Detailed Description

Manipulates raster pixel values so that they enhanceContrast or clip into a specified numerical range according to the specified ContrastEnhancementAlgorithm.

Definition at line 33 of file qgscontrastenhancement.h.

Member Enumeration Documentation

This enumerator describes the types of contrast enhancement algorithms that can be used.

Enumerator
NoEnhancement 
StretchToMinimumMaximum 
StretchAndClipToMinimumMaximum 
ClipToMinimumMaximum 
UserDefinedEnhancement 

Definition at line 39 of file qgscontrastenhancement.h.

These are exactly the same as GDAL pixel data types This was added so that the python bindings could be built, which initially was a problem because GDALDataType was passed around as an argument to numerous method, including the constructor.

It seems like there should be a better way to do this...

Enumerator
QGS_Unknown 
QGS_Byte 

Eight bit unsigned integer

QGS_UInt16 

Sixteen bit unsigned integer

QGS_Int16 

Sixteen bit signed integer

QGS_UInt32 

Thirty two bit unsigned integer

QGS_Int32 

Thirty two bit signed integer

QGS_Float32 

Thirty two bit floating point

QGS_Float64 

Sixty four bit floating point

QGS_CInt16 

Complex Int16

QGS_CInt32 

Complex Int32

QGS_CFloat32 

Complex Float32

QGS_CFloat64 

Complex Float64

QGS_TypeCount 

Definition at line 55 of file qgscontrastenhancement.h.

Constructor & Destructor Documentation

QgsContrastEnhancement::QgsContrastEnhancement ( QgsContrastEnhancement::QgsRasterDataType  theDatatype = QGS_Byte)
QgsContrastEnhancement::~QgsContrastEnhancement ( )

Definition at line 53 of file qgscontrastenhancement.cpp.

Member Function Documentation

int QgsContrastEnhancement::calculateContrastEnhancementValue ( double  )
private

Method to calculate the actual enhanceContrasted value(s)

ContrastEnhancementAlgorithm QgsContrastEnhancement::contrastEnhancementAlgorithm ( )
inline

Definition at line 97 of file qgscontrastenhancement.h.

int QgsContrastEnhancement::enhanceContrast ( double  theValue)

Apply the contrast enhancement to a value.

Public function to generate the enhanced for enhanceContrasted value for a given input.

Return values are 0 - 254, -1 means the pixel was clipped and should not be displayed

Parameters
theValueThe pixel value to enhance

Definition at line 169 of file qgscontrastenhancement.cpp.

References QgsContrastEnhancementFunction::enhance(), generateLookupTable(), mContrastEnhancementAlgorithm, mContrastEnhancementFunction, mEnhancementDirty, mLookupTable, mLookupTableOffset, and NoEnhancement.

Referenced by QgsRasterLayer::drawMultiBandColor(), and QgsRasterLayer::drawSingleBandGray().

bool QgsContrastEnhancement::generateLookupTable ( )
private
bool QgsContrastEnhancement::isValueInDisplayableRange ( double  theValue)

Return true if pixel is in stretable range, false if pixel is outside of range (i.e., clipped)

Determine if a pixel is within in the displayable range.

Parameters
theValueThe pixel value to examine

Definition at line 220 of file qgscontrastenhancement.cpp.

References QgsContrastEnhancementFunction::isValueInDisplayableRange(), and mContrastEnhancementFunction.

Referenced by QgsRasterLayer::drawMultiBandColor(), and QgsRasterLayer::drawSingleBandGray().

double QgsContrastEnhancement::maximumValue ( ) const
inline

Return the maximum value for the contrast enhancement range.

Definition at line 92 of file qgscontrastenhancement.h.

double QgsContrastEnhancement::maximumValuePossible ( QgsRasterDataType  theDataType)
static
double QgsContrastEnhancement::minimumValue ( ) const
inline

Return the minimum value for the contrast enhancement range.

Definition at line 95 of file qgscontrastenhancement.h.

double QgsContrastEnhancement::minimumValuePossible ( QgsRasterDataType  theDataType)
static
void QgsContrastEnhancement::setContrastEnhancementAlgorithm ( ContrastEnhancementAlgorithm  theAlgorithm,
bool  generateTable = true 
)

Set the contrast enhancement algorithm.

The second parameter is optional and is for performace improvements. If you know you are immediately going to set the Minimum or Maximum value, you can elect to not generate the lookup tale. By default it will be generated.

Parameters
theAlgorithmThe new contrast enhancement algorithm
generateTableFlag to overide automatic look up table generation

Definition at line 237 of file qgscontrastenhancement.cpp.

References ClipToMinimumMaximum, generateLookupTable(), mContrastEnhancementAlgorithm, mContrastEnhancementFunction, mEnhancementDirty, mMaximumValue, mMinimumValue, mRasterDataType, QgsDebugMsg, StretchAndClipToMinimumMaximum, StretchToMinimumMaximum, and UserDefinedEnhancement.

void QgsContrastEnhancement::setContrastEnhancementFunction ( QgsContrastEnhancementFunction theFunction)

A public method that allows the user to set their own custom contrast enhancment function.

A public function that allows the user to set their own custom contrast enhancement function.

Parameters
theFunctionThe new contrast enhancement function

Definition at line 277 of file qgscontrastenhancement.cpp.

References generateLookupTable(), mContrastEnhancementAlgorithm, mContrastEnhancementFunction, QgsDebugMsg, and UserDefinedEnhancement.

void QgsContrastEnhancement::setMaximumValue ( double  theValue,
bool  generateTable = true 
)

Set the maximum value for the contrast enhancement range.

Set the maximum value for the contrast enhancement.

The second parameter is option an is for performace improvements. If you know you are immediately going to set the Minimum value or the contrast enhancement algorithm, you can elect to not generate the lookup tale. By default it will be generated.

Parameters
theValueThe new maximum value for the band
generateTableFlag to overide automatic look up table generation

Definition at line 295 of file qgscontrastenhancement.cpp.

References generateLookupTable(), maximumValuePossible(), mContrastEnhancementFunction, mEnhancementDirty, mMaximumValue, mRasterDataType, QgsDebugMsg, and QgsContrastEnhancementFunction::setMaximumValue().

void QgsContrastEnhancement::setMinimumValue ( double  theValue,
bool  generateTable = true 
)

Return the minimum value for the contrast enhancement range.

Set the maximum value for the contrast enhancement.

The second parameter is option an is for performace improvements. If you know you are immediately going to set the Maximum value or the contrast enhancement algorithm, you can elect to not generate the lookup tale. By default it will be generated.

Parameters
theValueThe new minimum value for the band
generateTableFlag to overide automatic look up table generation

Definition at line 327 of file qgscontrastenhancement.cpp.

References generateLookupTable(), mContrastEnhancementFunction, mEnhancementDirty, minimumValuePossible(), mMinimumValue, mRasterDataType, QgsDebugMsg, and QgsContrastEnhancementFunction::setMinimumValue().

Member Data Documentation

ContrastEnhancementAlgorithm QgsContrastEnhancement::mContrastEnhancementAlgorithm
private
QgsContrastEnhancementFunction* QgsContrastEnhancement::mContrastEnhancementFunction
private
bool QgsContrastEnhancement::mEnhancementDirty
private

Flag indicating if the lookup table needs to be regenerated.

Definition at line 130 of file qgscontrastenhancement.h.

Referenced by enhanceContrast(), generateLookupTable(), QgsContrastEnhancement(), setContrastEnhancementAlgorithm(), setMaximumValue(), and setMinimumValue().

int* QgsContrastEnhancement::mLookupTable
private

Pointer to the lookup table.

Definition at line 136 of file qgscontrastenhancement.h.

Referenced by enhanceContrast(), generateLookupTable(), and QgsContrastEnhancement().

double QgsContrastEnhancement::mLookupTableOffset
private

Scalar so that values can be used as array indicies.

Definition at line 133 of file qgscontrastenhancement.h.

Referenced by enhanceContrast(), generateLookupTable(), and QgsContrastEnhancement().

double QgsContrastEnhancement::mMaximumValue
private

user defineable maximum value for the band, used for enhanceContrasting

Definition at line 142 of file qgscontrastenhancement.h.

Referenced by generateLookupTable(), QgsContrastEnhancement(), setContrastEnhancementAlgorithm(), and setMaximumValue().

double QgsContrastEnhancement::mMinimumValue
private

User defineable minimum value for the band, used for enhanceContrasting.

Definition at line 139 of file qgscontrastenhancement.h.

Referenced by generateLookupTable(), QgsContrastEnhancement(), setContrastEnhancementAlgorithm(), and setMinimumValue().

QgsRasterDataType QgsContrastEnhancement::mRasterDataType
private
double QgsContrastEnhancement::mRasterDataTypeRange
private

Maximum range of values for a given data type.

Definition at line 148 of file qgscontrastenhancement.h.

Referenced by generateLookupTable(), and QgsContrastEnhancement().


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