summaryrefslogtreecommitdiffstats
path: root/SD-VBS/common/toolbox/toolbox_basic/TOOLBOX_calib/readras.m
diff options
context:
space:
mode:
Diffstat (limited to 'SD-VBS/common/toolbox/toolbox_basic/TOOLBOX_calib/readras.m')
-rwxr-xr-xSD-VBS/common/toolbox/toolbox_basic/TOOLBOX_calib/readras.m87
1 files changed, 87 insertions, 0 deletions
diff --git a/SD-VBS/common/toolbox/toolbox_basic/TOOLBOX_calib/readras.m b/SD-VBS/common/toolbox/toolbox_basic/TOOLBOX_calib/readras.m
new file mode 100755
index 0000000..fc1820b
--- /dev/null
+++ b/SD-VBS/common/toolbox/toolbox_basic/TOOLBOX_calib/readras.m
@@ -0,0 +1,87 @@
1function [X, map] = readras(filename, ys, ye, xs, xe);
2%READRAS Read an image file in sun raster format.
3% READRAS('imagefile.ras') reads a "sun.raster" image file.
4% [X, map] = READRAS('imagefile.ras') returns both the image and a
5% color map, so that
6% [X, map] = readras('imagefile.ras');
7% image(X)
8% colormap(map)
9% axis('equal')
10% will display the result with the proper colors.
11% NOTE: readras cannot deal with complicated color maps.
12% In fact, Matlab doesn't quite allow to work with colormaps
13% with more than 64 entries.
14%
15
16%%
17%% (C) Thomas K. Leung 3/30/93.
18%% California Institute of Technology.
19%% Modified by Andrea Mennucci to deal with color images
20%%
21
22% PC and UNIX version of readras - Jean-Yves Bouguet - Dec. 1998
23
24dot = max(find(filename == '.'));
25suffix = filename(dot+1:dot+3);
26
27if(strcmp(suffix, 'ras')) % raster file format %
28 fp = fopen(filename, 'rb');
29 if(fp<0) error(['Cannot open ' filename '.']), end
30
31 %Read and crack the 32-byte header
32 fseek(fp, 4, -1);
33
34 width = 2^24 * fread(fp, 1, 'uchar') + 2^16 * fread(fp, 1, 'uchar') + 2^8 * fread(fp, 1, 'uchar') + fread(fp, 1, 'uchar');
35
36 height = 2^24 * fread(fp, 1, 'uchar') + 2^16 * fread(fp, 1, 'uchar') + 2^8 * fread(fp, 1, 'uchar') + fread(fp, 1, 'uchar');
37
38 depth = 2^24 * fread(fp, 1, 'uchar') + 2^16 * fread(fp, 1, 'uchar') + 2^8 * fread(fp, 1, 'uchar') + fread(fp, 1, 'uchar');
39
40 length = 2^24 * fread(fp, 1, 'uchar') + 2^16 * fread(fp, 1, 'uchar') + 2^8 * fread(fp, 1, 'uchar') + fread(fp, 1, 'uchar');
41
42 type = 2^24 * fread(fp, 1, 'uchar') + 2^16 * fread(fp, 1, 'uchar') + 2^8 * fread(fp, 1, 'uchar') + fread(fp, 1, 'uchar');
43
44 maptype = 2^24 * fread(fp, 1, 'uchar') + 2^16 * fread(fp, 1, 'uchar') + 2^8 * fread(fp, 1, 'uchar') + fread(fp, 1, 'uchar');
45
46 maplen = 2^24 * fread(fp, 1, 'uchar') + 2^16 * fread(fp, 1, 'uchar') + 2^8 * fread(fp, 1, 'uchar') + fread(fp, 1, 'uchar');
47
48 maplen = maplen / 3;
49
50 if maptype == 2 % RMT_RAW
51 map = fread(fp, [maplen, 3], 'uchar')/255;
52% if maplen<64, map=[map',zeros(3,64-maplen)]';maplen=64; end;
53 elseif maptype == 1 % RMT_EQUAL_RGB
54 map(:,1) = fread(fp, [maplen], 'uchar');
55 map(:,2) = fread(fp, [maplen], 'uchar');
56 map(:,3) = fread(fp, [maplen], 'uchar');
57 %maxmap = max(max(map));
58 map = map/255;
59 if maplen<64, map=[map',zeros(3,64-maplen)]'; maplen=64; end;
60 else % RMT_NONE
61 map = [];
62 end
63% if maplen>64,
64% map=[map',zeros(3,256-maplen)]';
65% end;
66
67 % Read the image
68
69 if rem(width,2) == 1
70 Xt = fread(fp, [width+1, height], 'uchar');
71 X = Xt(1:width, :)';
72 else
73 Xt = fread(fp, [width, height], 'uchar');
74 X = Xt';
75 end
76 X = X + 1;
77 fclose(fp);
78else
79 error('Image file name must end in either ''ras'' or ''rast''.');
80end
81
82
83if nargin == 5
84
85 X = X(ys:ye, xs:xe);
86
87end \ No newline at end of file