diff Framework/Toolbox/ImageToolbox.h @ 1286:ddb6676bbcbf bugs/2020-02-invisible-slice

Added Histogram functions (new files: ImageToolbox...)
author Benjamin Golinvaux <bgo@osimis.io>
date Fri, 14 Feb 2020 14:59:32 +0100
parents
children ea6c2254536d
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Framework/Toolbox/ImageToolbox.h	Fri Feb 14 14:59:32 2020 +0100
@@ -0,0 +1,78 @@
+/**
+ * Stone of Orthanc
+ * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
+ * Department, University Hospital of Liege, Belgium
+ * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+
+#pragma once
+
+#include "../StoneEnumerations.h"
+#include "LinearAlgebra.h"
+
+#include <Core/Images/ImageAccessor.h>
+
+namespace OrthancStone
+{
+
+  /**
+  This structure represents the result of an histogram computation
+
+  bins[0]   contains the values in [minValue                , minValue +   binSize [
+  bins[1]   contains the values in [minValue +       binSize, minValue + 2*binSize [
+  bins[2]   contains the values in [minValue +     2*binSize, minValue + 3*binSize [
+  ...
+  bins[N-1] contains the values in [minValue + (N-1)*binSize, minValue + N*binSize [
+
+  */
+  struct HistogramData
+  {
+    std::vector<size_t> bins;
+    double minValue;
+    double binSize;
+  };
+
+  /**
+  Dumps the supplied histogram to the supplied strings
+  */
+  void DumpHistogramResult(std::string& s, const HistogramData& hd);
+  
+  /**
+  This will compute the histogram of the supplied image (count the number of 
+  pixels).
+
+  The image must contain arithmetic pixels (that is, having a single component,
+  integer or float). Compound pixel types like RGB, YUV are not supported and
+  will cause this function to throw an exception.
+
+  The range of available values will be split in sets of size `binSize`, and 
+  each set will contain the number of pixels in the given bin 
+  (see HistogramResult above).
+  */
+  void ComputeHistogram(const Orthanc::ImageAccessor& img,
+                        HistogramData& hd, double binSize);
+
+
+  /**
+  Computes the min max values in an image
+  */
+  void ComputeMinMax(const Orthanc::ImageAccessor& img, 
+                     double& minValue, double& maxValue);
+
+}
+
+extern int OrthancStone_Internals_dump_LoadTexture_histogram;