Mercurial > hg > octave-lyh
annotate scripts/image/contrast.m @ 10131:30817aa3889a
allow print_usage to print backtrace if called from functions
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Tue, 19 Jan 2010 07:19:00 +0100 |
parents | 16f53d29049f |
children | 1740012184f9 |
rev | line source |
---|---|
9245 | 1 ## Copyright (C) 2008, 2009 David Bateman |
7633 | 2 ## |
3 ## This file is part of Octave. | |
4 ## | |
5 ## Octave is free software; you can redistribute it and/or modify it | |
6 ## under the terms of the GNU General Public License as published by | |
7 ## the Free Software Foundation; either version 3 of the License, or (at | |
8 ## your option) any later version. | |
9 ## | |
10 ## Octave is distributed in the hope that it will be useful, but | |
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 ## General Public License for more details. | |
14 ## | |
15 ## You should have received a copy of the GNU General Public License | |
16 ## along with Octave; see the file COPYING. If not, see | |
17 ## <http://www.gnu.org/licenses/>. | |
18 | |
19 ## -*- texinfo -*- | |
20 ## @deftypefn {Function File} {} contrast (@var{x}, @var{n}) | |
9051
1bf0ce0930be
Grammar check TexInfo in all .m files
Rik <rdrider0-list@yahoo.com>
parents:
7633
diff
changeset
|
21 ## Return a gray colormap that maximizes the contrast in an image. The |
1bf0ce0930be
Grammar check TexInfo in all .m files
Rik <rdrider0-list@yahoo.com>
parents:
7633
diff
changeset
|
22 ## returned colormap will have @var{n} rows. If @var{n} is not defined |
7633 | 23 ## then the size of the current colormap is used instead. |
24 ## @seealso{colormap} | |
25 ## @end deftypefn | |
26 | |
27 function map = contrast (x, n) | |
28 | |
29 if (nargin == 1) | |
30 n = rows (colormap); | |
31 elseif (nargin == 2) | |
32 if (! isscalar (n)) | |
33 error ("contrast: n must be a scalar"); | |
34 endif | |
35 else | |
36 print_usage (); | |
37 endif | |
38 | |
39 x = x(:); | |
40 minx = min (x); | |
41 map = find (diff (sort ([round(n * ((x - minx) ./ (max(x) - minx))); [0:n]']))); | |
42 minm = min (map); | |
43 map = (map - minm) ./ (max (map) - minm); | |
44 map = [map, map, map]; | |
45 endfunction | |
46 | |
47 %!assert (contrast(1:100,10),[([0:9]/9)',([0:9]/9)',([0:9]/9)'],1e-10) | |
48 %!demo | |
49 %! image (reshape (1:100, 10, 10)) | |
50 %! colormap (contrast (1:100,10)) |