You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
1.8 KiB
C++
70 lines
1.8 KiB
C++
#pragma once
|
|
|
|
#include <string>
|
|
#include <unordered_map>
|
|
#include <memory> // std::shared_ptr
|
|
#include <opencv2/opencv.hpp> // all opencv header
|
|
#include <libraw/libraw.h>
|
|
|
|
namespace hdrplus
|
|
{
|
|
class RawpyArgs {
|
|
public:
|
|
int demosaic_algorithm = 3;// 3 - AHD interpolation <->int user_qual
|
|
bool half_size = false;
|
|
bool use_camera_wb = true;
|
|
bool use_auto_wb = false;
|
|
bool no_auto_bright = true;
|
|
int output_color = LIBRAW_COLORSPACE_sRGB;
|
|
int gamma[2] = { 1,1 }; //# gamma correction not applied by rawpy (not quite understand)
|
|
int output_bps = 16;
|
|
};
|
|
|
|
class Options {
|
|
public:
|
|
std::string input = "";
|
|
std::string output = "";
|
|
std::string mode = "full"; //'full' 'align' 'merge' 'finish'
|
|
int reference = 0;
|
|
float temporalfactor = 75.0;
|
|
float spatialfactor = 0.1;
|
|
int ltmGain = -1;
|
|
double gtmContrast = 0.075;
|
|
int verbose = 2; // (0, 1, 2, 3, 4, 5)
|
|
|
|
};
|
|
|
|
class Tuning {
|
|
public:
|
|
std::string ltmGain = "auto";
|
|
double gtmContrast = 0.075;
|
|
std::vector<float> sharpenAmount{ 1,0.5,0.5 };
|
|
std::vector<float> sharpenSigma{ 1,2,4 };
|
|
std::vector<float> sharpenThreshold{ 0.02,0.04,0.06 };
|
|
};
|
|
|
|
class Parameters {
|
|
public:
|
|
std::unordered_map<std::string, bool> flags;
|
|
|
|
RawpyArgs rawpyArgs;
|
|
Options options;
|
|
Tuning tuning;
|
|
|
|
Parameters()
|
|
{
|
|
const char* keys[] = { "writeReferenceImage", "writeGammaReference", "writeMergedImage", "writeGammaMerged",
|
|
"writeShortExposure", "writeLongExposure", "writeFusedExposure", "writeLTMImage",
|
|
"writeLTMGamma", "writeGTMImage", "writeReferenceFinal", "writeFinalImage" };
|
|
for (int idx = 0; idx < sizeof(keys) / sizeof(const char*); idx++) {
|
|
flags[keys[idx]] = true;
|
|
}
|
|
}
|
|
|
|
};
|
|
|
|
cv::Mat postprocess(std::shared_ptr<LibRaw>& libraw_ptr, RawpyArgs rawpyArgs);
|
|
void setParams(std::shared_ptr<LibRaw>& libraw_ptr, RawpyArgs rawpyArgs);
|
|
|
|
} // namespace hdrplus
|