Browse Source

Update of documentation using autosummary extension

Jérôme BUISINE 2 years ago
parent
commit
2436c0aa53
59 changed files with 5976 additions and 1326 deletions
  1. BIN
      docs/build/doctrees/environment.pickle
  2. BIN
      docs/build/doctrees/index.doctree
  3. BIN
      docs/build/doctrees/ipfml.doctree
  4. BIN
      docs/build/doctrees/ipfml/ipfml.exceptions.doctree
  5. BIN
      docs/build/doctrees/ipfml/ipfml.filters.noise.doctree
  6. BIN
      docs/build/doctrees/ipfml/ipfml.iqa.fr.doctree
  7. BIN
      docs/build/doctrees/ipfml/ipfml.metrics.doctree
  8. BIN
      docs/build/doctrees/ipfml/ipfml.processing.doctree
  9. BIN
      docs/build/doctrees/ipfml/ipfml.utils.doctree
  10. 1 1
      docs/build/html/.buildinfo
  11. 207 0
      docs/build/html/_modules/index.html
  12. 229 0
      docs/build/html/_modules/ipfml/exceptions.html
  13. 572 0
      docs/build/html/_modules/ipfml/filters/noise.html
  14. 347 0
      docs/build/html/_modules/ipfml/iqa/fr.html
  15. 604 0
      docs/build/html/_modules/ipfml/metrics.html
  16. 495 0
      docs/build/html/_modules/ipfml/processing.html
  17. 299 0
      docs/build/html/_modules/ipfml/utils.html
  18. 1 1
      docs/build/html/_sources/index.rst.txt
  19. 18 46
      docs/build/html/_sources/ipfml.rst.txt
  20. 23 0
      docs/build/html/_sources/ipfml/ipfml.exceptions.rst.txt
  21. 28 0
      docs/build/html/_sources/ipfml/ipfml.filters.noise.rst.txt
  22. 27 0
      docs/build/html/_sources/ipfml/ipfml.iqa.fr.rst.txt
  23. 36 0
      docs/build/html/_sources/ipfml/ipfml.metrics.rst.txt
  24. 30 0
      docs/build/html/_sources/ipfml/ipfml.processing.rst.txt
  25. 24 0
      docs/build/html/_sources/ipfml/ipfml.utils.rst.txt
  26. 1 1
      docs/build/html/_static/documentation_options.js
  27. 2 2
      docs/build/html/contributing.html
  28. 2 2
      docs/build/html/description.html
  29. 4 4
      docs/build/html/examples.html
  30. 50 50
      docs/build/html/genindex.html
  31. 14 8
      docs/build/html/index.html
  32. 37 1141
      docs/build/html/ipfml.html
  33. 258 0
      docs/build/html/ipfml/ipfml.exceptions.html
  34. 495 0
      docs/build/html/ipfml/ipfml.filters.noise.html
  35. 406 0
      docs/build/html/ipfml/ipfml.iqa.fr.html
  36. 681 0
      docs/build/html/ipfml/ipfml.metrics.html
  37. 532 0
      docs/build/html/ipfml/ipfml.processing.html
  38. 325 0
      docs/build/html/ipfml/ipfml.utils.html
  39. BIN
      docs/build/html/objects.inv
  40. 8 8
      docs/build/html/py-modindex.html
  41. 2 2
      docs/build/html/search.html
  42. 1 1
      docs/build/html/searchindex.js
  43. 8 3
      docs/source/conf.py
  44. 1 1
      docs/source/index.rst
  45. 18 46
      docs/source/ipfml.rst
  46. 23 0
      docs/source/ipfml/ipfml.exceptions.rst
  47. 28 0
      docs/source/ipfml/ipfml.filters.noise.rst
  48. 27 0
      docs/source/ipfml/ipfml.iqa.fr.rst
  49. 36 0
      docs/source/ipfml/ipfml.metrics.rst
  50. 30 0
      docs/source/ipfml/ipfml.processing.rst
  51. 24 0
      docs/source/ipfml/ipfml.utils.rst
  52. 1 1
      ipfml/exceptions.py
  53. 4 1
      ipfml/filters/noise.py
  54. 3 0
      ipfml/iqa/__init__.py
  55. 4 3
      ipfml/iqa/fr.py
  56. 3 1
      ipfml/metrics.py
  57. 4 0
      ipfml/processing.py
  58. 2 2
      ipfml/utils.py
  59. 1 1
      setup.py

BIN
docs/build/doctrees/environment.pickle


BIN
docs/build/doctrees/index.doctree


BIN
docs/build/doctrees/ipfml.doctree


BIN
docs/build/doctrees/ipfml/ipfml.exceptions.doctree


BIN
docs/build/doctrees/ipfml/ipfml.filters.noise.doctree


BIN
docs/build/doctrees/ipfml/ipfml.iqa.fr.doctree


BIN
docs/build/doctrees/ipfml/ipfml.metrics.doctree


BIN
docs/build/doctrees/ipfml/ipfml.processing.doctree


BIN
docs/build/doctrees/ipfml/ipfml.utils.doctree


+ 1 - 1
docs/build/html/.buildinfo

@@ -1,4 +1,4 @@
 # Sphinx build info version 1
 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
-config: b880d941bb6bde0971be7f6f4ef05ce2
+config: 7fad5c3bce03c8da11b5d19ca87e04af
 tags: 645f666f9bcd5a90fca523b33c5a78b7

+ 207 - 0
docs/build/html/_modules/index.html

@@ -0,0 +1,207 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>Overview: module code &mdash; IPFML v0.2.8 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+
+  
+  
+    
+
+  
+
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" /> 
+
+  
+  <script src="../_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav">
+
+   
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search">
+          
+
+          
+            <a href="../index.html" class="icon icon-home"> IPFML
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                0.2.8
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <p class="caption"><span class="caption-text">Contents:</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../description.html">Description</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../ipfml.html">Documentation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../examples.html">Examples</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contributing.html">Contributing</a></li>
+</ul>
+
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">IPFML</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+      <li>Overview: module code</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <h1>All modules for which code is available</h1>
+<ul><li><a href="ipfml/exceptions.html">ipfml.exceptions</a></li>
+<li><a href="ipfml/filters/noise.html">ipfml.filters.noise</a></li>
+<li><a href="ipfml/iqa/fr.html">ipfml.iqa.fr</a></li>
+<li><a href="ipfml/metrics.html">ipfml.metrics</a></li>
+<li><a href="ipfml/processing.html">ipfml.processing</a></li>
+<li><a href="ipfml/utils.html">ipfml.utils</a></li>
+</ul>
+
+           </div>
+           
+          </div>
+          <footer>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2019, Jérôme BUISINE
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  
+
+    
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+
+  
+
+  <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script> 
+
+</body>
+</html>

+ 229 - 0
docs/build/html/_modules/ipfml/exceptions.html

@@ -0,0 +1,229 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>ipfml.exceptions &mdash; IPFML v0.2.8 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+
+  
+  
+    
+
+  
+
+  <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../../genindex.html" />
+    <link rel="search" title="Search" href="../../search.html" /> 
+
+  
+  <script src="../../_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav">
+
+   
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search">
+          
+
+          
+            <a href="../../index.html" class="icon icon-home"> IPFML
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                0.2.8
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <p class="caption"><span class="caption-text">Contents:</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../description.html">Description</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../ipfml.html">Documentation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../examples.html">Examples</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contributing.html">Contributing</a></li>
+</ul>
+
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../../index.html">IPFML</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../index.html">Module code</a> &raquo;</li>
+        
+      <li>ipfml.exceptions</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <h1>Source code for ipfml.exceptions</h1><div class="highlight"><pre>
+<span></span><span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">Module which contains all customs Exceptions used into ipfml package</span>
+<span class="sd">&quot;&quot;&quot;</span>
+
+
+<div class="viewcode-block" id="NumpyDimensionComparisonException"><a class="viewcode-back" href="../../ipfml/ipfml.exceptions.html#ipfml.exceptions.NumpyDimensionComparisonException">[docs]</a><span class="k">class</span> <span class="nc">NumpyDimensionComparisonException</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">    Numpy dimensions comparison Exception raised if two numpy arrays provided do not have same dimensions</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="ne">Exception</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span>
+            <span class="bp">self</span><span class="p">,</span>
+            <span class="s2">&quot;Numpy arrays provided for comparisons do not have same dimensions&quot;</span>
+        <span class="p">)</span></div>
+
+
+<div class="viewcode-block" id="NumpyShapeComparisonException"><a class="viewcode-back" href="../../ipfml/ipfml.exceptions.html#ipfml.exceptions.NumpyShapeComparisonException">[docs]</a><span class="k">class</span> <span class="nc">NumpyShapeComparisonException</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">    Numpy shape comparison Exception raised if two numpy arrays provided do not have same shape extactly</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="ne">Exception</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span>
+            <span class="bp">self</span><span class="p">,</span>
+            <span class="s2">&quot;Numpy arrays provided for comparisons do not have same shape&quot;</span><span class="p">)</span></div>
+</pre></div>
+
+           </div>
+           
+          </div>
+          <footer>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2019, Jérôme BUISINE
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  
+
+    
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../../_static/jquery.js"></script>
+        <script type="text/javascript" src="../../_static/underscore.js"></script>
+        <script type="text/javascript" src="../../_static/doctools.js"></script>
+        <script type="text/javascript" src="../../_static/language_data.js"></script>
+    
+
+  
+
+  <script type="text/javascript" src="../../_static/js/theme.js"></script>
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script> 
+
+</body>
+</html>

File diff suppressed because it is too large
+ 572 - 0
docs/build/html/_modules/ipfml/filters/noise.html


File diff suppressed because it is too large
+ 347 - 0
docs/build/html/_modules/ipfml/iqa/fr.html


File diff suppressed because it is too large
+ 604 - 0
docs/build/html/_modules/ipfml/metrics.html


+ 495 - 0
docs/build/html/_modules/ipfml/processing.html

@@ -0,0 +1,495 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>ipfml.processing &mdash; IPFML v0.2.8 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+
+  
+  
+    
+
+  
+
+  <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../../genindex.html" />
+    <link rel="search" title="Search" href="../../search.html" /> 
+
+  
+  <script src="../../_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav">
+
+   
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search">
+          
+
+          
+            <a href="../../index.html" class="icon icon-home"> IPFML
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                0.2.8
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <p class="caption"><span class="caption-text">Contents:</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../description.html">Description</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../ipfml.html">Documentation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../examples.html">Examples</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contributing.html">Contributing</a></li>
+</ul>
+
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../../index.html">IPFML</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../index.html">Module code</a> &raquo;</li>
+        
+      <li>ipfml.processing</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <h1>Source code for ipfml.processing</h1><div class="highlight"><pre>
+<span></span><span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">Functions to quickly extract reduced information from image</span>
+<span class="sd">&quot;&quot;&quot;</span>
+
+<span class="kn">from</span> <span class="nn">PIL</span> <span class="k">import</span> <span class="n">Image</span>
+<span class="kn">from</span> <span class="nn">matplotlib</span> <span class="k">import</span> <span class="n">cm</span>
+<span class="kn">import</span> <span class="nn">random</span>
+
+<span class="kn">from</span> <span class="nn">skimage</span> <span class="k">import</span> <span class="n">color</span>
+<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
+<span class="kn">import</span> <span class="nn">ipfml.metrics</span> <span class="k">as</span> <span class="nn">metrics</span>
+<span class="kn">import</span> <span class="nn">cv2</span>
+
+<span class="kn">from</span> <span class="nn">scipy</span> <span class="k">import</span> <span class="n">signal</span>
+
+
+<div class="viewcode-block" id="get_LAB_L_SVD"><a class="viewcode-back" href="../../ipfml/ipfml.processing.html#ipfml.processing.get_LAB_L_SVD">[docs]</a><span class="k">def</span> <span class="nf">get_LAB_L_SVD</span><span class="p">(</span><span class="n">image</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Returns Singular values from LAB L Image information</span>
+
+<span class="sd">    Args:</span>
+<span class="sd">        image: PIL Image or Numpy array</span>
+
+<span class="sd">    Returns:</span>
+<span class="sd">        U, s, V information obtained from SVD compression using Lab</span>
+
+<span class="sd">    Example:</span>
+
+<span class="sd">    &gt;&gt;&gt; from PIL import Image</span>
+<span class="sd">    &gt;&gt;&gt; from ipfml import processing</span>
+<span class="sd">    &gt;&gt;&gt; img = Image.open(&#39;./images/test_img.png&#39;)</span>
+<span class="sd">    &gt;&gt;&gt; U, s, V = processing.get_LAB_L_SVD(img)</span>
+<span class="sd">    &gt;&gt;&gt; U.shape</span>
+<span class="sd">    (200, 200)</span>
+<span class="sd">    &gt;&gt;&gt; len(s)</span>
+<span class="sd">    200</span>
+<span class="sd">    &gt;&gt;&gt; V.shape</span>
+<span class="sd">    (200, 200)</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+    <span class="n">L</span> <span class="o">=</span> <span class="n">metrics</span><span class="o">.</span><span class="n">get_LAB_L</span><span class="p">(</span><span class="n">image</span><span class="p">)</span>
+    <span class="k">return</span> <span class="n">metrics</span><span class="o">.</span><span class="n">get_SVD</span><span class="p">(</span><span class="n">L</span><span class="p">)</span></div>
+
+
+<div class="viewcode-block" id="get_LAB_L_SVD_s"><a class="viewcode-back" href="../../ipfml/ipfml.processing.html#ipfml.processing.get_LAB_L_SVD_s">[docs]</a><span class="k">def</span> <span class="nf">get_LAB_L_SVD_s</span><span class="p">(</span><span class="n">image</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Returns s (Singular values) SVD from L of LAB Image information</span>
+
+<span class="sd">    Args:</span>
+<span class="sd">        image: PIL Image or Numpy array</span>
+
+<span class="sd">    Returns:</span>
+<span class="sd">        vector of singular values</span>
+
+<span class="sd">    Example:</span>
+
+<span class="sd">    &gt;&gt;&gt; from PIL import Image</span>
+<span class="sd">    &gt;&gt;&gt; from ipfml import processing</span>
+<span class="sd">    &gt;&gt;&gt; img = Image.open(&#39;./images/test_img.png&#39;)</span>
+<span class="sd">    &gt;&gt;&gt; s = processing.get_LAB_L_SVD_s(img)</span>
+<span class="sd">    &gt;&gt;&gt; len(s)</span>
+<span class="sd">    200</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+    <span class="n">L</span> <span class="o">=</span> <span class="n">metrics</span><span class="o">.</span><span class="n">get_LAB_L</span><span class="p">(</span><span class="n">image</span><span class="p">)</span>
+    <span class="k">return</span> <span class="n">metrics</span><span class="o">.</span><span class="n">get_SVD_s</span><span class="p">(</span><span class="n">L</span><span class="p">)</span></div>
+
+
+<div class="viewcode-block" id="get_LAB_L_SVD_U"><a class="viewcode-back" href="../../ipfml/ipfml.processing.html#ipfml.processing.get_LAB_L_SVD_U">[docs]</a><span class="k">def</span> <span class="nf">get_LAB_L_SVD_U</span><span class="p">(</span><span class="n">image</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Returns U SVD from L of LAB Image information</span>
+
+<span class="sd">    Args:</span>
+<span class="sd">        image: PIL Image or Numpy array</span>
+
+<span class="sd">    Returns:</span>
+<span class="sd">        U matrix of SVD compression</span>
+
+<span class="sd">    Example:</span>
+
+<span class="sd">    &gt;&gt;&gt; from PIL import Image</span>
+<span class="sd">    &gt;&gt;&gt; from ipfml import processing</span>
+<span class="sd">    &gt;&gt;&gt; img = Image.open(&#39;./images/test_img.png&#39;)</span>
+<span class="sd">    &gt;&gt;&gt; U = processing.get_LAB_L_SVD_U(img)</span>
+<span class="sd">    &gt;&gt;&gt; U.shape</span>
+<span class="sd">    (200, 200)</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+    <span class="n">L</span> <span class="o">=</span> <span class="n">metrics</span><span class="o">.</span><span class="n">get_LAB_L</span><span class="p">(</span><span class="n">image</span><span class="p">)</span>
+    <span class="k">return</span> <span class="n">metrics</span><span class="o">.</span><span class="n">get_SVD_U</span><span class="p">(</span><span class="n">L</span><span class="p">)</span></div>
+
+
+<div class="viewcode-block" id="get_LAB_L_SVD_V"><a class="viewcode-back" href="../../ipfml/ipfml.processing.html#ipfml.processing.get_LAB_L_SVD_V">[docs]</a><span class="k">def</span> <span class="nf">get_LAB_L_SVD_V</span><span class="p">(</span><span class="n">image</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Returns V SVD from L of LAB Image information</span>
+
+<span class="sd">    Args:</span>
+<span class="sd">        image: PIL Image or Numpy array</span>
+
+<span class="sd">    Returns:</span>
+<span class="sd">        V matrix of SVD compression</span>
+
+<span class="sd">    Example:</span>
+
+<span class="sd">    &gt;&gt;&gt; from PIL import Image</span>
+<span class="sd">    &gt;&gt;&gt; from ipfml import processing</span>
+<span class="sd">    &gt;&gt;&gt; img = Image.open(&#39;./images/test_img.png&#39;)</span>
+<span class="sd">    &gt;&gt;&gt; V = processing.get_LAB_L_SVD_V(img)</span>
+<span class="sd">    &gt;&gt;&gt; V.shape</span>
+<span class="sd">    (200, 200)</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+
+    <span class="n">L</span> <span class="o">=</span> <span class="n">metrics</span><span class="o">.</span><span class="n">get_LAB_L</span><span class="p">(</span><span class="n">image</span><span class="p">)</span>
+    <span class="k">return</span> <span class="n">metrics</span><span class="o">.</span><span class="n">get_SVD_V</span><span class="p">(</span><span class="n">L</span><span class="p">)</span></div>
+
+
+<div class="viewcode-block" id="divide_in_blocks"><a class="viewcode-back" href="../../ipfml/ipfml.processing.html#ipfml.processing.divide_in_blocks">[docs]</a><span class="k">def</span> <span class="nf">divide_in_blocks</span><span class="p">(</span><span class="n">image</span><span class="p">,</span> <span class="n">block_size</span><span class="p">,</span> <span class="n">pil</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+    <span class="sd">&#39;&#39;&#39;Divide image into equal size blocks</span>
+
+<span class="sd">    Args:</span>
+<span class="sd">        image: PIL Image or Numpy array</span>
+<span class="sd">        block: tuple (width, height) representing the size of each dimension of the block</span>
+<span class="sd">        pil: block type returned (default True)</span>
+
+<span class="sd">    Returns:</span>
+<span class="sd">        list containing all 2D Numpy blocks (in RGB or not)</span>
+
+<span class="sd">    Raises:</span>
+<span class="sd">        ValueError: If `image_width` or `image_heigt` are not compatible to produce correct block sizes</span>
+
+<span class="sd">    Example:</span>
+
+<span class="sd">    &gt;&gt;&gt; import numpy as np</span>
+<span class="sd">    &gt;&gt;&gt; from PIL import Image</span>
+<span class="sd">    &gt;&gt;&gt; from ipfml import processing</span>
+<span class="sd">    &gt;&gt;&gt; from ipfml import metrics</span>
+<span class="sd">    &gt;&gt;&gt; image_values = np.random.randint(255, size=(800, 800, 3))</span>
+<span class="sd">    &gt;&gt;&gt; blocks = divide_in_blocks(image_values, (20, 20))</span>
+<span class="sd">    &gt;&gt;&gt; len(blocks)</span>
+<span class="sd">    1600</span>
+<span class="sd">    &gt;&gt;&gt; blocks[0].width</span>
+<span class="sd">    20</span>
+<span class="sd">    &gt;&gt;&gt; blocks[0].height</span>
+<span class="sd">    20</span>
+<span class="sd">    &gt;&gt;&gt; img_l = Image.open(&#39;./images/test_img.png&#39;)</span>
+<span class="sd">    &gt;&gt;&gt; L = metrics.get_LAB_L(img_l)</span>
+<span class="sd">    &gt;&gt;&gt; blocks_L = divide_in_blocks(L, (100, 100))</span>
+<span class="sd">    &gt;&gt;&gt; len(blocks_L)</span>
+<span class="sd">    4</span>
+<span class="sd">    &gt;&gt;&gt; blocks_L[0].width</span>
+<span class="sd">    100</span>
+<span class="sd">    &#39;&#39;&#39;</span>
+
+    <span class="n">blocks</span> <span class="o">=</span> <span class="p">[]</span>
+    <span class="n">mode</span> <span class="o">=</span> <span class="s1">&#39;RGB&#39;</span>
+
+    <span class="c1"># convert in Numpy array</span>
+    <span class="n">image_array</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">image</span><span class="p">)</span>
+
+    <span class="c1"># check dimension of input image</span>
+    <span class="k">if</span> <span class="n">image_array</span><span class="o">.</span><span class="n">ndim</span> <span class="o">!=</span> <span class="mi">3</span><span class="p">:</span>
+        <span class="n">mode</span> <span class="o">=</span> <span class="s1">&#39;L&#39;</span>
+        <span class="n">image_width</span><span class="p">,</span> <span class="n">image_height</span> <span class="o">=</span> <span class="n">image_array</span><span class="o">.</span><span class="n">shape</span>
+    <span class="k">else</span><span class="p">:</span>
+        <span class="n">image_width</span><span class="p">,</span> <span class="n">image_height</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">image_array</span><span class="o">.</span><span class="n">shape</span>
+
+    <span class="c1"># check size compatibility</span>
+    <span class="n">width</span><span class="p">,</span> <span class="n">height</span> <span class="o">=</span> <span class="n">block_size</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">image_width</span> <span class="o">%</span> <span class="n">width</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">):</span>
+        <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Width size issue, block size not compatible&quot;</span><span class="p">)</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">image_height</span> <span class="o">%</span> <span class="n">height</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">):</span>
+        <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Height size issue, block size not compatible&quot;</span><span class="p">)</span>
+
+    <span class="n">nb_block_width</span> <span class="o">=</span> <span class="n">image_width</span> <span class="o">/</span> <span class="n">width</span>
+    <span class="n">nb_block_height</span> <span class="o">=</span> <span class="n">image_height</span> <span class="o">/</span> <span class="n">height</span>
+
+    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">nb_block_width</span><span class="p">)):</span>
+
+        <span class="n">begin_x</span> <span class="o">=</span> <span class="n">i</span> <span class="o">*</span> <span class="n">width</span>
+
+        <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">nb_block_height</span><span class="p">)):</span>
+
+            <span class="n">begin_y</span> <span class="o">=</span> <span class="n">j</span> <span class="o">*</span> <span class="n">height</span>
+
+            <span class="c1"># getting sub block information</span>
+            <span class="n">current_block</span> <span class="o">=</span> <span class="n">image_array</span><span class="p">[</span><span class="n">begin_x</span><span class="p">:(</span><span class="n">begin_x</span> <span class="o">+</span> <span class="n">width</span><span class="p">),</span> <span class="n">begin_y</span><span class="p">:(</span>
+                <span class="n">begin_y</span> <span class="o">+</span> <span class="n">height</span><span class="p">)]</span>
+
+            <span class="k">if</span> <span class="n">pil</span><span class="p">:</span>
+                <span class="n">blocks</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
+                    <span class="n">Image</span><span class="o">.</span><span class="n">fromarray</span><span class="p">(</span><span class="n">current_block</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="s1">&#39;uint8&#39;</span><span class="p">),</span> <span class="n">mode</span><span class="p">))</span>
+            <span class="k">else</span><span class="p">:</span>
+                <span class="n">blocks</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">current_block</span><span class="p">)</span>
+
+    <span class="k">return</span> <span class="n">blocks</span></div>
+
+
+<div class="viewcode-block" id="rgb_to_mscn"><a class="viewcode-back" href="../../ipfml/ipfml.processing.html#ipfml.processing.rgb_to_mscn">[docs]</a><span class="k">def</span> <span class="nf">rgb_to_mscn</span><span class="p">(</span><span class="n">image</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Convert RGB Image into Mean Subtracted Contrast Normalized (MSCN)</span>
+
+<span class="sd">    Args:</span>
+<span class="sd">        image: 3D RGB image Numpy array or PIL RGB image</span>
+
+<span class="sd">    Returns:</span>
+<span class="sd">        2D Numpy array with MSCN information</span>
+
+<span class="sd">    Example:</span>
+
+<span class="sd">    &gt;&gt;&gt; from PIL import Image</span>
+<span class="sd">    &gt;&gt;&gt; from ipfml import processing</span>
+<span class="sd">    &gt;&gt;&gt; img = Image.open(&#39;./images/test_img.png&#39;)</span>
+<span class="sd">    &gt;&gt;&gt; img_mscn = processing.rgb_to_mscn(img)</span>
+<span class="sd">    &gt;&gt;&gt; img_mscn.shape</span>
+<span class="sd">    (200, 200)</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+
+    <span class="c1"># check if PIL image or not</span>
+    <span class="n">img_arr</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">image</span><span class="p">)</span>
+
+    <span class="c1"># convert rgb image to gray</span>
+    <span class="n">im</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">color</span><span class="o">.</span><span class="n">rgb2gray</span><span class="p">(</span><span class="n">img_arr</span><span class="p">)</span> <span class="o">*</span> <span class="mi">255</span><span class="p">,</span> <span class="s1">&#39;uint8&#39;</span><span class="p">)</span>
+
+    <span class="k">return</span> <span class="n">metrics</span><span class="o">.</span><span class="n">gray_to_mscn</span><span class="p">(</span><span class="n">im</span><span class="p">)</span></div>
+
+
+<div class="viewcode-block" id="rgb_to_grey_low_bits"><a class="viewcode-back" href="../../ipfml/ipfml.processing.html#ipfml.processing.rgb_to_grey_low_bits">[docs]</a><span class="k">def</span> <span class="nf">rgb_to_grey_low_bits</span><span class="p">(</span><span class="n">image</span><span class="p">,</span> <span class="n">nb_bits</span><span class="o">=</span><span class="mi">4</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Convert RGB Image into grey image using only 4 low bits values</span>
+
+<span class="sd">    Args:</span>
+<span class="sd">        image: 3D RGB image Numpy array or PIL RGB image</span>
+<span class="sd">        nb_bits: optional parameter which indicates the number of bits to keep (default 4)</span>
+
+<span class="sd">    Returns:</span>
+<span class="sd">        2D Numpy array with low bits information kept</span>
+
+<span class="sd">    Example:</span>
+
+<span class="sd">    &gt;&gt;&gt; from PIL import Image</span>
+<span class="sd">    &gt;&gt;&gt; from ipfml import processing</span>
+<span class="sd">    &gt;&gt;&gt; img = Image.open(&#39;./images/test_img.png&#39;)</span>
+<span class="sd">    &gt;&gt;&gt; low_bits_grey_img = processing.rgb_to_grey_low_bits(img, 5)</span>
+<span class="sd">    &gt;&gt;&gt; low_bits_grey_img.shape</span>
+<span class="sd">    (200, 200)</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+
+    <span class="n">img_arr</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">image</span><span class="p">)</span>
+    <span class="n">grey_block</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">color</span><span class="o">.</span><span class="n">rgb2gray</span><span class="p">(</span><span class="n">img_arr</span><span class="p">)</span> <span class="o">*</span> <span class="mi">255</span><span class="p">,</span> <span class="s1">&#39;uint8&#39;</span><span class="p">)</span>
+
+    <span class="k">return</span> <span class="n">metrics</span><span class="o">.</span><span class="n">get_low_bits_img</span><span class="p">(</span><span class="n">grey_block</span><span class="p">,</span> <span class="n">nb_bits</span><span class="p">)</span></div>
+
+
+<div class="viewcode-block" id="rgb_to_LAB_L_low_bits"><a class="viewcode-back" href="../../ipfml/ipfml.processing.html#ipfml.processing.rgb_to_LAB_L_low_bits">[docs]</a><span class="k">def</span> <span class="nf">rgb_to_LAB_L_low_bits</span><span class="p">(</span><span class="n">image</span><span class="p">,</span> <span class="n">nb_bits</span><span class="o">=</span><span class="mi">4</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Convert RGB Image into Lab L channel image using only 4 low bits values</span>
+
+<span class="sd">    Args:</span>
+<span class="sd">        image: 3D RGB image Numpy array or PIL RGB image</span>
+<span class="sd">        nb_bits: optional parameter which indicates the number of bits to keep (default 4)</span>
+
+<span class="sd">    Returns:</span>
+<span class="sd">        2D Numpy array with low bits information kept</span>
+
+<span class="sd">    Example:</span>
+
+<span class="sd">    &gt;&gt;&gt; from PIL import Image</span>
+<span class="sd">    &gt;&gt;&gt; from ipfml import processing</span>
+<span class="sd">    &gt;&gt;&gt; img = Image.open(&#39;./images/test_img.png&#39;)</span>
+<span class="sd">    &gt;&gt;&gt; low_bits_Lab_l_img = processing.rgb_to_LAB_L_low_bits(img, 5)</span>
+<span class="sd">    &gt;&gt;&gt; low_bits_Lab_l_img.shape</span>
+<span class="sd">    (200, 200)</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+
+    <span class="n">L_block</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">metrics</span><span class="o">.</span><span class="n">get_LAB_L</span><span class="p">(</span><span class="n">image</span><span class="p">),</span> <span class="s1">&#39;uint8&#39;</span><span class="p">)</span>
+
+    <span class="k">return</span> <span class="n">metrics</span><span class="o">.</span><span class="n">get_low_bits_img</span><span class="p">(</span><span class="n">L_block</span><span class="p">,</span> <span class="n">nb_bits</span><span class="p">)</span></div>
+
+
+<div class="viewcode-block" id="rgb_to_LAB_L_bits"><a class="viewcode-back" href="../../ipfml/ipfml.processing.html#ipfml.processing.rgb_to_LAB_L_bits">[docs]</a><span class="k">def</span> <span class="nf">rgb_to_LAB_L_bits</span><span class="p">(</span><span class="n">image</span><span class="p">,</span> <span class="n">interval</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Returns only bits from LAB L canal specified into the interval</span>
+
+<span class="sd">    Args:</span>
+<span class="sd">        image: image to convert using this interval of bits value to keep</span>
+<span class="sd">        interval: (begin, end) of bits values</span>
+
+<span class="sd">    Returns:</span>
+<span class="sd">        2D Numpy array with reduced values</span>
+
+<span class="sd">    &gt;&gt;&gt; from PIL import Image</span>
+<span class="sd">    &gt;&gt;&gt; from ipfml import processing</span>
+<span class="sd">    &gt;&gt;&gt; img = Image.open(&#39;./images/test_img.png&#39;)</span>
+<span class="sd">    &gt;&gt;&gt; bits_Lab_l_img = processing.rgb_to_LAB_L_bits(img, (2, 6))</span>
+<span class="sd">    &gt;&gt;&gt; bits_Lab_l_img.shape</span>
+<span class="sd">    (200, 200)</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+
+    <span class="n">L_block</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">metrics</span><span class="o">.</span><span class="n">get_LAB_L</span><span class="p">(</span><span class="n">image</span><span class="p">),</span> <span class="s1">&#39;uint8&#39;</span><span class="p">)</span>
+
+    <span class="k">return</span> <span class="n">metrics</span><span class="o">.</span><span class="n">get_bits_img</span><span class="p">(</span><span class="n">L_block</span><span class="p">,</span> <span class="n">interval</span><span class="p">)</span></div>
+</pre></div>
+
+           </div>
+           
+          </div>
+          <footer>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2019, Jérôme BUISINE
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  
+
+    
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../../_static/jquery.js"></script>
+        <script type="text/javascript" src="../../_static/underscore.js"></script>
+        <script type="text/javascript" src="../../_static/doctools.js"></script>
+        <script type="text/javascript" src="../../_static/language_data.js"></script>
+    
+
+  
+
+  <script type="text/javascript" src="../../_static/js/theme.js"></script>
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script> 
+
+</body>
+</html>

+ 299 - 0
docs/build/html/_modules/ipfml/utils.html

@@ -0,0 +1,299 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>ipfml.utils &mdash; IPFML v0.2.8 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+
+  
+  
+    
+
+  
+
+  <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../../genindex.html" />
+    <link rel="search" title="Search" href="../../search.html" /> 
+
+  
+  <script src="../../_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav">
+
+   
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search">
+          
+
+          
+            <a href="../../index.html" class="icon icon-home"> IPFML
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                0.2.8
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <p class="caption"><span class="caption-text">Contents:</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../description.html">Description</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../ipfml.html">Documentation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../examples.html">Examples</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contributing.html">Contributing</a></li>
+</ul>
+
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../../index.html">IPFML</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../index.html">Module code</a> &raquo;</li>
+        
+      <li>ipfml.utils</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <h1>Source code for ipfml.utils</h1><div class="highlight"><pre>
+<span></span><span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">Utils functions of ipfml package (array normalization)</span>
+<span class="sd">&quot;&quot;&quot;</span>
+
+<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
+
+<div class="viewcode-block" id="normalize_arr"><a class="viewcode-back" href="../../ipfml/ipfml.utils.html#ipfml.utils.normalize_arr">[docs]</a><span class="k">def</span> <span class="nf">normalize_arr</span><span class="p">(</span><span class="n">arr</span><span class="p">):</span>
+    <span class="sd">&#39;&#39;&#39;Normalize data of 1D array shape</span>
+
+<span class="sd">    Args:</span>
+<span class="sd">        arr: array data of 1D shape</span>
+
+<span class="sd">    Returns:</span>
+<span class="sd">        Normalized 1D array</span>
+
+<span class="sd">    Example:</span>
+
+<span class="sd">    &gt;&gt;&gt; from ipfml import utils</span>
+<span class="sd">    &gt;&gt;&gt; import numpy as np</span>
+<span class="sd">    &gt;&gt;&gt; arr = np.arange(11)</span>
+<span class="sd">    &gt;&gt;&gt; arr_normalized = utils.normalize_arr(arr)</span>
+<span class="sd">    &gt;&gt;&gt; arr_normalized[1]</span>
+<span class="sd">    0.1</span>
+<span class="sd">    &#39;&#39;&#39;</span>
+
+    <span class="n">output_arr</span> <span class="o">=</span> <span class="p">[]</span>
+    <span class="n">max_value</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">arr</span><span class="p">)</span>
+    <span class="n">min_value</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">arr</span><span class="p">)</span>
+
+    <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">arr</span><span class="p">:</span>
+        <span class="n">output_arr</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">v</span> <span class="o">-</span> <span class="n">min_value</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="n">max_value</span> <span class="o">-</span> <span class="n">min_value</span><span class="p">))</span>
+
+    <span class="k">return</span> <span class="n">output_arr</span></div>
+
+
+<div class="viewcode-block" id="normalize_arr_with_range"><a class="viewcode-back" href="../../ipfml/ipfml.utils.html#ipfml.utils.normalize_arr_with_range">[docs]</a><span class="k">def</span> <span class="nf">normalize_arr_with_range</span><span class="p">(</span><span class="n">arr</span><span class="p">,</span> <span class="nb">min</span><span class="p">,</span> <span class="nb">max</span><span class="p">):</span>
+    <span class="sd">&#39;&#39;&#39;Normalize data of 1D array shape</span>
+
+<span class="sd">    Args:</span>
+<span class="sd">        arr: array data of 1D shape</span>
+
+<span class="sd">    Returns:</span>
+<span class="sd">        Normalized 1D Numpy array</span>
+
+<span class="sd">    Example:</span>
+
+<span class="sd">    &gt;&gt;&gt; from ipfml import processing</span>
+<span class="sd">    &gt;&gt;&gt; import numpy as np</span>
+<span class="sd">    &gt;&gt;&gt; arr = np.arange(11)</span>
+<span class="sd">    &gt;&gt;&gt; arr_normalized = processing.normalize_arr_with_range(arr, 0, 20)</span>
+<span class="sd">    &gt;&gt;&gt; arr_normalized[1]</span>
+<span class="sd">    0.05</span>
+<span class="sd">    &#39;&#39;&#39;</span>
+
+    <span class="n">output_arr</span> <span class="o">=</span> <span class="p">[]</span>
+
+    <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">arr</span><span class="p">:</span>
+        <span class="n">output_arr</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">v</span> <span class="o">-</span> <span class="nb">min</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="nb">max</span> <span class="o">-</span> <span class="nb">min</span><span class="p">))</span>
+
+    <span class="k">return</span> <span class="n">output_arr</span></div>
+
+
+<div class="viewcode-block" id="normalize_2D_arr"><a class="viewcode-back" href="../../ipfml/ipfml.utils.html#ipfml.utils.normalize_2D_arr">[docs]</a><span class="k">def</span> <span class="nf">normalize_2D_arr</span><span class="p">(</span><span class="n">arr</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Return array normalize from its min and max values</span>
+
+<span class="sd">    Args:</span>
+<span class="sd">        arr: 2D Numpy array</span>
+
+<span class="sd">    Returns:</span>
+<span class="sd">        Normalized 2D Numpy array</span>
+
+<span class="sd">    Example:</span>
+
+<span class="sd">    &gt;&gt;&gt; from PIL import Image</span>
+<span class="sd">    &gt;&gt;&gt; from ipfml import utils, processing</span>
+<span class="sd">    &gt;&gt;&gt; img = Image.open(&#39;./images/test_img.png&#39;)</span>
+<span class="sd">    &gt;&gt;&gt; img_mscn = processing.rgb_to_mscn(img)</span>
+<span class="sd">    &gt;&gt;&gt; img_normalized = utils.normalize_2D_arr(img_mscn)</span>
+<span class="sd">    &gt;&gt;&gt; img_normalized.shape</span>
+<span class="sd">    (200, 200)</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+
+    <span class="c1"># getting min and max value from 2D array</span>
+    <span class="n">max_value</span> <span class="o">=</span> <span class="n">arr</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">max</span><span class="p">()</span>
+    <span class="n">min_value</span> <span class="o">=</span> <span class="n">arr</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">min</span><span class="p">()</span>
+
+    <span class="c1"># normalize each row</span>
+    <span class="n">output_array</span> <span class="o">=</span> <span class="p">[]</span>
+    <span class="n">width</span><span class="p">,</span> <span class="n">height</span> <span class="o">=</span> <span class="n">arr</span><span class="o">.</span><span class="n">shape</span>
+
+    <span class="k">for</span> <span class="n">row_index</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">height</span><span class="p">):</span>
+        <span class="n">values</span> <span class="o">=</span> <span class="n">arr</span><span class="p">[</span><span class="n">row_index</span><span class="p">,</span> <span class="p">:]</span>
+        <span class="n">output_array</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
+            <span class="n">normalize_arr_with_range</span><span class="p">(</span><span class="n">values</span><span class="p">,</span> <span class="n">min_value</span><span class="p">,</span> <span class="n">max_value</span><span class="p">))</span>
+
+    <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">output_array</span><span class="p">)</span></div>
+</pre></div>
+
+           </div>
+           
+          </div>
+          <footer>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2019, Jérôme BUISINE
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  
+
+    
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../../_static/jquery.js"></script>
+        <script type="text/javascript" src="../../_static/underscore.js"></script>
+        <script type="text/javascript" src="../../_static/doctools.js"></script>
+        <script type="text/javascript" src="../../_static/language_data.js"></script>
+    
+
+  
+
+  <script type="text/javascript" src="../../_static/js/theme.js"></script>
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script> 
+
+</body>
+</html>

+ 1 - 1
docs/build/html/_sources/index.rst.txt

@@ -17,7 +17,7 @@ What's IPFML ?
 IPFML is a python ackage developed during a thesis project.
 
 .. toctree::
-   :maxdepth: 2
+   :maxdepth: 3
    :caption: Contents:
 
    description

+ 18 - 46
docs/build/html/_sources/ipfml.rst.txt

@@ -1,57 +1,29 @@
 Documentation
-=============
+================
 
 
-ipfml.metrics
----------------------------
-
-.. automodule:: ipfml.metrics
-    :members:
-    :show-inheritance:
-
-
-ipfml.processing
----------------------------
-
-.. automodule:: ipfml.processing
-    :members:
-    :show-inheritance:
+.. autosummary::
+   :toctree: ipfml
 
+   ipfml.metrics
+   ipfml.processing
+   
+   ipfml.utils
+   ipfml.exceptions  
 
 ipfml.filters
----------------------------
-
-ipfml.filters.noise
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. automodule:: ipfml.filters.noise
-    :members:
-    :show-inheritance:
+-------------------
 
+.. autosummary::
+   :toctree: ipfml
+  
+   ipfml.filters.noise
 
 ipfml.iqa
----------------------------
-
-ipfml.iqa.fr
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. automodule:: ipfml.iqa.fr
-    :members:
-    :show-inheritance:
-
-
-ipfml.utils
----------------------------
-
-.. automodule:: ipfml.utils
-    :members:
-    :show-inheritance:
-
-
-ipfml.exceptions
----------------------------
+-------------------
 
-.. automodule:: ipfml.exceptions
-    :members:
-    :show-inheritance:
+.. autosummary::
+   :toctree: ipfml
+  
+   ipfml.iqa.fr
 

+ 23 - 0
docs/build/html/_sources/ipfml/ipfml.exceptions.rst.txt

@@ -0,0 +1,23 @@
+ipfml.exceptions
+================
+
+.. automodule:: ipfml.exceptions
+
+   
+   
+   
+
+   
+   
+   
+
+   
+   
+   .. rubric:: Exceptions
+
+   .. autosummary::
+   
+      NumpyDimensionComparisonException
+      NumpyShapeComparisonException
+   
+   

+ 28 - 0
docs/build/html/_sources/ipfml/ipfml.filters.noise.rst.txt

@@ -0,0 +1,28 @@
+ipfml.filters.noise
+===================
+
+.. automodule:: ipfml.filters.noise
+
+   
+   
+   .. rubric:: Functions
+
+   .. autosummary::
+   
+      cauchy_noise
+      gaussian_noise
+      laplace_noise
+      log_normal_noise
+      mut_white_noise
+      salt_pepper_noise
+      white_noise
+   
+   
+
+   
+   
+   
+
+   
+   
+   

+ 27 - 0
docs/build/html/_sources/ipfml/ipfml.iqa.fr.rst.txt

@@ -0,0 +1,27 @@
+ipfml.iqa.fr
+============
+
+.. automodule:: ipfml.iqa.fr
+
+   
+   
+   .. rubric:: Functions
+
+   .. autosummary::
+   
+      mae
+      ms_ssim
+      mse
+      pnsr
+      rmse
+      vif
+   
+   
+
+   
+   
+   
+
+   
+   
+   

+ 36 - 0
docs/build/html/_sources/ipfml/ipfml.metrics.rst.txt

@@ -0,0 +1,36 @@
+ipfml.metrics
+=============
+
+.. automodule:: ipfml.metrics
+
+   
+   
+   .. rubric:: Functions
+
+   .. autosummary::
+   
+      get_LAB
+      get_LAB_L
+      get_LAB_a
+      get_LAB_b
+      get_SVD
+      get_SVD_U
+      get_SVD_V
+      get_SVD_s
+      get_XYZ
+      get_XYZ_X
+      get_XYZ_Y
+      get_XYZ_Z
+      get_bits_img
+      get_low_bits_img
+      gray_to_mscn
+   
+   
+
+   
+   
+   
+
+   
+   
+   

+ 30 - 0
docs/build/html/_sources/ipfml/ipfml.processing.rst.txt

@@ -0,0 +1,30 @@
+ipfml.processing
+================
+
+.. automodule:: ipfml.processing
+
+   
+   
+   .. rubric:: Functions
+
+   .. autosummary::
+   
+      divide_in_blocks
+      get_LAB_L_SVD
+      get_LAB_L_SVD_U
+      get_LAB_L_SVD_V
+      get_LAB_L_SVD_s
+      rgb_to_LAB_L_bits
+      rgb_to_LAB_L_low_bits
+      rgb_to_grey_low_bits
+      rgb_to_mscn
+   
+   
+
+   
+   
+   
+
+   
+   
+   

+ 24 - 0
docs/build/html/_sources/ipfml/ipfml.utils.rst.txt

@@ -0,0 +1,24 @@
+ipfml.utils
+===========
+
+.. automodule:: ipfml.utils
+
+   
+   
+   .. rubric:: Functions
+
+   .. autosummary::
+   
+      normalize_2D_arr
+      normalize_arr
+      normalize_arr_with_range
+   
+   
+
+   
+   
+   
+
+   
+   
+   

+ 1 - 1
docs/build/html/_static/documentation_options.js

@@ -1,6 +1,6 @@
 var DOCUMENTATION_OPTIONS = {
     URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
-    VERSION: 'v0.2.6',
+    VERSION: 'v0.2.8',
     LANGUAGE: 'None',
     COLLAPSE_INDEX: false,
     FILE_SUFFIX: '.html',

+ 2 - 2
docs/build/html/contributing.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>Contributing &mdash; IPFML v0.2.6 documentation</title>
+  <title>Contributing &mdash; IPFML v0.2.8 documentation</title>
   
 
   
@@ -57,7 +57,7 @@
             
             
               <div class="version">
-                0.2.6
+                0.2.8
               </div>
             
           

+ 2 - 2
docs/build/html/description.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>Description &mdash; IPFML v0.2.6 documentation</title>
+  <title>Description &mdash; IPFML v0.2.8 documentation</title>
   
 
   
@@ -58,7 +58,7 @@
             
             
               <div class="version">
-                0.2.6
+                0.2.8
               </div>
             
           

+ 4 - 4
docs/build/html/examples.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>Examples &mdash; IPFML v0.2.6 documentation</title>
+  <title>Examples &mdash; IPFML v0.2.8 documentation</title>
   
 
   
@@ -29,7 +29,7 @@
     <link rel="index" title="Index" href="genindex.html" />
     <link rel="search" title="Search" href="search.html" />
     <link rel="next" title="Contributing" href="contributing.html" />
-    <link rel="prev" title="Documentation" href="ipfml.html" /> 
+    <link rel="prev" title="ipfml.iqa.fr" href="ipfml/ipfml.iqa.fr.html" /> 
 
   
   <script src="_static/js/modernizr.min.js"></script>
@@ -58,7 +58,7 @@
             
             
               <div class="version">
-                0.2.6
+                0.2.8
               </div>
             
           
@@ -232,7 +232,7 @@
         <a href="contributing.html" class="btn btn-neutral float-right" title="Contributing" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
       
       
-        <a href="ipfml.html" class="btn btn-neutral" title="Documentation" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+        <a href="ipfml/ipfml.iqa.fr.html" class="btn btn-neutral" title="ipfml.iqa.fr" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
       
     </div>
   

+ 50 - 50
docs/build/html/genindex.html

@@ -9,7 +9,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>Index &mdash; IPFML v0.2.6 documentation</title>
+  <title>Index &mdash; IPFML v0.2.8 documentation</title>
   
 
   
@@ -57,7 +57,7 @@
             
             
               <div class="version">
-                0.2.6
+                0.2.8
               </div>
             
           
@@ -174,7 +174,7 @@
 <h2 id="C">C</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="ipfml.html#ipfml.filters.noise.cauchy_noise">cauchy_noise() (in module ipfml.filters.noise)</a>
+      <li><a href="ipfml/ipfml.filters.noise.html#ipfml.filters.noise.cauchy_noise">cauchy_noise() (in module ipfml.filters.noise)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -182,7 +182,7 @@
 <h2 id="D">D</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="ipfml.html#ipfml.processing.divide_in_blocks">divide_in_blocks() (in module ipfml.processing)</a>
+      <li><a href="ipfml/ipfml.processing.html#ipfml.processing.divide_in_blocks">divide_in_blocks() (in module ipfml.processing)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -190,47 +190,47 @@
 <h2 id="G">G</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="ipfml.html#ipfml.filters.noise.gaussian_noise">gaussian_noise() (in module ipfml.filters.noise)</a>
+      <li><a href="ipfml/ipfml.filters.noise.html#ipfml.filters.noise.gaussian_noise">gaussian_noise() (in module ipfml.filters.noise)</a>
 </li>
-      <li><a href="ipfml.html#ipfml.metrics.get_bits_img">get_bits_img() (in module ipfml.metrics)</a>
+      <li><a href="ipfml/ipfml.metrics.html#ipfml.metrics.get_bits_img">get_bits_img() (in module ipfml.metrics)</a>
 </li>
-      <li><a href="ipfml.html#ipfml.metrics.get_LAB">get_LAB() (in module ipfml.metrics)</a>
+      <li><a href="ipfml/ipfml.metrics.html#ipfml.metrics.get_LAB">get_LAB() (in module ipfml.metrics)</a>
 </li>
-      <li><a href="ipfml.html#ipfml.metrics.get_LAB_a">get_LAB_a() (in module ipfml.metrics)</a>
+      <li><a href="ipfml/ipfml.metrics.html#ipfml.metrics.get_LAB_a">get_LAB_a() (in module ipfml.metrics)</a>
 </li>
-      <li><a href="ipfml.html#ipfml.metrics.get_LAB_b">get_LAB_b() (in module ipfml.metrics)</a>
+      <li><a href="ipfml/ipfml.metrics.html#ipfml.metrics.get_LAB_b">get_LAB_b() (in module ipfml.metrics)</a>
 </li>
-      <li><a href="ipfml.html#ipfml.metrics.get_LAB_L">get_LAB_L() (in module ipfml.metrics)</a>
+      <li><a href="ipfml/ipfml.metrics.html#ipfml.metrics.get_LAB_L">get_LAB_L() (in module ipfml.metrics)</a>
 </li>
-      <li><a href="ipfml.html#ipfml.processing.get_LAB_L_SVD">get_LAB_L_SVD() (in module ipfml.processing)</a>
+      <li><a href="ipfml/ipfml.processing.html#ipfml.processing.get_LAB_L_SVD">get_LAB_L_SVD() (in module ipfml.processing)</a>
 </li>
-      <li><a href="ipfml.html#ipfml.processing.get_LAB_L_SVD_s">get_LAB_L_SVD_s() (in module ipfml.processing)</a>
+      <li><a href="ipfml/ipfml.processing.html#ipfml.processing.get_LAB_L_SVD_s">get_LAB_L_SVD_s() (in module ipfml.processing)</a>
 </li>
-      <li><a href="ipfml.html#ipfml.processing.get_LAB_L_SVD_U">get_LAB_L_SVD_U() (in module ipfml.processing)</a>
+      <li><a href="ipfml/ipfml.processing.html#ipfml.processing.get_LAB_L_SVD_U">get_LAB_L_SVD_U() (in module ipfml.processing)</a>
 </li>
-      <li><a href="ipfml.html#ipfml.processing.get_LAB_L_SVD_V">get_LAB_L_SVD_V() (in module ipfml.processing)</a>
+      <li><a href="ipfml/ipfml.processing.html#ipfml.processing.get_LAB_L_SVD_V">get_LAB_L_SVD_V() (in module ipfml.processing)</a>
 </li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="ipfml.html#ipfml.metrics.get_low_bits_img">get_low_bits_img() (in module ipfml.metrics)</a>
+      <li><a href="ipfml/ipfml.metrics.html#ipfml.metrics.get_low_bits_img">get_low_bits_img() (in module ipfml.metrics)</a>
 </li>
-      <li><a href="ipfml.html#ipfml.metrics.get_SVD">get_SVD() (in module ipfml.metrics)</a>
+      <li><a href="ipfml/ipfml.metrics.html#ipfml.metrics.get_SVD">get_SVD() (in module ipfml.metrics)</a>
 </li>
-      <li><a href="ipfml.html#ipfml.metrics.get_SVD_s">get_SVD_s() (in module ipfml.metrics)</a>
+      <li><a href="ipfml/ipfml.metrics.html#ipfml.metrics.get_SVD_s">get_SVD_s() (in module ipfml.metrics)</a>
 </li>
-      <li><a href="ipfml.html#ipfml.metrics.get_SVD_U">get_SVD_U() (in module ipfml.metrics)</a>
+      <li><a href="ipfml/ipfml.metrics.html#ipfml.metrics.get_SVD_U">get_SVD_U() (in module ipfml.metrics)</a>
 </li>
-      <li><a href="ipfml.html#ipfml.metrics.get_SVD_V">get_SVD_V() (in module ipfml.metrics)</a>
+      <li><a href="ipfml/ipfml.metrics.html#ipfml.metrics.get_SVD_V">get_SVD_V() (in module ipfml.metrics)</a>
 </li>
-      <li><a href="ipfml.html#ipfml.metrics.get_XYZ">get_XYZ() (in module ipfml.metrics)</a>
+      <li><a href="ipfml/ipfml.metrics.html#ipfml.metrics.get_XYZ">get_XYZ() (in module ipfml.metrics)</a>
 </li>
-      <li><a href="ipfml.html#ipfml.metrics.get_XYZ_X">get_XYZ_X() (in module ipfml.metrics)</a>
+      <li><a href="ipfml/ipfml.metrics.html#ipfml.metrics.get_XYZ_X">get_XYZ_X() (in module ipfml.metrics)</a>
 </li>
-      <li><a href="ipfml.html#ipfml.metrics.get_XYZ_Y">get_XYZ_Y() (in module ipfml.metrics)</a>
+      <li><a href="ipfml/ipfml.metrics.html#ipfml.metrics.get_XYZ_Y">get_XYZ_Y() (in module ipfml.metrics)</a>
 </li>
-      <li><a href="ipfml.html#ipfml.metrics.get_XYZ_Z">get_XYZ_Z() (in module ipfml.metrics)</a>
+      <li><a href="ipfml/ipfml.metrics.html#ipfml.metrics.get_XYZ_Z">get_XYZ_Z() (in module ipfml.metrics)</a>
 </li>
-      <li><a href="ipfml.html#ipfml.metrics.gray_to_mscn">gray_to_mscn() (in module ipfml.metrics)</a>
+      <li><a href="ipfml/ipfml.metrics.html#ipfml.metrics.gray_to_mscn">gray_to_mscn() (in module ipfml.metrics)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -238,19 +238,19 @@
 <h2 id="I">I</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="ipfml.html#module-ipfml.exceptions">ipfml.exceptions (module)</a>
+      <li><a href="ipfml/ipfml.exceptions.html#module-ipfml.exceptions">ipfml.exceptions (module)</a>
 </li>
-      <li><a href="ipfml.html#module-ipfml.filters.noise">ipfml.filters.noise (module)</a>
+      <li><a href="ipfml/ipfml.filters.noise.html#module-ipfml.filters.noise">ipfml.filters.noise (module)</a>
 </li>
-      <li><a href="ipfml.html#module-ipfml.iqa.fr">ipfml.iqa.fr (module)</a>
+      <li><a href="ipfml/ipfml.iqa.fr.html#module-ipfml.iqa.fr">ipfml.iqa.fr (module)</a>
 </li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="ipfml.html#module-ipfml.metrics">ipfml.metrics (module)</a>
+      <li><a href="ipfml/ipfml.metrics.html#module-ipfml.metrics">ipfml.metrics (module)</a>
 </li>
-      <li><a href="ipfml.html#module-ipfml.processing">ipfml.processing (module)</a>
+      <li><a href="ipfml/ipfml.processing.html#module-ipfml.processing">ipfml.processing (module)</a>
 </li>
-      <li><a href="ipfml.html#module-ipfml.utils">ipfml.utils (module)</a>
+      <li><a href="ipfml/ipfml.utils.html#module-ipfml.utils">ipfml.utils (module)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -258,11 +258,11 @@
 <h2 id="L">L</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="ipfml.html#ipfml.filters.noise.laplace_noise">laplace_noise() (in module ipfml.filters.noise)</a>
+      <li><a href="ipfml/ipfml.filters.noise.html#ipfml.filters.noise.laplace_noise">laplace_noise() (in module ipfml.filters.noise)</a>
 </li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="ipfml.html#ipfml.filters.noise.log_normal_noise">log_normal_noise() (in module ipfml.filters.noise)</a>
+      <li><a href="ipfml/ipfml.filters.noise.html#ipfml.filters.noise.log_normal_noise">log_normal_noise() (in module ipfml.filters.noise)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -270,15 +270,15 @@
 <h2 id="M">M</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="ipfml.html#ipfml.iqa.fr.mae">mae() (in module ipfml.iqa.fr)</a>
+      <li><a href="ipfml/ipfml.iqa.fr.html#ipfml.iqa.fr.mae">mae() (in module ipfml.iqa.fr)</a>
 </li>
-      <li><a href="ipfml.html#ipfml.iqa.fr.ms_ssim">ms_ssim() (in module ipfml.iqa.fr)</a>
+      <li><a href="ipfml/ipfml.iqa.fr.html#ipfml.iqa.fr.ms_ssim">ms_ssim() (in module ipfml.iqa.fr)</a>
 </li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="ipfml.html#ipfml.iqa.fr.mse">mse() (in module ipfml.iqa.fr)</a>
+      <li><a href="ipfml/ipfml.iqa.fr.html#ipfml.iqa.fr.mse">mse() (in module ipfml.iqa.fr)</a>
 </li>
-      <li><a href="ipfml.html#ipfml.filters.noise.mut_white_noise">mut_white_noise() (in module ipfml.filters.noise)</a>
+      <li><a href="ipfml/ipfml.filters.noise.html#ipfml.filters.noise.mut_white_noise">mut_white_noise() (in module ipfml.filters.noise)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -286,17 +286,17 @@
 <h2 id="N">N</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="ipfml.html#ipfml.utils.normalize_2D_arr">normalize_2D_arr() (in module ipfml.utils)</a>
+      <li><a href="ipfml/ipfml.utils.html#ipfml.utils.normalize_2D_arr">normalize_2D_arr() (in module ipfml.utils)</a>
 </li>
-      <li><a href="ipfml.html#ipfml.utils.normalize_arr">normalize_arr() (in module ipfml.utils)</a>
+      <li><a href="ipfml/ipfml.utils.html#ipfml.utils.normalize_arr">normalize_arr() (in module ipfml.utils)</a>
 </li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="ipfml.html#ipfml.utils.normalize_arr_with_range">normalize_arr_with_range() (in module ipfml.utils)</a>
+      <li><a href="ipfml/ipfml.utils.html#ipfml.utils.normalize_arr_with_range">normalize_arr_with_range() (in module ipfml.utils)</a>
 </li>
-      <li><a href="ipfml.html#ipfml.exceptions.NumpyDimensionComparisonException">NumpyDimensionComparisonException</a>
+      <li><a href="ipfml/ipfml.exceptions.html#ipfml.exceptions.NumpyDimensionComparisonException">NumpyDimensionComparisonException</a>
 </li>
-      <li><a href="ipfml.html#ipfml.exceptions.NumpyShapeComparisonException">NumpyShapeComparisonException</a>
+      <li><a href="ipfml/ipfml.exceptions.html#ipfml.exceptions.NumpyShapeComparisonException">NumpyShapeComparisonException</a>
 </li>
   </ul></td>
 </tr></table>
@@ -304,7 +304,7 @@
 <h2 id="P">P</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="ipfml.html#ipfml.iqa.fr.pnsr">pnsr() (in module ipfml.iqa.fr)</a>
+      <li><a href="ipfml/ipfml.iqa.fr.html#ipfml.iqa.fr.pnsr">pnsr() (in module ipfml.iqa.fr)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -312,17 +312,17 @@
 <h2 id="R">R</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="ipfml.html#ipfml.processing.rgb_to_grey_low_bits">rgb_to_grey_low_bits() (in module ipfml.processing)</a>
+      <li><a href="ipfml/ipfml.processing.html#ipfml.processing.rgb_to_grey_low_bits">rgb_to_grey_low_bits() (in module ipfml.processing)</a>
 </li>
-      <li><a href="ipfml.html#ipfml.processing.rgb_to_LAB_L_bits">rgb_to_LAB_L_bits() (in module ipfml.processing)</a>
+      <li><a href="ipfml/ipfml.processing.html#ipfml.processing.rgb_to_LAB_L_bits">rgb_to_LAB_L_bits() (in module ipfml.processing)</a>
 </li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="ipfml.html#ipfml.processing.rgb_to_LAB_L_low_bits">rgb_to_LAB_L_low_bits() (in module ipfml.processing)</a>
+      <li><a href="ipfml/ipfml.processing.html#ipfml.processing.rgb_to_LAB_L_low_bits">rgb_to_LAB_L_low_bits() (in module ipfml.processing)</a>
 </li>
-      <li><a href="ipfml.html#ipfml.processing.rgb_to_mscn">rgb_to_mscn() (in module ipfml.processing)</a>
+      <li><a href="ipfml/ipfml.processing.html#ipfml.processing.rgb_to_mscn">rgb_to_mscn() (in module ipfml.processing)</a>
 </li>
-      <li><a href="ipfml.html#ipfml.iqa.fr.rmse">rmse() (in module ipfml.iqa.fr)</a>
+      <li><a href="ipfml/ipfml.iqa.fr.html#ipfml.iqa.fr.rmse">rmse() (in module ipfml.iqa.fr)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -330,7 +330,7 @@
 <h2 id="S">S</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="ipfml.html#ipfml.filters.noise.salt_pepper_noise">salt_pepper_noise() (in module ipfml.filters.noise)</a>
+      <li><a href="ipfml/ipfml.filters.noise.html#ipfml.filters.noise.salt_pepper_noise">salt_pepper_noise() (in module ipfml.filters.noise)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -338,7 +338,7 @@
 <h2 id="V">V</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="ipfml.html#ipfml.iqa.fr.vif">vif() (in module ipfml.iqa.fr)</a>
+      <li><a href="ipfml/ipfml.iqa.fr.html#ipfml.iqa.fr.vif">vif() (in module ipfml.iqa.fr)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -346,7 +346,7 @@
 <h2 id="W">W</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="ipfml.html#ipfml.filters.noise.white_noise">white_noise() (in module ipfml.filters.noise)</a>
+      <li><a href="ipfml/ipfml.filters.noise.html#ipfml.filters.noise.white_noise">white_noise() (in module ipfml.filters.noise)</a>
 </li>
   </ul></td>
 </tr></table>

+ 14 - 8
docs/build/html/index.html

@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>Image Processing For Machine Learning &mdash; IPFML v0.2.6 documentation</title>
+  <title>Image Processing For Machine Learning &mdash; IPFML v0.2.8 documentation</title>
   
 
   
@@ -57,7 +57,7 @@
             
             
               <div class="version">
-                0.2.6
+                0.2.8
               </div>
             
           
@@ -169,12 +169,18 @@
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="ipfml.html">Documentation</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="ipfml.html#module-ipfml.metrics">ipfml.metrics</a></li>
-<li class="toctree-l2"><a class="reference internal" href="ipfml.html#module-ipfml.processing">ipfml.processing</a></li>
-<li class="toctree-l2"><a class="reference internal" href="ipfml.html#ipfml-filters">ipfml.filters</a></li>
-<li class="toctree-l2"><a class="reference internal" href="ipfml.html#ipfml-iqa">ipfml.iqa</a></li>
-<li class="toctree-l2"><a class="reference internal" href="ipfml.html#module-ipfml.utils">ipfml.utils</a></li>
-<li class="toctree-l2"><a class="reference internal" href="ipfml.html#module-ipfml.exceptions">ipfml.exceptions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ipfml/ipfml.metrics.html">ipfml.metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ipfml/ipfml.processing.html">ipfml.processing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ipfml/ipfml.utils.html">ipfml.utils</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ipfml/ipfml.exceptions.html">ipfml.exceptions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ipfml.html#ipfml-filters">ipfml.filters</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="ipfml/ipfml.filters.noise.html">ipfml.filters.noise</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="ipfml.html#ipfml-iqa">ipfml.iqa</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="ipfml/ipfml.iqa.fr.html">ipfml.iqa.fr</a></li>
+</ul>
+</li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="examples.html">Examples</a><ul>

File diff suppressed because it is too large
+ 37 - 1141
docs/build/html/ipfml.html


+ 258 - 0
docs/build/html/ipfml/ipfml.exceptions.html

@@ -0,0 +1,258 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>ipfml.exceptions &mdash; IPFML v0.2.8 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+
+  
+  
+    
+
+  
+
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="ipfml.filters.noise" href="ipfml.filters.noise.html" />
+    <link rel="prev" title="ipfml.utils" href="ipfml.utils.html" /> 
+
+  
+  <script src="../_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav">
+
+   
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search">
+          
+
+          
+            <a href="../index.html" class="icon icon-home"> IPFML
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                0.2.8
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <p class="caption"><span class="caption-text">Contents:</span></p>
+<ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../description.html">Description</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="../ipfml.html">Documentation</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="ipfml.metrics.html">ipfml.metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ipfml.processing.html">ipfml.processing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ipfml.utils.html">ipfml.utils</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">ipfml.exceptions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../ipfml.html#ipfml-filters">ipfml.filters</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../ipfml.html#ipfml-iqa">ipfml.iqa</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../examples.html">Examples</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contributing.html">Contributing</a></li>
+</ul>
+
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">IPFML</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../ipfml.html">Documentation</a> &raquo;</li>
+        
+      <li>ipfml.exceptions</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            
+              <a href="https://github.com/jbuisine/IPFML/blob/master/docs/source/ipfml/ipfml.exceptions.rst" class="fa fa-github"> Edit on GitHub</a>
+            
+          
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <div class="section" id="module-ipfml.exceptions">
+<span id="ipfml-exceptions"></span><h1>ipfml.exceptions<a class="headerlink" href="#module-ipfml.exceptions" title="Permalink to this headline">¶</a></h1>
+<p>Module which contains all customs Exceptions used into ipfml package</p>
+<p class="rubric">Exceptions</p>
+<table border="1" class="longtable docutils">
+<colgroup>
+<col width="10%" />
+<col width="90%" />
+</colgroup>
+<tbody valign="top">
+<tr class="row-odd"><td><a class="reference internal" href="#ipfml.exceptions.NumpyDimensionComparisonException" title="ipfml.exceptions.NumpyDimensionComparisonException"><code class="xref py py-obj docutils literal notranslate"><span class="pre">NumpyDimensionComparisonException</span></code></a>()</td>
+<td>Numpy dimensions comparison Exception raised if two numpy arrays provided do not have same dimensions</td>
+</tr>
+<tr class="row-even"><td><a class="reference internal" href="#ipfml.exceptions.NumpyShapeComparisonException" title="ipfml.exceptions.NumpyShapeComparisonException"><code class="xref py py-obj docutils literal notranslate"><span class="pre">NumpyShapeComparisonException</span></code></a>()</td>
+<td>Numpy shape comparison Exception raised if two numpy arrays provided do not have same shape extactly</td>
+</tr>
+</tbody>
+</table>
+<dl class="exception">
+<dt id="ipfml.exceptions.NumpyDimensionComparisonException">
+<em class="property">exception </em><code class="descclassname">ipfml.exceptions.</code><code class="descname">NumpyDimensionComparisonException</code><a class="reference internal" href="../_modules/ipfml/exceptions.html#NumpyDimensionComparisonException"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#ipfml.exceptions.NumpyDimensionComparisonException" title="Permalink to this definition">¶</a></dt>
+<dd><p>Numpy dimensions comparison Exception raised if two numpy arrays provided do not have same dimensions</p>
+</dd></dl>
+
+<dl class="exception">
+<dt id="ipfml.exceptions.NumpyShapeComparisonException">
+<em class="property">exception </em><code class="descclassname">ipfml.exceptions.</code><code class="descname">NumpyShapeComparisonException</code><a class="reference internal" href="../_modules/ipfml/exceptions.html#NumpyShapeComparisonException"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#ipfml.exceptions.NumpyShapeComparisonException" title="Permalink to this definition">¶</a></dt>
+<dd><p>Numpy shape comparison Exception raised if two numpy arrays provided do not have same shape extactly</p>
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="ipfml.filters.noise.html" class="btn btn-neutral float-right" title="ipfml.filters.noise" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="ipfml.utils.html" class="btn btn-neutral" title="ipfml.utils" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2019, Jérôme BUISINE
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  
+
+    
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+
+  
+
+  <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script> 
+
+</body>
+</html>

File diff suppressed because it is too large
+ 495 - 0
docs/build/html/ipfml/ipfml.filters.noise.html


+ 406 - 0
docs/build/html/ipfml/ipfml.iqa.fr.html

@@ -0,0 +1,406 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>ipfml.iqa.fr &mdash; IPFML v0.2.8 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+
+  
+  
+    
+
+  
+
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="Examples" href="../examples.html" />
+    <link rel="prev" title="ipfml.filters.noise" href="ipfml.filters.noise.html" /> 
+
+  
+  <script src="../_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav">
+
+   
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search">
+          
+
+          
+            <a href="../index.html" class="icon icon-home"> IPFML
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                0.2.8
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <p class="caption"><span class="caption-text">Contents:</span></p>
+<ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../description.html">Description</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="../ipfml.html">Documentation</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="ipfml.metrics.html">ipfml.metrics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ipfml.processing.html">ipfml.processing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ipfml.utils.html">ipfml.utils</a></li>
+<li class="toctree-l2"><a class="reference internal" href="ipfml.exceptions.html">ipfml.exceptions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../ipfml.html#ipfml-filters">ipfml.filters</a></li>
+<li class="toctree-l2 current"><a class="reference internal" href="../ipfml.html#ipfml-iqa">ipfml.iqa</a><ul class="current">
+<li class="toctree-l3 current"><a class="current reference internal" href="#">ipfml.iqa.fr</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../examples.html">Examples</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contributing.html">Contributing</a></li>
+</ul>
+
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">IPFML</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../ipfml.html">Documentation</a> &raquo;</li>
+        
+      <li>ipfml.iqa.fr</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            
+              <a href="https://github.com/jbuisine/IPFML/blob/master/docs/source/ipfml/ipfml.iqa.fr.rst" class="fa fa-github"> Edit on GitHub</a>
+            
+          
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <div class="section" id="module-ipfml.iqa.fr">
+<span id="ipfml-iqa-fr"></span><h1>ipfml.iqa.fr<a class="headerlink" href="#module-ipfml.iqa.fr" title="Permalink to this headline">¶</a></h1>
+<p>Full-reference Image Quality Assessment (FR-IQA) methods</p>
+<p class="rubric">Functions</p>
+<table border="1" class="longtable docutils">
+<colgroup>
+<col width="10%" />
+<col width="90%" />
+</colgroup>
+<tbody valign="top">
+<tr class="row-odd"><td><a class="reference internal" href="#ipfml.iqa.fr.mae" title="ipfml.iqa.fr.mae"><code class="xref py py-obj docutils literal notranslate"><span class="pre">mae</span></code></a>(img_true,&nbsp;img_test)</td>
+<td>Returns Mean Absolute Error between two Numpy arrays</td>
+</tr>
+<tr class="row-even"><td><a class="reference internal" href="#ipfml.iqa.fr.ms_ssim" title="ipfml.iqa.fr.ms_ssim"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ms_ssim</span></code></a>(img_true,&nbsp;img_test)</td>
+<td>Implemented later..</td>
+</tr>
+<tr class="row-odd"><td><a class="reference internal" href="#ipfml.iqa.fr.mse" title="ipfml.iqa.fr.mse"><code class="xref py py-obj docutils literal notranslate"><span class="pre">mse</span></code></a>(img_true,&nbsp;img_test)</td>
+<td>Returns Mean-Squared Error score between two Numpy arrays</td>
+</tr>
+<tr class="row-even"><td><a class="reference internal" href="#ipfml.iqa.fr.pnsr" title="ipfml.iqa.fr.pnsr"><code class="xref py py-obj docutils literal notranslate"><span class="pre">pnsr</span></code></a>(img_true,&nbsp;img_test)</td>
+<td>Returns the computed Peak Signal to Noise Ratio (PSNR) between two images</td>
+</tr>
+<tr class="row-odd"><td><a class="reference internal" href="#ipfml.iqa.fr.rmse" title="ipfml.iqa.fr.rmse"><code class="xref py py-obj docutils literal notranslate"><span class="pre">rmse</span></code></a>(img_true,&nbsp;img_test)</td>
+<td>Returns Root Mean-Squared Error score between two Numpy arrays</td>
+</tr>
+<tr class="row-even"><td><a class="reference internal" href="#ipfml.iqa.fr.vif" title="ipfml.iqa.fr.vif"><code class="xref py py-obj docutils literal notranslate"><span class="pre">vif</span></code></a>(img_true,&nbsp;img_test)</td>
+<td>Implemented later..</td>
+</tr>
+</tbody>
+</table>
+<dl class="function">
+<dt id="ipfml.iqa.fr.mae">
+<code class="descclassname">ipfml.iqa.fr.</code><code class="descname">mae</code><span class="sig-paren">(</span><em>img_true</em>, <em>img_test</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/ipfml/iqa/fr.html#mae"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#ipfml.iqa.fr.mae" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns Mean Absolute Error between two Numpy arrays</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
+<li><strong>img_true</strong> – Image, numpy array of any dimension</li>
+<li><strong>img_test</strong> – Image, numpy array of any dimension</li>
+</ul>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Computed MAE score</p>
+</td>
+</tr>
+<tr class="field-odd field"><th class="field-name">Raises:</th><td class="field-body"><p class="first last"><code class="xref py py-exc docutils literal notranslate"><span class="pre">NumpyShapeComparisonException</span></code> – if shape of images are not the same</p>
+</td>
+</tr>
+</tbody>
+</table>
+<p class="rubric">Example</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">ipfml.iqa</span> <span class="k">import</span> <span class="n">fr</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">arr1</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">arr2</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="mi">15</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">mae_score</span> <span class="o">=</span> <span class="n">fr</span><span class="o">.</span><span class="n">mae</span><span class="p">(</span><span class="n">arr1</span><span class="p">,</span> <span class="n">arr2</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">mae_score</span>
+<span class="go">5.0</span>
+</pre></div>
+</div>
+</dd></dl>
+
+<dl class="function">
+<dt id="ipfml.iqa.fr.ms_ssim">
+<code class="descclassname">ipfml.iqa.fr.</code><code class="descname">ms_ssim</code><span class="sig-paren">(</span><em>img_true</em>, <em>img_test</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/ipfml/iqa/fr.html#ms_ssim"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#ipfml.iqa.fr.ms_ssim" title="Permalink to this definition">¶</a></dt>
+<dd><p>Implemented later..</p>
+</dd></dl>
+
+<dl class="function">
+<dt id="ipfml.iqa.fr.mse">
+<code class="descclassname">ipfml.iqa.fr.</code><code class="descname">mse</code><span class="sig-paren">(</span><em>img_true</em>, <em>img_test</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/ipfml/iqa/fr.html#mse"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#ipfml.iqa.fr.mse" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns Mean-Squared Error score between two Numpy arrays</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
+<li><strong>img_true</strong> – Image, numpy array of any dimension</li>
+<li><strong>img_test</strong> – Image, numpy array of any dimension</li>
+</ul>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Computed MSE score</p>
+</td>
+</tr>
+<tr class="field-odd field"><th class="field-name">Raises:</th><td class="field-body"><p class="first last"><code class="xref py py-exc docutils literal notranslate"><span class="pre">NumpyShapeComparisonException</span></code> – if shape of images are not the same</p>
+</td>
+</tr>
+</tbody>
+</table>
+<p class="rubric">Example</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">ipfml.iqa</span> <span class="k">import</span> <span class="n">fr</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">arr1</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">arr2</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="mi">15</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">mse_score</span> <span class="o">=</span> <span class="n">fr</span><span class="o">.</span><span class="n">mse</span><span class="p">(</span><span class="n">arr1</span><span class="p">,</span> <span class="n">arr2</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">mse_score</span>
+<span class="go">25.0</span>
+</pre></div>
+</div>
+</dd></dl>
+
+<dl class="function">
+<dt id="ipfml.iqa.fr.pnsr">
+<code class="descclassname">ipfml.iqa.fr.</code><code class="descname">pnsr</code><span class="sig-paren">(</span><em>img_true</em>, <em>img_test</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/ipfml/iqa/fr.html#pnsr"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#ipfml.iqa.fr.pnsr" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns the computed Peak Signal to Noise Ratio (PSNR) between two images</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
+<li><strong>img_true</strong> – Image, numpy array of any dimension</li>
+<li><strong>img_test</strong> – Image, numpy array of any dimension</li>
+</ul>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first last">Computed PSNR score</p>
+</td>
+</tr>
+</tbody>
+</table>
+<p class="rubric">Example</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">ipfml.iqa</span> <span class="k">import</span> <span class="n">fr</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">arr1</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">arr2</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="mi">15</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">pnsr_score</span> <span class="o">=</span> <span class="n">fr</span><span class="o">.</span><span class="n">pnsr</span><span class="p">(</span><span class="n">arr1</span><span class="p">,</span> <span class="n">arr2</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="nb">int</span><span class="p">(</span><span class="n">pnsr_score</span><span class="p">)</span>
+<span class="go">365</span>
+</pre></div>
+</div>
+</dd></dl>
+
+<dl class="function">
+<dt id="ipfml.iqa.fr.rmse">
+<code class="descclassname">ipfml.iqa.fr.</code><code class="descname">rmse</code><span class="sig-paren">(</span><em>img_true</em>, <em>img_test</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/ipfml/iqa/fr.html#rmse"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#ipfml.iqa.fr.rmse" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns Root Mean-Squared Error score between two Numpy arrays</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
+<li><strong>img_true</strong> – Image, numpy array of any dimension</li>
+<li><strong>img_test</strong> – Image, numpy array of any dimension</li>
+</ul>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Computed RMSE score</p>
+</td>
+</tr>
+<tr class="field-odd field"><th class="field-name">Raises:</th><td class="field-body"><p class="first last"><code class="xref py py-exc docutils literal notranslate"><span class="pre">NumpyShapeComparisonException</span></code> – if shape of images are not the same</p>
+</td>
+</tr>
+</tbody>
+</table>
+<p class="rubric">Example</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">ipfml.iqa</span> <span class="k">import</span> <span class="n">fr</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">arr1</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">arr2</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="mi">15</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">rmse_score</span> <span class="o">=</span> <span class="n">fr</span><span class="o">.</span><span class="n">rmse</span><span class="p">(</span><span class="n">arr1</span><span class="p">,</span> <span class="n">arr2</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">rmse_score</span>
+<span class="go">5.0</span>
+</pre></div>
+</div>
+</dd></dl>
+
+<dl class="function">
+<dt id="ipfml.iqa.fr.vif">
+<code class="descclassname">ipfml.iqa.fr.</code><code class="descname">vif</code><span class="sig-paren">(</span><em>img_true</em>, <em>img_test</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/ipfml/iqa/fr.html#vif"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#ipfml.iqa.fr.vif" title="Permalink to this definition">¶</a></dt>
+<dd><p>Implemented later..</p>
+</dd></dl>
+
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="../examples.html" class="btn btn-neutral float-right" title="Examples" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="ipfml.filters.noise.html" class="btn btn-neutral" title="ipfml.filters.noise" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2019, Jérôme BUISINE
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  
+
+    
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+    
+
+  
+
+  <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script> 
+
+</body>
+</html>

+ 681 - 0
docs/build/html/ipfml/ipfml.metrics.html

@@ -0,0 +1,681 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>ipfml.metrics &mdash; IPFML v0.2.8 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+
+  
+  
+    
+
+  
+
+  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="ipfml.processing" href="ipfml.processing.html" />
+    <link rel="prev" title="Documentation" href="../ipfml.html" /> 
+
+  
+  <script src="../_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav">
+
+   
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search">
+          
+
+          
+            <a href="../index.html" class="icon icon-home"> IPFML
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                0.2.8
+              </div>
+