Mercurial > hg > octave-nkf
annotate scripts/image/imshow.m @ 14237:11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Add clf() to all demos using plot features to get reproducibility.
Use 64 as input to all colormaps (jet (64)) to get reproducibility.
* bicubic.m, cell2mat.m, celldisp.m, cplxpair.m, interp1.m, interp2.m,
interpft.m, interpn.m, profile.m, profshow.m, convhull.m, delaunay.m,
griddata.m, inpolygon.m, voronoi.m, autumn.m, bone.m, contrast.m, cool.m,
copper.m, flag.m, gmap40.m, gray.m, hot.m, hsv.m, image.m, imshow.m, jet.m,
ocean.m, pink.m, prism.m, rainbow.m, spring.m, summer.m, white.m, winter.m,
condest.m, onenormest.m, axis.m, clabel.m, colorbar.m, comet.m, comet3.m,
compass.m, contour.m, contour3.m, contourf.m, cylinder.m, daspect.m,
ellipsoid.m, errorbar.m, ezcontour.m, ezcontourf.m, ezmesh.m, ezmeshc.m,
ezplot.m, ezplot3.m, ezpolar.m, ezsurf.m, ezsurfc.m, feather.m, fill.m,
fplot.m, grid.m, hold.m, isosurface.m, legend.m, loglog.m, loglogerr.m,
pareto.m, patch.m, pbaspect.m, pcolor.m, pie.m, pie3.m, plot3.m, plotmatrix.m,
plotyy.m, polar.m, quiver.m, quiver3.m, rectangle.m, refreshdata.m, ribbon.m,
rose.m, scatter.m, scatter3.m, semilogx.m, semilogxerr.m, semilogy.m,
semilogyerr.m, shading.m, slice.m, sombrero.m, stairs.m, stem.m, stem3.m,
subplot.m, surf.m, surfc.m, surfl.m, surfnorm.m, text.m, title.m, trimesh.m,
triplot.m, trisurf.m, uigetdir.m, uigetfile.m, uimenu.m, uiputfile.m,
waitbar.m, xlim.m, ylim.m, zlim.m, mkpp.m, pchip.m, polyaffine.m, spline.m,
bicgstab.m, cgs.m, gplot.m, pcg.m, pcr.m, treeplot.m, strtok.m, demo.m,
example.m, rundemos.m, speed.m, test.m, calendar.m, datestr.m, datetick.m,
weekday.m: Revamp %!demos to use Octave coding conventions on spacing, etc.
author | Rik <octave@nomad.inbox5.com> |
---|---|
date | Fri, 20 Jan 2012 12:59:53 -0800 |
parents | 72c96de7a403 |
children | b76f0740940e |
rev | line source |
---|---|
14138
72c96de7a403
maint: update copyright notices for 2012
John W. Eaton <jwe@octave.org>
parents:
14001
diff
changeset
|
1 ## Copyright (C) 1994-2012 John W. Eaton |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
2 ## |
2313 | 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 | |
7016 | 7 ## the Free Software Foundation; either version 3 of the License, or (at |
8 ## your option) any later version. | |
2313 | 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 | |
7016 | 16 ## along with Octave; see the file COPYING. If not, see |
17 ## <http://www.gnu.org/licenses/>. | |
1024 | 18 |
3381 | 19 ## -*- texinfo -*- |
10793
be55736a0783
Grammarcheck the documentation from m-files.
Rik <octave@nomad.inbox5.com>
parents:
10648
diff
changeset
|
20 ## @deftypefn {Function File} {} imshow (@var{im}) |
5934 | 21 ## @deftypefnx {Function File} {} imshow (@var{im}, @var{limits}) |
22 ## @deftypefnx {Function File} {} imshow (@var{im}, @var{map}) | |
7074 | 23 ## @deftypefnx {Function File} {} imshow (@var{rgb}, @dots{}) |
5934 | 24 ## @deftypefnx {Function File} {} imshow (@var{filename}) |
6309 | 25 ## @deftypefnx {Function File} {} imshow (@dots{}, @var{string_param1}, @var{value1}, @dots{}) |
14001
5f0bb45e615c
doc: Update documentation for functions returning a graphics handle h (Bug #34761)
Rik <octave@nomad.inbox5.com>
parents:
13738
diff
changeset
|
26 ## @deftypefnx {Function File} {@var{h} =} imshow (@dots{}) |
6368 | 27 ## Display the image @var{im}, where @var{im} can be a 2-dimensional |
7074 | 28 ## (gray-scale image) or a 3-dimensional (RGB image) matrix. |
5934 | 29 ## |
30 ## If @var{limits} is a 2-element vector @code{[@var{low}, @var{high}]}, | |
31 ## the image is shown using a display range between @var{low} and | |
32 ## @var{high}. If an empty matrix is passed for @var{limits}, the | |
33 ## display range is computed as the range between the minimal and the | |
34 ## maximal value in the image. | |
3426 | 35 ## |
5934 | 36 ## If @var{map} is a valid color map, the image will be shown as an indexed |
37 ## image using the supplied color map. | |
38 ## | |
39 ## If a file name is given instead of an image, the file will be read and | |
40 ## shown. | |
3426 | 41 ## |
5934 | 42 ## If given, the parameter @var{string_param1} has value |
9051
1bf0ce0930be
Grammar check TexInfo in all .m files
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
43 ## @var{value1}. @var{string_param1} can be any of the following: |
11595
5ec6aa05638d
Prevent doubled quotes around @table items in Info.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
44 ## @table @asis |
6368 | 45 ## @item "displayrange" |
5934 | 46 ## @var{value1} is the display range as described above. |
47 ## @end table | |
14001
5f0bb45e615c
doc: Update documentation for functions returning a graphics handle h (Bug #34761)
Rik <octave@nomad.inbox5.com>
parents:
13738
diff
changeset
|
48 ## |
5f0bb45e615c
doc: Update documentation for functions returning a graphics handle h (Bug #34761)
Rik <octave@nomad.inbox5.com>
parents:
13738
diff
changeset
|
49 ## The optional return value @var{h} is a graphics handle to the image. |
5642 | 50 ## @seealso{image, imagesc, colormap, gray2ind, rgb2ind} |
3373 | 51 ## @end deftypefn |
904 | 52 |
7074 | 53 ## Author: Stefan van der Walt <stefan@sun.ac.za> |
5934 | 54 ## Author: Soren Hauberg <hauberg at gmail dot com> |
2312 | 55 ## Adapted-By: jwe |
559 | 56 |
7074 | 57 function h = imshow (im, varargin) |
559 | 58 |
5934 | 59 if (nargin == 0) |
60 print_usage (); | |
5318 | 61 endif |
62 | |
7328 | 63 display_range = NA; |
7074 | 64 true_color = false; |
65 indexed = false; | |
66 | |
5935 | 67 ## Get the image. |
5934 | 68 if (ischar (im)) |
7931
de26beacb20f
imread.m: simplify; loadimage.m: deprecate
John W. Eaton <jwe@octave.org>
parents:
7930
diff
changeset
|
69 [im, map] = imread (im); |
7074 | 70 indexed = true; |
71 colormap (map); | |
72 endif | |
73 | |
10286
8cf666139297
imshow for logical matrices
John W. Eaton <jwe@octave.org>
parents:
9273
diff
changeset
|
74 nd = ndims (im); |
8cf666139297
imshow for logical matrices
John W. Eaton <jwe@octave.org>
parents:
9273
diff
changeset
|
75 |
8cf666139297
imshow for logical matrices
John W. Eaton <jwe@octave.org>
parents:
9273
diff
changeset
|
76 if (! ((isnumeric (im) || islogical (im)) && (nd == 2 || nd == 3))) |
11472
1740012184f9
Use uppercase for variable names in error() strings to match Info documentation. Only m-files done.
Rik <octave@nomad.inbox5.com>
parents:
11324
diff
changeset
|
77 error ("imshow: IM must be an image or the filename of an image"); |
5318 | 78 endif |
7074 | 79 |
10286
8cf666139297
imshow for logical matrices
John W. Eaton <jwe@octave.org>
parents:
9273
diff
changeset
|
80 if (nd == 2) |
7074 | 81 if (! indexed) |
82 colormap (gray ()); | |
83 endif | |
84 elseif (size (im, 3) == 3) | |
85 if (ismember (class (im), {"uint8", "uint16", "double", "single"})) | |
86 true_color = true; | |
87 else | |
88 error ("imshow: color image must be uint8, uint16, double, or single"); | |
89 endif | |
90 else | |
91 error ("imshow: expecting MxN or MxNx3 matrix for image"); | |
5318 | 92 endif |
93 | |
7074 | 94 narg = 1; |
95 while (narg <= numel (varargin)) | |
96 arg = varargin{narg++}; | |
97 if (isnumeric (arg)) | |
7331 | 98 if (numel (arg) == 2 || isempty (arg)) |
10433
2c01d24459fb
Detabify scripts in 'scripts/image/'
Soren Hauberg <hauberg@gmail.com>
parents:
10286
diff
changeset
|
99 display_range = arg; |
7074 | 100 elseif (columns (arg) == 3) |
10433
2c01d24459fb
Detabify scripts in 'scripts/image/'
Soren Hauberg <hauberg@gmail.com>
parents:
10286
diff
changeset
|
101 indexed = true; |
2c01d24459fb
Detabify scripts in 'scripts/image/'
Soren Hauberg <hauberg@gmail.com>
parents:
10286
diff
changeset
|
102 colormap (arg); |
7074 | 103 elseif (! isempty (arg)) |
10433
2c01d24459fb
Detabify scripts in 'scripts/image/'
Soren Hauberg <hauberg@gmail.com>
parents:
10286
diff
changeset
|
104 error ("imshow: argument number %d is invalid", narg+1); |
7074 | 105 endif |
106 elseif (ischar (arg)) | |
107 switch (arg) | |
10433
2c01d24459fb
Detabify scripts in 'scripts/image/'
Soren Hauberg <hauberg@gmail.com>
parents:
10286
diff
changeset
|
108 case "displayrange"; |
2c01d24459fb
Detabify scripts in 'scripts/image/'
Soren Hauberg <hauberg@gmail.com>
parents:
10286
diff
changeset
|
109 display_range = varargin{narg++}; |
2c01d24459fb
Detabify scripts in 'scripts/image/'
Soren Hauberg <hauberg@gmail.com>
parents:
10286
diff
changeset
|
110 case {"truesize", "initialmagnification"} |
2c01d24459fb
Detabify scripts in 'scripts/image/'
Soren Hauberg <hauberg@gmail.com>
parents:
10286
diff
changeset
|
111 warning ("image: zoom argument ignored -- use GUI features"); |
2c01d24459fb
Detabify scripts in 'scripts/image/'
Soren Hauberg <hauberg@gmail.com>
parents:
10286
diff
changeset
|
112 otherwise |
2c01d24459fb
Detabify scripts in 'scripts/image/'
Soren Hauberg <hauberg@gmail.com>
parents:
10286
diff
changeset
|
113 warning ("imshow: unrecognized property %s", arg); |
2c01d24459fb
Detabify scripts in 'scripts/image/'
Soren Hauberg <hauberg@gmail.com>
parents:
10286
diff
changeset
|
114 narg++; |
7074 | 115 endswitch |
116 else | |
117 error ("imshow: argument number %d is invalid", narg+1); | |
118 endif | |
119 endwhile | |
120 | |
13738
7ee61e56eaed
Periodic merge of stable to default
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13705
diff
changeset
|
121 ## Check for complex images. |
7ee61e56eaed
Periodic merge of stable to default
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13705
diff
changeset
|
122 if (iscomplex (im)) |
7ee61e56eaed
Periodic merge of stable to default
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13705
diff
changeset
|
123 warning ("imshow: only showing real part of complex image"); |
7ee61e56eaed
Periodic merge of stable to default
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13705
diff
changeset
|
124 im = real (im); |
7ee61e56eaed
Periodic merge of stable to default
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13705
diff
changeset
|
125 endif |
7ee61e56eaed
Periodic merge of stable to default
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13705
diff
changeset
|
126 |
8117 | 127 ## Set default display range if display_range not set yet. |
7328 | 128 if (isempty (display_range)) |
7074 | 129 display_range = [min(im(:)), max(im(:))]; |
8117 | 130 elseif (isna (display_range)) |
7074 | 131 t = class (im); |
132 switch (t) | |
133 case {"double", "single", "logical"} | |
10433
2c01d24459fb
Detabify scripts in 'scripts/image/'
Soren Hauberg <hauberg@gmail.com>
parents:
10286
diff
changeset
|
134 display_range = [0, 1]; |
7074 | 135 case {"int8", "int16", "int32", "uint8", "uint16", "uint32"} |
11597
a066673566da
set clim to [0,1] so that scaled cdatamapping works as intended.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
11595
diff
changeset
|
136 display_range = [intmin(t), intmax(t)]; |
7074 | 137 otherwise |
10433
2c01d24459fb
Detabify scripts in 'scripts/image/'
Soren Hauberg <hauberg@gmail.com>
parents:
10286
diff
changeset
|
138 error ("imshow: invalid data type for image"); |
7074 | 139 endswitch |
140 endif | |
5934 | 141 |
6219 | 142 nans = isnan (im(:)); |
143 if (any (nans)) | |
144 warning ("Octave:imshow-NaN", | |
10433
2c01d24459fb
Detabify scripts in 'scripts/image/'
Soren Hauberg <hauberg@gmail.com>
parents:
10286
diff
changeset
|
145 "imshow: pixels with NaN or NA values are set to minimum pixel value"); |
6219 | 146 im(nans) = display_range(1); |
147 endif | |
148 | |
7074 | 149 ## This is for compatibility. |
7930
1f6eb3de1c4e
__img__.m, imshow.m, __go_draw_axes__.m: improve handling of truecolor images
John W. Eaton <jwe@octave.org>
parents:
7511
diff
changeset
|
150 if (! (indexed || (true_color && isinteger (im))) || islogical (im)) |
7074 | 151 im = double (im); |
152 endif | |
153 | |
11597
a066673566da
set clim to [0,1] so that scaled cdatamapping works as intended.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
11595
diff
changeset
|
154 ## Clamp the image to the range boundaries |
7315 | 155 if (! (true_color || indexed || islogical (im))) |
7328 | 156 low = display_range(1); |
157 high = display_range(2); | |
11597
a066673566da
set clim to [0,1] so that scaled cdatamapping works as intended.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
11595
diff
changeset
|
158 im(im < low) = low; |
a066673566da
set clim to [0,1] so that scaled cdatamapping works as intended.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
11595
diff
changeset
|
159 im(im > high) = high; |
4836 | 160 endif |
6368 | 161 |
9269
06518194dba0
fix displaying indexed images
Jaroslav Hajek <highegg@gmail.com>
parents:
9245
diff
changeset
|
162 if (true_color || indexed) |
06518194dba0
fix displaying indexed images
Jaroslav Hajek <highegg@gmail.com>
parents:
9245
diff
changeset
|
163 tmp = image ([], [], im); |
5934 | 164 else |
10648
bc4eb29e0cb4
Scale image point color according to colormap. Bug #29926.
Rik <octave@nomad.inbox5.com>
parents:
10433
diff
changeset
|
165 tmp = image (im); |
bc4eb29e0cb4
Scale image point color according to colormap. Bug #29926.
Rik <octave@nomad.inbox5.com>
parents:
10433
diff
changeset
|
166 set (tmp, "cdatamapping", "scaled"); |
11597
a066673566da
set clim to [0,1] so that scaled cdatamapping works as intended.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
11595
diff
changeset
|
167 ## The backend is responsible for scaling to clim if necessary. |
a066673566da
set clim to [0,1] so that scaled cdatamapping works as intended.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
11595
diff
changeset
|
168 set (gca (), "clim", display_range); |
5934 | 169 endif |
11324 | 170 set (gca (), "visible", "off", "ydir", "reverse"); |
7511
f028e7aa77a7
imshow.m: use axis ("image")
John W. Eaton <jwe@octave.org>
parents:
7331
diff
changeset
|
171 axis ("image"); |
7074 | 172 |
173 if (nargout > 0) | |
174 h = tmp; | |
175 endif | |
176 | |
559 | 177 endfunction |
4836 | 178 |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
179 |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
180 %!demo |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
181 %! clf; |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
182 %! imshow ("default.img"); |
4836 | 183 |
184 %!demo | |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
185 %! clf; |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
186 %! imshow ("default.img"); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
187 %! colormap (autumn (64)); |
7074 | 188 |
189 %!demo | |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
190 %! clf; |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
191 %! [I, M] = imread ("default.img"); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
192 %! imshow (I, M); |
4836 | 193 |
194 %!demo | |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
195 %! clf; |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
196 %! [I, M] = imread ("default.img"); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
197 %! [R, G, B] = ind2rgb (I, M); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
198 %! imshow (cat (3, R, G*0.5, B*0.8)); |
5318 | 199 |
200 %!demo | |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
201 %! clf; |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
202 %! imshow (rand (100, 100)); |
5318 | 203 |
204 %!demo | |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
205 %! clf; |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
206 %! imshow (rand (100, 100, 3)); |
7074 | 207 |
208 %!demo | |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
209 %! clf; |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
210 %! imshow (100*rand (100, 100, 3)); |
7074 | 211 |
212 %!demo | |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
213 %! clf; |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
214 %! imshow (rand (100, 100)); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
215 %! colormap (jet (64)); |
7074 | 216 |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
217 %% Test input validation |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
218 %!error imshow () |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
219 %!error <IM must be an image> imshow ({"cell"}) |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
220 %!error <expecting MxN or MxNx3 matrix> imshow (ones (4,4,4)) |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
221 |