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