From 3f20e360293a5791d890ee874a39959d74b4a4df Mon Sep 17 00:00:00 2001 From: remi <remi.cresson@irstea.fr> Date: Mon, 30 Sep 2019 16:24:06 +0200 Subject: [PATCH] ENH: add option to enable zero-y intercept --- app/otbHarmonizer.cxx | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/app/otbHarmonizer.cxx b/app/otbHarmonizer.cxx index 1bb1d3a..a8b3390 100644 --- a/app/otbHarmonizer.cxx +++ b/app/otbHarmonizer.cxx @@ -296,9 +296,9 @@ private: AddParameter(ParameterType_Int, "smoothingradius", "Smoothing radius (in pixels of the reference image)"); SetDefaultParameterInt ("smoothingradius", 10); - AddParameter(ParameterType_Choice, "useoffset", "Zero-y intercept mode in linear transform"); - AddChoice("useoffset.on", "Yes (y=ax+b)"); - AddChoice("useoffset.off", "No (y=ax)"); + AddParameter(ParameterType_Choice, "zeroy", "Zero-y intercept mode in linear transform"); + AddChoice("zeroy.on", "Yes (y=ax)"); + AddChoice("zeroy.off", "No (y=ax+b)"); AddRAMParameter(); @@ -411,7 +411,8 @@ private: std::stringstream exp; exp << "{"; - if (GetParameterInt("useoffset") == 0) + bool zeroy = (GetParameterInt("zeroy") == 0); + if (zeroy) { otbAppLogINFO("Using zero-y intercept (y=ax)"); } @@ -428,15 +429,15 @@ private: float mean2X = meanX * meanX; float b0, b1; - if (GetParameterInt("useoffset") == 1) + if (zeroy) { - b1 = (meanX * meanY - meanXY) / (mean2X - meanX2); - b0 = meanY - b1 * meanX; + b1 = meanXY / meanX2; + b0 = 0; } else { - b1 = meanXY / meanX2; - b0 = 0; + b1 = (meanX * meanY - meanXY) / (mean2X - meanX2); + b0 = meanY - b1 * meanX; } otbAppLogINFO("Band " << band << " gain: " << b1 << " bias: " << b0); -- GitLab