changeset 18:c22cf492a1f1 Octave-Forge-2002.04.20

function added to octave long ago
author pkienzle
date Sat, 20 Apr 2002 18:33:26 +0000
parents 23cd9ea61d62
children 3e8ff3763b52
files hsv2rgb.m rgb2hsv.m
diffstat 2 files changed, 0 insertions(+), 131 deletions(-) [+]
line wrap: on
line diff
deleted file mode 100644
--- a/hsv2rgb.m
+++ /dev/null
@@ -1,63 +0,0 @@
-## Copyright (C) 1999,2000  Kai Habel
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {} @var{rgb_map} = hsv2rgb (@var{hsv_map})
-## transform a colormap from the hsv space to the rgb space 
-## @end deftypefn
-## @seealso{rgb2hsv}
-
-##
-## Author:	Kai Habel <kai.habel@gmx.de>
-
-function rgb_map=hsv2rgb(hsv_map)
-
-## each color value x=(r,g,b) is calculated with
-## x = (1-s)*v+s*v*f_x(hue)
-## where fx(hue) is a piecewise defined function for
-## each color with f_r(h-2/3)=f_g(h)=f_b(h-1/3)
-
-  if (is_matrix (hsv_map))
-    nc = size (hsv_map, 2);
-    if (nc == 3)
-      #set values <0 to 0 and >1 to 1
-      hsv_map = (hsv_map >= 0 & hsv_map <= 1) .* hsv_map\
-              + (hsv_map < 0) .* 0 + (hsv_map > 1);
-
-      #fill rgb map with v*(1-s)
-      rgb_map = kron ([1, 1, 1], hsv_map(:, 3) .* (1 - hsv_map(:,2)));
-
-      #red(hue-2/3)=green(hue)=blue(hue-1/3)
-      #apply modulo 1 for red and blue 
-      hue = [ (hsv_map(:, 1)' - 2/3) - floor(hsv_map(:, 1) - 2/3)';
-               hsv_map(:, 1)';
-              (hsv_map(:, 1)' - 1/3) - floor(hsv_map(:, 1) - 1/3)'
-            ]';
-      #factor s*v -> f
-      f = kron ([1, 1, 1], hsv_map(:, 2))\
-        .* kron ([1, 1, 1], hsv_map(:, 3));
-
-      #add s*v* hue-function to rgb map
-      rgb_map = rgb_map +  f .* (6 * (hue < 1/6) .* hue\
-              + (hue >= 1/6 & hue < 1/2)\
-              + (hue >= 1/2 & hue < 2/3) .* (4 - 6 * hue));
-    else
-      usage ("hsv2rgb(hsv_map): hsv_map must be a matrix of size nx3");
-    endif
-  else
-    usage ("hsv2rgb(hsv_map): hsv_map must be a matrix of size nx3");
-  endif
-endfunction
deleted file mode 100644
--- a/rgb2hsv.m
+++ /dev/null
@@ -1,68 +0,0 @@
-## Copyright (C) 1999,2000  Kai Habel
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {} @var{hsv_map} = rgb2hsv (@var{rgb_map})
-## transform a colormap from the rgb space to the hsv space 
-## @end deftypefn
-## @seealso{hsv2rgb}
-
-## Author:	Kai Habel <kai.habel@gmx.de>
-
-function hsval = rgb2hsv (rgb)
-  if (columns(rgb) == 3)
-
-    ## get the max and min
-    s = min (rgb')';
-    v = max (rgb')';
-    h = zeros(size(v));
-
-    ## no hue
-    notgray = (s != v);
-    s(!notgray) = 0;
-    
-    ## blue hue
-    idx = (v == rgb(:,3) & notgray);
-    if any(idx)
-      h(idx) = 2/3 + 1/6 * (rgb(idx,1)-rgb(idx,2)) ./ (v(idx) - s(idx));
-    endif
-	      
-    ## green hue
-    idx = (v == rgb(:,2) & notgray);
-    if any(idx)
-      h(idx) = 1/3 + 1/6 * (rgb(idx,3)-rgb(idx,1)) ./ (v(idx) - s(idx));
-    endif
-
-    ## red hue
-    idx = (v == rgb(:,1) & notgray); 
-    if any(idx)
-      h(idx) =       1/6 * (rgb(idx,2)-rgb(idx,3)) ./ (v(idx) - s(idx));
-    endif
-
-    ## correct for negative red
-    idx = (h < 0);
-    h(idx) = 1+h(idx);
-
-    ## set the saturation
-    s(notgray) = 1 - s(notgray) ./ v(notgray);
-
-    hsval = [h, s, v];
-
-  else
-    usage ("rgb2hsv(rgb_map): rgb_map must be a matrix of size nx3");
-  endif
-
-endfunction