Added color map similar to Matlab's new default color map 'parula'.
authorChristian Richardt <christian@richardt.name>
Wed, 13 May 2015 15:34:14 +0000 (17:34 +0200)
committerChristian Richardt <christian@richardt.name>
Wed, 13 May 2015 15:34:14 +0000 (17:34 +0200)
modules/imgproc/doc/pics/colormaps/colorscale_parula.jpg [new file with mode: 0644]
modules/imgproc/include/opencv2/imgproc.hpp
modules/imgproc/src/colormap.cpp

diff --git a/modules/imgproc/doc/pics/colormaps/colorscale_parula.jpg b/modules/imgproc/doc/pics/colormaps/colorscale_parula.jpg
new file mode 100644 (file)
index 0000000..2e79a8b
Binary files /dev/null and b/modules/imgproc/doc/pics/colormaps/colorscale_parula.jpg differ
index ac93e45..5c18545 100644 (file)
@@ -3741,7 +3741,8 @@ enum ColormapTypes
     COLORMAP_COOL = 8, //!< ![cool](pics/colormaps/colorscale_cool.jpg)
     COLORMAP_HSV = 9, //!< ![HSV](pics/colormaps/colorscale_hsv.jpg)
     COLORMAP_PINK = 10, //!< ![pink](pics/colormaps/colorscale_pink.jpg)
-    COLORMAP_HOT = 11 //!< ![hot](pics/colormaps/colorscale_hot.jpg)
+    COLORMAP_HOT = 11, //!< ![hot](pics/colormaps/colorscale_hot.jpg)
+    COLORMAP_PARULA = 12 //!< ![hot](pics/colormaps/colorscale_parula.jpg)
 };
 
 /** @brief Applies a GNU Octave/MATLAB equivalent colormap on a given image.
index 86d8679..8e5236c 100644 (file)
@@ -469,6 +469,30 @@ namespace colormap
         }
     };
 
+    // Colormap similar to MATLAB's "parula".
+    class Parula : public ColorMap {
+    public:
+        Parula() : ColorMap() {
+            init(256);
+        }
+
+        Parula(int n) : ColorMap() {
+            init(n);
+        }
+
+        void init(int n) {
+            float r[] = { 0.2078, 0.0118, 0.0784, 0.0235, 0.2196, 0.5725, 0.8510, 0.9882, 0.9765 };
+            float g[] = { 0.1647, 0.3882, 0.5216, 0.6549, 0.7255, 0.7490, 0.7294, 0.8078, 0.9843 };
+            float b[] = { 0.5294, 0.8824, 0.8314, 0.7765, 0.6196, 0.4510, 0.3373, 0.1804, 0.0549 };
+            Mat X = linspace(0, 1, 9);
+            this->_lut = ColorMap::linear_colormap(X,
+                    Mat(9, 1, CV_32FC1, r).clone(), // red
+                    Mat(9, 1, CV_32FC1, g).clone(), // green
+                    Mat(9, 1, CV_32FC1, b).clone(), // blue
+                    n);  // number of sample points
+        }
+    };
+
     void ColorMap::operator()(InputArray _src, OutputArray _dst) const
     {
         if(_lut.total() != 256)
@@ -513,6 +537,7 @@ namespace colormap
             colormap == COLORMAP_HSV ? (colormap::ColorMap*)(new colormap::HSV) :
             colormap == COLORMAP_JET ? (colormap::ColorMap*)(new colormap::Jet) :
             colormap == COLORMAP_OCEAN ? (colormap::ColorMap*)(new colormap::Ocean) :
+            colormap == COLORMAP_PARULA ? (colormap::ColorMap*)(new colormap::Parula) :
             colormap == COLORMAP_PINK ? (colormap::ColorMap*)(new colormap::Pink) :
             colormap == COLORMAP_RAINBOW ? (colormap::ColorMap*)(new colormap::Rainbow) :
             colormap == COLORMAP_SPRING ? (colormap::ColorMap*)(new colormap::Spring) :