Dual demosaic: added xtrans 2-pass (combination of xtrans 1-pass and xtrans fast)

This commit is contained in:
heckflosse 2018-06-24 19:32:12 +02:00
parent 7397f8494f
commit 60f94e29a7
6 changed files with 17 additions and 5 deletions

View File

@ -1763,6 +1763,7 @@ TP_RAWEXPOS_PRESER;Highlight preservation
TP_RAWEXPOS_RGB;Red, Green, Blue
TP_RAWEXPOS_TWOGREEN;Link greens
TP_RAW_1PASSMEDIUM;1-Pass (Medium)
TP_RAW_2PASS;2-Pass
TP_RAW_3PASSBEST;3-Pass (Best)
TP_RAW_4PASS;4-Pass
TP_RAW_AHD;AHD

View File

@ -51,7 +51,11 @@ void RawImageSource::dual_demosaic_RT(bool isBayer, const RAWParams &raw, int wi
rcd_demosaic();
}
} else {
xtrans_interpolate (3, true);
if (raw.xtranssensor.method == RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::FOUR_PASS) ) {
xtrans_interpolate (3, true);
} else {
xtrans_interpolate (1, false);
}
}
return;
@ -73,7 +77,11 @@ void RawImageSource::dual_demosaic_RT(bool isBayer, const RAWParams &raw, int wi
rcd_demosaic();
}
} else {
xtrans_interpolate (3, true);
if (raw.xtranssensor.method == RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::FOUR_PASS) ) {
xtrans_interpolate (3, true);
} else {
xtrans_interpolate (1, false);
}
fast_xtrans_interpolate(rawData, redTmp, greenTmp, blueTmp);
}

View File

@ -2509,6 +2509,7 @@ const std::vector<const char*>& RAWParams::XTransSensor::getMethodStrings()
static const std::vector<const char*> method_strings {
"4-pass",
"3-pass (best)",
"2-pass",
"1-pass (medium)",
"fast",
"mono",

View File

@ -1312,6 +1312,7 @@ struct RAWParams {
enum class Method {
FOUR_PASS,
THREE_PASS,
TWO_PASS,
ONE_PASS,
FAST,
MONO,

View File

@ -2120,7 +2120,7 @@ void RawImageSource::demosaic(const RAWParams &raw, bool autoContrast, double &c
xtrans_interpolate(1, false);
} else if (raw.xtranssensor.method == RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::THREE_PASS) ) {
xtrans_interpolate(3, true);
} else if (raw.xtranssensor.method == RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::FOUR_PASS)) {
} else if (raw.xtranssensor.method == RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::FOUR_PASS) || raw.xtranssensor.method == RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::TWO_PASS)) {
if (!autoContrast) {
double threshold = raw.xtranssensor.dualDemosaicContrast;
dual_demosaic_RT (false, raw, W, H, rawData, red, green, blue, threshold, false);

View File

@ -118,7 +118,8 @@ void XTransProcess::read(const rtengine::procparams::ProcParams* pp, const Param
dualDemosaicContrast->setValue (pp->raw.xtranssensor.dualDemosaicContrast);
ccSteps->setValue (pp->raw.xtranssensor.ccSteps);
if (!batchMode) {
dualDemosaicOptions->set_visible(pp->raw.xtranssensor.method == procparams::RAWParams::XTransSensor::getMethodString(procparams::RAWParams::XTransSensor::Method::FOUR_PASS));
dualDemosaicOptions->set_visible(pp->raw.xtranssensor.method == procparams::RAWParams::XTransSensor::getMethodString(procparams::RAWParams::XTransSensor::Method::FOUR_PASS)
|| pp->raw.xtranssensor.method == procparams::RAWParams::XTransSensor::getMethodString(procparams::RAWParams::XTransSensor::Method::TWO_PASS));
}
methodconn.block (false);
@ -192,7 +193,7 @@ void XTransProcess::methodChanged ()
oldSelection = curSelection;
if (!batchMode) {
if (currentMethod == procparams::RAWParams::XTransSensor::Method::FOUR_PASS) {
if (currentMethod == procparams::RAWParams::XTransSensor::Method::FOUR_PASS || currentMethod == procparams::RAWParams::XTransSensor::Method::TWO_PASS) {
dualDemosaicOptions->show();
} else {
dualDemosaicOptions->hide();