# Changing the HDR Fusion Algorithm or its Parameters

Changing the HDR Fusion Algorithm or its Parameters.

## C++

```cpp
#include <eVision/EasyImage/EHDRFusion.h>
```

```cpp
using namespace eVision;

std::vector<EImageC24> images;
images.resize(7);
images[0].Load(R"(Sample Images\EasyImage\HDR\sheep12.jpg)");
images[1].Load(R"(Sample Images\EasyImage\HDR\sheep25.jpg)");
images[2].Load(R"(Sample Images\EasyImage\HDR\sheep50.jpg)");
images[3].Load(R"(Sample Images\EasyImage\HDR\sheep125.jpg)");
images[4].Load(R"(Sample Images\EasyImage\HDR\sheep250.jpg)");
images[5].Load(R"(Sample Images\EasyImage\HDR\sheep500.jpg)");
images[6].Load(R"(Sample Images\EasyImage\HDR\sheep1000.jpg)");

std::vector<float> times = {
  12.0f * 0.001f, 25.0f * 0.001f, 50.0f * 0.001f, 125.0f * 0.001f, 250.0f * 0.001f, 500.0f * 0.001f, 1000.0f * 0.001f,
};

EImageC24 result;
result.SetSize(&images.back());

EDebevecMergerParameters mergerParams;          // can also be ERobertsonMergerParameters or EMertensMergerParameters
EReinhardToneMapperParameters toneMapperParams; // can also be EDragoToneMapperParameters
                                                // or ELinearToneMapperParameters
                                                // EMantiukToneMapperParameters
toneMapperParams.SetGamma(1.5f);                // the parameters can be set

EHDRFusion fusion;
fusion.SetMergerType(EMergerType_Debevec);
fusion.SetToneMapperType(EToneMapperType_Reinhard);
fusion.SetReinhardToneMapperParameters(toneMapperParams);
fusion.Fuse(images, result, times);
```

## C#

```cs
using eVision;
```

```cs
EImageC24[] images = new EImageC24[7] { new EImageC24(), new EImageC24(), new EImageC24(), new EImageC24(), new EImageC24(), new EImageC24(), new EImageC24() };
images[0].Load(@"Sample Images\EasyImage\HDR\sheep12.jpg");
images[1].Load(@"Sample Images\EasyImage\HDR\sheep25.jpg");
images[2].Load(@"Sample Images\EasyImage\HDR\sheep50.jpg");
images[3].Load(@"Sample Images\EasyImage\HDR\sheep125.jpg");
images[4].Load(@"Sample Images\EasyImage\HDR\sheep250.jpg");
images[5].Load(@"Sample Images\EasyImage\HDR\sheep500.jpg");
images[6].Load(@"Sample Images\EasyImage\HDR\sheep1000.jpg");

float[] times = new float[7]{12.0f * 0.001f,
  25.0f * 0.001f,
  50.0f * 0.001f,
  125.0f * 0.001f,
  250.0f * 0.001f,
  500.0f * 0.001f,
  1000.0f * 0.001f,
};

EImageC24 result = new EImageC24();
result.SetSize(images[0]);

EDebevecMergerParameters mergerParams = new EDebevecMergerParameters(); // can also be ERobertsonMergerParameters or EMertensMergerParameters
EReinhardToneMapperParameters toneMapperParams = new EReinhardToneMapperParameters(); // can also be EDragoToneMapperParameters
                                                                                      // or ELinearToneMapperParameters
                                                                                      // EMantiukToneMapperParameters
toneMapperParams.Gamma = 1.5f; // the parameters can be set

EHDRFusion fusion = new EHDRFusion();
fusion.MergerType = EMergerType.Debevec;
fusion.ToneMapperType = EToneMapperType.Reinhard;
fusion.ReinhardToneMapperParameters = toneMapperParams;
fusion.Fuse(images, result, times);
```

## Python

```py
import eVision

images = [ eVision.EImageC24(), eVision.EImageC24(), eVision.EImageC24(), eVision.EImageC24(), eVision.EImageC24(), eVision.EImageC24(), eVision.EImageC24() ]
images[0].Load("Sample Images/EasyImage/HDR/sheep12.jpg")
images[1].Load("Sample Images/EasyImage/HDR/sheep25.jpg")
images[2].Load("Sample Images/EasyImage/HDR/sheep50.jpg")
images[3].Load("Sample Images/EasyImage/HDR/sheep125.jpg")
images[4].Load("Sample Images/EasyImage/HDR/sheep250.jpg")
images[5].Load("Sample Images/EasyImage/HDR/sheep500.jpg")
images[6].Load("Sample Images/EasyImage/HDR/sheep1000.jpg")

times = [ 12.0 * 0.001,
          25.0 * 0.001,
          50.0 * 0.001,
          125.0 * 0.001,
          250.0 * 0.001,
          500.0 * 0.001,
          1000.0 * 0.001,
          ]

result = eVision.EImageC24()
result.SetSize(images[0])

mergerParams = eVision.EDebevecMergerParameters() # can also be ERobertsonMergerParameters or EMertensMergerParameters
toneMapperParams = eVision.EReinhardToneMapperParameters() # can also be EDragoToneMapperParameters
# or ELinearToneMapperParameters
# EMantiukToneMapperParameters
toneMapperParams.Gamma = 1.5 # the parameters can be set

fusion = eVision.EHDRFusion()
fusion.MergerType = eVision.EMergerType.Debevec
fusion.ToneMapperType = eVision.EToneMapperType.Reinhard
fusion.ReinhardToneMapperParameters = toneMapperParams
fusion.Fuse(images, result, times)
```
