From 6425ac3b13445a5629854b67696bfd7b35024e59 Mon Sep 17 00:00:00 2001 From: Christian Richardt Date: Wed, 13 May 2015 17:34:14 +0200 Subject: [PATCH] Added color map similar to Matlab's new default color map 'parula'. --- .../doc/pics/colormaps/colorscale_parula.jpg | Bin 0 -> 1433 bytes modules/imgproc/include/opencv2/imgproc.hpp | 3 ++- modules/imgproc/src/colormap.cpp | 25 +++++++++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 modules/imgproc/doc/pics/colormaps/colorscale_parula.jpg diff --git a/modules/imgproc/doc/pics/colormaps/colorscale_parula.jpg b/modules/imgproc/doc/pics/colormaps/colorscale_parula.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2e79a8b70c658b4aee6956919821ee8bd5ed4944 GIT binary patch literal 1433 zcmbV~eKcEl7{_nkZV20?Ep1twQ?0F&`J-yJr6Y%Ktl2pn^-|)j4kk$GM!jrER6Dxb zTI)I#$JET&52WbKej!;^Lx(oyU%m)`F`&A zw>`4`1hQfIoc4imI0(Xl1#LfsPCag2?0|jb*{gUGfk2{=VX|rDKc($9h-v{H#6bj{BZQ~o2vpp5Cqx4}NhWzf z?6bh(2}BZ11~RO`fW!vKClG*W5>O1L`JfLGsia+pj(Nem10uf< zJu|2|ay%;ek|o7%@4o%^PA|QD^c82f*G{;<{s!aJTW|aLzH^!t7!(|GHZ+VK{eBE5 zHZGofAtf~}{iBaFE`O4ncjeQo`Cs1rs<5c|R!QkMRo_;BS5y1_5B1^(iL~*jJ5B8! zoxgN-|Ju_#B$E#-lp`wj_{7uS|CpSbo|#?#b49CLU0c^1FfNSK9RJ8g1zdQ{12V>i z!>5Bypb|-kj={UU0?3g`yB%F~EcSTcs1)6^Jbe6&#x^Q>kYablZQN-YLo<>6JFrXt zi);t%Z!R@tO~3*32vmp(ZO+LA1|vP)Z$T?`abH4*8dDY@v$kZtYrbvEWVL(BR@Gd1 zQ}&o`ZjFw{9+hor(82naE90A9tJmt7KhvWg)EX2X6=SxdSUI0J&~;vr?a`k}YoT+x z8xzwt_?WFv;LJ~cJy}@erK?*V_Lki?3~zAtLcjTCQTe;la+C>XLRDpkvSxzrjU~^W>S@xbzdZSRUT&k87NPq|$`S|o zbe0UsIuRq^V8Pdbe&nQ|q$GZT&-0TZg3J<~N9lp*PBO<49-~LRWv>vU7yHsU`;h)j z&&xAxX+@?+SZA)#oWAtf{s}3wn7?C0`;I%P;S1o&3e$#PmF_?5DQT`Tj)$_d19ZqJ zbBSVfpic{EowPW$c%xnVs-XahRvE{`?fAZmyVjhksg*}c(Z+-{A(PLu?_SDRi57Hd zQP=tV@r&{76dJoVG027S0umubOFI`IIP8}<0|c(IHKM)N)c!!JK`TI~xGU97I2ZC8 z@I1Jjt4amGt4~&|;UI-vm6pcptw+KEO+-1TOg#G`=dRg`D6>0fCsnP1+Ba`jO3YS- zO3m)*uP4fl7o4WKY~3a)LIM!ImFN>^BMO|q*sWuR^fLA$83M-!7m&mY=Bma0fZXVN zbUH3Pg~l3cm=Q{6|XcLe<5uwNiR_s`VGU)3V0s(c7xO03@H8D*ylh literal 0 HcmV?d00001 diff --git a/modules/imgproc/include/opencv2/imgproc.hpp b/modules/imgproc/include/opencv2/imgproc.hpp index ac93e45..5c18545 100644 --- a/modules/imgproc/include/opencv2/imgproc.hpp +++ b/modules/imgproc/include/opencv2/imgproc.hpp @@ -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. diff --git a/modules/imgproc/src/colormap.cpp b/modules/imgproc/src/colormap.cpp index 86d8679..8e5236c 100644 --- a/modules/imgproc/src/colormap.cpp +++ b/modules/imgproc/src/colormap.cpp @@ -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) : -- 2.7.4