eVision C++ API 26.10.0-beta.2.dev
Loading...
Searching...
No Matches
eVision::EHDRFusion Class Reference

Utility class containing two configurable algorithms to display HDR images on standard display monitors while conserving details and visual quality of the input image. The fusion method takes multiple color images as input and the exposure times of each image. The fusion is performed in three steps: More...

#include <eVision/EasyImage/EHDRFusion.h>

Collaboration diagram for eVision::EHDRFusion:

Public Member Functions

 EHDRFusion (const eVision::EMergerParameters &mergerParams, const eVision::EToneMapperParameters &toneMapperParams)
 Creates a HDR fusion with the specified merger and tone-mapper. Every merger are compatible with every tone-mapper.
 EHDRFusion ()
 Creates a HDR fusion with the specified merger and tone-mapper. Every merger are compatible with every tone-mapper.
 EHDRFusion (const eVision::EHDRFusion &other)
 Copy operator.
virtual ~EHDRFusion () throw ()
bool operator== (const eVision::EHDRFusion &rhs) const
 Checks if this EHDRFusion instance is strictly equal to another.
eVision::EHDRFusion & operator= (const eVision::EHDRFusion &other)
 Assignment operator.
void SetReinhardToneMapperParameters (const eVision::EReinhardToneMapperParameters &params)
 Sets the parameter set for the current Reinhard tone-mapper. Throws an exception if the current tone-mapper isn't a reinhard tone-mapper.
eVision::EReinhardToneMapperParameters GetReinhardToneMapperParameters () const
 Gets the parameter set for the current Reinhard tone-mapper. Throws an exception if the current tone-mapper isn't a reinhard tone-mapper.
void SetMantiukToneMapperParameters (const eVision::EMantiukToneMapperParameters &params)
 Sets the parameter set for the current Mantiuk tone-mapper. Throws an exception if the current tone-mapper isn't a Mantiuk tone-mapper.
eVision::EMantiukToneMapperParameters GetMantiukToneMapperParameters () const
 Gets the parameter set for the current Mantiuk tone-mapper. Throws an exception if the current tone-mapper isn't a Mantiuk tone-mapper.
void SetDragoToneMapperParameters (const eVision::EDragoToneMapperParameters &params)
 Sets the parameter set for the current Drago tone-mapper. Throws an exception if the current tone-mapper isn't a Drago tone-mapper.
eVision::EDragoToneMapperParameters GetDragoToneMapperParameters () const
 Gets the parameter set for the current Drago tone-mapper. Throws an exception if the current tone-mapper isn't a Drago tone-mapper.
void SetLinearToneMapperParameters (const eVision::ELinearToneMapperParameters &params)
 Sets the parameter set for the current linear tone-mapper. Throws an exception if the current tone-mapper isn't a linear tone-mapper.
eVision::ELinearToneMapperParameters GetLinearToneMapperParameters () const
 Gets the parameter set for the current linear tone-mapper. Throws an exception if the current tone-mapper isn't a linear tone-mapper.
void SetMertensMergerParameters (const eVision::EMertensMergerParameters &params)
 Sets the parameter set for the current Mertens merger. Throws an exception if the current tone-mapper isn't a Mertens Merger.
eVision::EMertensMergerParameters GetMertensMergerParameters () const
 Gets the parameter set for the current Mertens merger. Throws an exception if the current tone-mapper isn't a Mertens Merger.
void Fuse (const std::vector< eVision::EImageC24 > &inputs, eVision::EImageC24 &output, const std::vector< float > &exposureTimes)
 If the merger type is not Mertens, the number of inputs image must match the number of exposure times. Otherwise, the number of exposure times must be null. The output image and all input images must have the same dimensions. When using the Debevec or Robertson algorithm, the response of the camera is computed by a preleminary calibration. This operation is expensive and if next calls are applied on the same number of images, with the same dimension and the same exposure times, it will not be computed again. Otherwise, the calibration is done again.
void Fuse (const std::vector< eVision::EImageC24 > &inputs, eVision::EImageC24 &output)
 If the merger type is not Mertens, the number of inputs image must match the number of exposure times. Otherwise, the number of exposure times must be null. The output image and all input images must have the same dimensions. When using the Debevec or Robertson algorithm, the response of the camera is computed by a preleminary calibration. This operation is expensive and if next calls are applied on the same number of images, with the same dimension and the same exposure times, it will not be computed again. Otherwise, the calibration is done again.
void Fuse (const std::vector< eVision::EImageBW8 > &inputs, eVision::EImageBW8 &output, const std::vector< float > &exposureTimes)
 If the merger type is not Mertens, the number of inputs image must match the number of exposure times. Otherwise, the number of exposure times must be null. The output image and all input images must have the same dimensions. When using the Debevec or Robertson algorithm, the response of the camera is computed by a preleminary calibration. This operation is expensive and if next calls are applied on the same number of images, with the same dimension and the same exposure times, it will not be computed again. Otherwise, the calibration is done again.
void Fuse (const std::vector< eVision::EImageBW8 > &inputs, eVision::EImageBW8 &output)
 If the merger type is not Mertens, the number of inputs image must match the number of exposure times. Otherwise, the number of exposure times must be null. The output image and all input images must have the same dimensions. When using the Debevec or Robertson algorithm, the response of the camera is computed by a preleminary calibration. This operation is expensive and if next calls are applied on the same number of images, with the same dimension and the same exposure times, it will not be computed again. Otherwise, the calibration is done again.
void Save (const std::string &path)
 Saves the EHDRFusion. The given ESerializer must have been created for writing.
void Save (eVision::ESerializer *serializer)
 Saves the EHDRFusion. The given ESerializer must have been created for writing.
void Load (const std::string &path)
 Loads the EHDRFusion. The given ESerializer must have been created for reading.
void Load (eVision::ESerializer *serializer)
 Loads the EHDRFusion. The given ESerializer must have been created for reading.
eVision::EToneMapperType GetToneMapperType () const
 Gets the current tone-mapper type.
void SetToneMapperType (eVision::EToneMapperType newToneMapperType)
 Sets the current merger type.
eVision::EMergerType GetMergerType () const
 Gets the current merger type.
void SetMergerType (eVision::EMergerType newMergerType)
 Sets the current merger type.
 EHDRFusion (CppWrapperInternal::InternalConstructor)

Public Attributes

CppWrapperInternal::WrappedClass wrappedClass_

Detailed Description

Utility class containing two configurable algorithms to display HDR images on standard display monitors while conserving details and visual quality of the input image. The fusion method takes multiple color images as input and the exposure times of each image. The fusion is performed in three steps:

  1. A calibration of the camera response is applied on the input images (if the merger is of type Debevec or Robertson.
  2. The merger computes an HDR image with the input images.
  3. The tone-mapper computes an image that can be displayed on standard display monitors.

License(s): EasyImage

Constructor & Destructor Documentation

◆ EHDRFusion() [1/4]

eVision::EHDRFusion::EHDRFusion ( const eVision::EMergerParameters & mergerParams,
const eVision::EToneMapperParameters & toneMapperParams )

Creates a HDR fusion with the specified merger and tone-mapper. Every merger are compatible with every tone-mapper.

Parameters
mergerParamsParameters and type of the merger to use.
toneMapperParamsParameters and type of the tone-mapper to use.

◆ EHDRFusion() [2/4]

eVision::EHDRFusion::EHDRFusion ( )

Creates a HDR fusion with the specified merger and tone-mapper. Every merger are compatible with every tone-mapper.

◆ EHDRFusion() [3/4]

eVision::EHDRFusion::EHDRFusion ( const eVision::EHDRFusion & other)

Copy operator.

Parameters
otherAnother EHDRFusion.

◆ ~EHDRFusion()

eVision::EHDRFusion::~EHDRFusion ( )
throw ( )
virtual

◆ EHDRFusion() [4/4]

eVision::EHDRFusion::EHDRFusion ( CppWrapperInternal::InternalConstructor )

Member Function Documentation

◆ Fuse() [1/4]

void eVision::EHDRFusion::Fuse ( const std::vector< eVision::EImageBW8 > & inputs,
eVision::EImageBW8 & output )

If the merger type is not Mertens, the number of inputs image must match the number of exposure times. Otherwise, the number of exposure times must be null. The output image and all input images must have the same dimensions. When using the Debevec or Robertson algorithm, the response of the camera is computed by a preleminary calibration. This operation is expensive and if next calls are applied on the same number of images, with the same dimension and the same exposure times, it will not be computed again. Otherwise, the calibration is done again.

Parameters
inputsInput images.
outputOutput image.

◆ Fuse() [2/4]

void eVision::EHDRFusion::Fuse ( const std::vector< eVision::EImageBW8 > & inputs,
eVision::EImageBW8 & output,
const std::vector< float > & exposureTimes )

If the merger type is not Mertens, the number of inputs image must match the number of exposure times. Otherwise, the number of exposure times must be null. The output image and all input images must have the same dimensions. When using the Debevec or Robertson algorithm, the response of the camera is computed by a preleminary calibration. This operation is expensive and if next calls are applied on the same number of images, with the same dimension and the same exposure times, it will not be computed again. Otherwise, the calibration is done again.

Parameters
inputsInput images.
outputOutput image.
exposureTimesExposure times in seconds, can be empty if the merger type is Mertens.

◆ Fuse() [3/4]

void eVision::EHDRFusion::Fuse ( const std::vector< eVision::EImageC24 > & inputs,
eVision::EImageC24 & output )

If the merger type is not Mertens, the number of inputs image must match the number of exposure times. Otherwise, the number of exposure times must be null. The output image and all input images must have the same dimensions. When using the Debevec or Robertson algorithm, the response of the camera is computed by a preleminary calibration. This operation is expensive and if next calls are applied on the same number of images, with the same dimension and the same exposure times, it will not be computed again. Otherwise, the calibration is done again.

Parameters
inputsInput images.
outputOutput image.

◆ Fuse() [4/4]

void eVision::EHDRFusion::Fuse ( const std::vector< eVision::EImageC24 > & inputs,
eVision::EImageC24 & output,
const std::vector< float > & exposureTimes )

If the merger type is not Mertens, the number of inputs image must match the number of exposure times. Otherwise, the number of exposure times must be null. The output image and all input images must have the same dimensions. When using the Debevec or Robertson algorithm, the response of the camera is computed by a preleminary calibration. This operation is expensive and if next calls are applied on the same number of images, with the same dimension and the same exposure times, it will not be computed again. Otherwise, the calibration is done again.

Parameters
inputsInput images.
outputOutput image.
exposureTimesExposure times in seconds, can be empty if the merger type is Mertens.

◆ GetDragoToneMapperParameters()

eVision::EDragoToneMapperParameters eVision::EHDRFusion::GetDragoToneMapperParameters ( ) const

Gets the parameter set for the current Drago tone-mapper. Throws an exception if the current tone-mapper isn't a Drago tone-mapper.

◆ GetLinearToneMapperParameters()

eVision::ELinearToneMapperParameters eVision::EHDRFusion::GetLinearToneMapperParameters ( ) const

Gets the parameter set for the current linear tone-mapper. Throws an exception if the current tone-mapper isn't a linear tone-mapper.

◆ GetMantiukToneMapperParameters()

eVision::EMantiukToneMapperParameters eVision::EHDRFusion::GetMantiukToneMapperParameters ( ) const

Gets the parameter set for the current Mantiuk tone-mapper. Throws an exception if the current tone-mapper isn't a Mantiuk tone-mapper.

◆ GetMergerType()

eVision::EMergerType eVision::EHDRFusion::GetMergerType ( ) const

Gets the current merger type.

◆ GetMertensMergerParameters()

eVision::EMertensMergerParameters eVision::EHDRFusion::GetMertensMergerParameters ( ) const

Gets the parameter set for the current Mertens merger. Throws an exception if the current tone-mapper isn't a Mertens Merger.

◆ GetReinhardToneMapperParameters()

eVision::EReinhardToneMapperParameters eVision::EHDRFusion::GetReinhardToneMapperParameters ( ) const

Gets the parameter set for the current Reinhard tone-mapper. Throws an exception if the current tone-mapper isn't a reinhard tone-mapper.

◆ GetToneMapperType()

eVision::EToneMapperType eVision::EHDRFusion::GetToneMapperType ( ) const

Gets the current tone-mapper type.

◆ Load() [1/2]

void eVision::EHDRFusion::Load ( const std::string & path)

Loads the EHDRFusion. The given ESerializer must have been created for reading.

Parameters
pathThe file path.

◆ Load() [2/2]

void eVision::EHDRFusion::Load ( eVision::ESerializer * serializer)

Loads the EHDRFusion. The given ESerializer must have been created for reading.

Parameters
serializerThe serializer.

◆ operator=()

eVision::EHDRFusion & eVision::EHDRFusion::operator= ( const eVision::EHDRFusion & other)

Assignment operator.

Parameters
otherAnother EHDRFusion.

◆ operator==()

bool eVision::EHDRFusion::operator== ( const eVision::EHDRFusion & rhs) const

Checks if this EHDRFusion instance is strictly equal to another.

Parameters
rhsReference to the other EHDRFusion instance

◆ Save() [1/2]

void eVision::EHDRFusion::Save ( const std::string & path)

Saves the EHDRFusion. The given ESerializer must have been created for writing.

Parameters
pathThe file path.

◆ Save() [2/2]

void eVision::EHDRFusion::Save ( eVision::ESerializer * serializer)

Saves the EHDRFusion. The given ESerializer must have been created for writing.

Parameters
serializerThe serializer.

◆ SetDragoToneMapperParameters()

void eVision::EHDRFusion::SetDragoToneMapperParameters ( const eVision::EDragoToneMapperParameters & params)

Sets the parameter set for the current Drago tone-mapper. Throws an exception if the current tone-mapper isn't a Drago tone-mapper.

Parameters
paramsNew parameters for the Drago tone-mapper

◆ SetLinearToneMapperParameters()

void eVision::EHDRFusion::SetLinearToneMapperParameters ( const eVision::ELinearToneMapperParameters & params)

Sets the parameter set for the current linear tone-mapper. Throws an exception if the current tone-mapper isn't a linear tone-mapper.

Parameters
paramsNew parameters for the linear tone-mapper

◆ SetMantiukToneMapperParameters()

void eVision::EHDRFusion::SetMantiukToneMapperParameters ( const eVision::EMantiukToneMapperParameters & params)

Sets the parameter set for the current Mantiuk tone-mapper. Throws an exception if the current tone-mapper isn't a Mantiuk tone-mapper.

Parameters
paramsNew parameters for the Mantiuk tone-mapper

◆ SetMergerType()

void eVision::EHDRFusion::SetMergerType ( eVision::EMergerType newMergerType)

Sets the current merger type.

Parameters
newMergerTypeThe new merger type.

◆ SetMertensMergerParameters()

void eVision::EHDRFusion::SetMertensMergerParameters ( const eVision::EMertensMergerParameters & params)

Sets the parameter set for the current Mertens merger. Throws an exception if the current tone-mapper isn't a Mertens Merger.

Parameters
paramsNew parameters for the linear tone-mapper

◆ SetReinhardToneMapperParameters()

void eVision::EHDRFusion::SetReinhardToneMapperParameters ( const eVision::EReinhardToneMapperParameters & params)

Sets the parameter set for the current Reinhard tone-mapper. Throws an exception if the current tone-mapper isn't a reinhard tone-mapper.

Parameters
paramsNew parameters for the reinhard tone-mapper

◆ SetToneMapperType()

void eVision::EHDRFusion::SetToneMapperType ( eVision::EToneMapperType newToneMapperType)

Sets the current merger type.

Member Data Documentation

◆ wrappedClass_

CppWrapperInternal::WrappedClass eVision::EHDRFusion::wrappedClass_