Performing a HDR Fusion Using Specific Algorithms¶
Performing a HDR Fusion Using Specific Algorithms.
C++¶
#include <eVision/EasyImage/EHDRFusion.h>
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 or EMantiukToneMapperParameters
toneMapperParams.SetGamma(1.5f); // the parameters can be set
EHDRFusion fusion(mergerParams, toneMapperParams);
fusion.Fuse(images, result, times);
C#¶
using eVision;
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(mergerParams, toneMapperParams);
fusion.Fuse(images, result, times);
Python¶
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(mergerParams, toneMapperParams)
fusion.Fuse(images, result, times)