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_RGB;Red, Green, Blue
TP_RAWEXPOS_TWOGREEN;Link greens TP_RAWEXPOS_TWOGREEN;Link greens
TP_RAW_1PASSMEDIUM;1-Pass (Medium) TP_RAW_1PASSMEDIUM;1-Pass (Medium)
TP_RAW_2PASS;2-Pass
TP_RAW_3PASSBEST;3-Pass (Best) TP_RAW_3PASSBEST;3-Pass (Best)
TP_RAW_4PASS;4-Pass TP_RAW_4PASS;4-Pass
TP_RAW_AHD;AHD TP_RAW_AHD;AHD

View File

@ -51,7 +51,11 @@ void RawImageSource::dual_demosaic_RT(bool isBayer, const RAWParams &raw, int wi
rcd_demosaic(); rcd_demosaic();
} }
} else { } else {
if (raw.xtranssensor.method == RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::FOUR_PASS) ) {
xtrans_interpolate (3, true); xtrans_interpolate (3, true);
} else {
xtrans_interpolate (1, false);
}
} }
return; return;
@ -73,7 +77,11 @@ void RawImageSource::dual_demosaic_RT(bool isBayer, const RAWParams &raw, int wi
rcd_demosaic(); rcd_demosaic();
} }
} else { } else {
if (raw.xtranssensor.method == RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::FOUR_PASS) ) {
xtrans_interpolate (3, true); xtrans_interpolate (3, true);
} else {
xtrans_interpolate (1, false);
}
fast_xtrans_interpolate(rawData, redTmp, greenTmp, blueTmp); 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 { static const std::vector<const char*> method_strings {
"4-pass", "4-pass",
"3-pass (best)", "3-pass (best)",
"2-pass",
"1-pass (medium)", "1-pass (medium)",
"fast", "fast",
"mono", "mono",

View File

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

View File

@ -2120,7 +2120,7 @@ void RawImageSource::demosaic(const RAWParams &raw, bool autoContrast, double &c
xtrans_interpolate(1, false); xtrans_interpolate(1, false);
} else if (raw.xtranssensor.method == RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::THREE_PASS) ) { } else if (raw.xtranssensor.method == RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::THREE_PASS) ) {
xtrans_interpolate(3, true); 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) { if (!autoContrast) {
double threshold = raw.xtranssensor.dualDemosaicContrast; double threshold = raw.xtranssensor.dualDemosaicContrast;
dual_demosaic_RT (false, raw, W, H, rawData, red, green, blue, threshold, false); 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); dualDemosaicContrast->setValue (pp->raw.xtranssensor.dualDemosaicContrast);
ccSteps->setValue (pp->raw.xtranssensor.ccSteps); ccSteps->setValue (pp->raw.xtranssensor.ccSteps);
if (!batchMode) { 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); methodconn.block (false);
@ -192,7 +193,7 @@ void XTransProcess::methodChanged ()
oldSelection = curSelection; oldSelection = curSelection;
if (!batchMode) { 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(); dualDemosaicOptions->show();
} else { } else {
dualDemosaicOptions->hide(); dualDemosaicOptions->hide();