ffisind.m
上传用户:changqing
上传日期:2013-01-11
资源大小:2384k
文件大小:1k
源码类别:

图形图像处理

开发平台:

Matlab

  1. function y = ffisind(x)
  2. %ISIND Return true for indexed image.
  3. %   FLAG = ISIND(A) returns 1 if A is an indexed image and 0
  4. %   otherwise. 
  5. %
  6. %   ISIND uses these criteria to determine if A is an indexed
  7. %   image:
  8. %
  9. %   - If A is of class double, all values in A must be integers
  10. %     greater than or equal to 1, and the number of dimensions of
  11. %     A must be 2.
  12. %
  13. %   - If A is of class uint8 or uint16, the number of dimensions
  14. %     of A must be 2.
  15. %   Note that a four-dimensional array that contains multiple
  16. %   indexed images returns 0, not 1.
  17. %
  18. %   Class Support
  19. %   -------------
  20. %   A can be of class uint8, uint16, or double.
  21. %
  22. %   See also ISBW, ISGRAY, ISRGB.
  23. %   Copyright 1993-2003 The MathWorks, Inc.  
  24. %   $Revision: 5.20.4.2 $  $Date: 2003/08/23 05:52:54 $
  25. y = (ndims(x)==2) && ~isempty(x);       % Check number of dimensions
  26. if (isa(x, 'uint8') || isa(x, 'uint16')) && y
  27.     %nothing needed
  28. elseif isa(x, 'logical') && y
  29.     y = 0;
  30. elseif y   % The image is double and ndims==2
  31.    % At first just test a small chunk to get a possible quick negative
  32.    [m,n] = size(x);
  33.    chunk = x(1:min(m,10),1:min(n,10));         
  34.    y = min(chunk(:))>=1 && all((chunk(:)-floor(chunk(:)))==0);
  35.    % If the chunk is an indexed image, test the whole image
  36.    if y
  37.       y = min(x(:))>=1 && all((x(:)-floor(x(:)))==0);
  38.    end
  39. end