changeset 15691:dffb28f47ea8

gray2ind: return indexed image as integer for matlab compatibility
author Carnë Draug <carandraug+dev@gmail.com>
date Mon, 12 Nov 2012 05:32:02 +0000
parents 7d21456c09d1
children 37a21f615d67
files scripts/image/gray2ind.m
diffstat 1 files changed, 12 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/image/gray2ind.m	Mon Nov 12 05:25:37 2012 +0000
+++ b/scripts/image/gray2ind.m	Mon Nov 12 05:32:02 2012 +0000
@@ -24,7 +24,9 @@
 ##
 ## The indexed image will consist of @var{n} different intensity values.
 ## If not given @var{n} defaults to 64 and 2 for gray scale and binary images
-## respectively.
+## respectively.  Its class will be uint8, uint16 or double in order of which
+## one is necessary to fit @var{n} different intensities.
+##
 ## @seealso{ind2gray, rgb2ind} 
 ## @end deftypefn
 
@@ -67,6 +69,13 @@
     high = double (intmax (C));
     I = (double (I) - low) / (high - low);
   endif
-  X = round (I*(n-1)) + 1;
-
+  X = round (I*(n-1));
+  if (n < 256)
+    X = uint8 (X);
+  elseif (n < 65536)
+    X = uint16 (X);
+  else
+    ## if uint16 is not enough, we return double in which case there's no 0
+    X += 1;
+  endif
 endfunction