summaryrefslogtreecommitdiffstats
path: root/SD-VBS/benchmarks/texture_synthesis/src/matlab/showIm.m
diff options
context:
space:
mode:
Diffstat (limited to 'SD-VBS/benchmarks/texture_synthesis/src/matlab/showIm.m')
-rwxr-xr-xSD-VBS/benchmarks/texture_synthesis/src/matlab/showIm.m221
1 files changed, 0 insertions, 221 deletions
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/showIm.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/showIm.m
deleted file mode 100755
index a9e2bd1..0000000
--- a/SD-VBS/benchmarks/texture_synthesis/src/matlab/showIm.m
+++ /dev/null
@@ -1,221 +0,0 @@
1% RANGE = showIm (MATRIX, RANGE, ZOOM, LABEL, NSHADES )
2%
3% Display a MatLab MATRIX as a grayscale image in the current figure,
4% inside the current axes. If MATRIX is complex, the real and imaginary
5% parts are shown side-by-side, with the same grayscale mapping.
6%
7% If MATRIX is a string, it should be the name of a variable bound to a
8% MATRIX in the base (global) environment. This matrix is displayed as an
9% image, with the title set to the string.
10%
11% RANGE (optional) is a 2-vector specifying the values that map to
12% black and white, respectively. Passing a value of 'auto' (default)
13% sets RANGE=[min,max] (as in MatLab's imagesc). 'auto2' sets
14% RANGE=[mean-2*stdev, mean+2*stdev]. 'auto3' sets
15% RANGE=[p1-(p2-p1)/8, p2+(p2-p1)/8], where p1 is the 10th percentile
16% value of the sorted MATRIX samples, and p2 is the 90th percentile
17% value.
18%
19% ZOOM specifies the number of matrix samples per screen pixel. It
20% will be rounded to an integer, or 1 divided by an integer. A value
21% of 'same' or 'auto' (default) causes the zoom value to be chosen
22% automatically to fit the image into the current axes. A value of
23% 'full' fills the axis region (leaving no room for labels). See
24% pixelAxes.m.
25%
26% If LABEL (optional, default = 1, unless zoom='full') is non-zero, the range
27% of values that are mapped into the gray colormap and the dimensions
28% (size) of the matrix and zoom factor are printed below the image. If label
29% is a string, it is used as a title.
30%
31% NSHADES (optional) specifies the number of gray shades, and defaults
32% to the size of the current colormap.
33
34% Eero Simoncelli, 6/96.
35
36%%TODO: should use "newplot"
37
38function range = showIm( im, range, zoom, label, nshades );
39
40%------------------------------------------------------------
41%% OPTIONAL ARGS:
42
43if (nargin < 1)
44 error('Requires at least one input argument.');
45end
46
47MLv = version;
48
49if isstr(im)
50 if (strcmp(MLv(1),'4'))
51 error('Cannot pass string arg for MATRIX in MatLab version 4.x');
52 end
53 label = im;
54 im = evalin('base',im);
55end
56
57if (exist('range') ~= 1)
58 range = 'auto1';
59end
60
61if (exist('nshades') ~= 1)
62 nshades = size(colormap,1);
63end
64nshades = max( nshades, 2 );
65
66if (exist('zoom') ~= 1)
67 zoom = 'auto';
68end
69
70if (exist('label') ~= 1)
71 if strcmp(zoom,'full')
72 label = 0; % no labeling
73 else
74 label = 1; % just print grayrange & dims
75 end
76end
77
78%------------------------------------------------------------
79
80%% Automatic range calculation:
81if (strcmp(range,'auto1') | strcmp(range,'auto'))
82 if isreal(im)
83 [mn,mx] = range2(im);
84 else
85 [mn1,mx1] = range2(real(im));
86 [mn2,mx2] = range2(imag(im));
87 mn = min(mn1,mn2);
88 mx = max(mx1,mx2);
89 end
90 if any(size(im)==1)
91 pad = (mx-mn)/12; % MAGIC NUMBER: graph padding
92 range = [mn-pad, mx+pad];
93 else
94 range = [mn,mx];
95 end
96
97elseif strcmp(range,'auto2')
98 if isreal(im)
99 stdev = sqrt(var2(im));
100 av = mean2(im);
101 else
102 stdev = sqrt((var2(real(im)) + var2(imag(im)))/2);
103 av = (mean2(real(im)) + mean2(imag(im)))/2;
104 end
105 range = [av-2*stdev,av+2*stdev]; % MAGIC NUMBER: 2 stdevs
106
107elseif strcmp(range, 'auto3')
108 percentile = 0.1; % MAGIC NUMBER: 0<p<0.5
109 [N,X] = histo(im);
110 binsz = X(2)-X(1);
111 N = N+1e-10; % Ensure cumsum will be monotonic for call to interp1
112 cumN = [0, cumsum(N)]/sum(N);
113 cumX = [X(1)-binsz, X] + (binsz/2);
114 ctrRange = interp1(cumN,cumX, [percentile, 1-percentile]);
115 range = mean(ctrRange) + (ctrRange-mean(ctrRange))/(1-2*percentile);
116
117elseif isstr(range)
118 error(sprintf('Bad RANGE argument: %s',range))
119
120end
121
122if ((range(2) - range(1)) <= eps)
123 range(1) = range(1) - 0.5;
124 range(2) = range(2) + 0.5;
125end
126
127
128if isreal(im)
129 factor=1;
130else
131 factor = 1+sqrt(-1);
132end
133
134xlbl_offset = 0; % default value
135
136if (~any(size(im)==1))
137 %% MatLab's "image" rounds when mapping to the colormap, so we compute
138 %% (im-r1)*(nshades-1)/(r2-r1) + 1.5
139 mult = ((nshades-1) / (range(2)-range(1)));
140 d_im = (mult * im) + factor*(1.5 - range(1)*mult);
141end
142
143if isreal(im)
144 if (any(size(im)==1))
145 hh = plot( im);
146 axis([1, prod(size(im)), range]);
147 else
148 hh = image( d_im );
149 axis('off');
150 zoom = pixelAxes(size(d_im),zoom);
151 end
152else
153 if (any(size(im)==1))
154 subplot(2,1,1);
155 hh = plot(real(im));
156 axis([1, prod(size(im)), range]);
157 subplot(2,1,2);
158 hh = plot(imag(im));
159 axis([1, prod(size(im)), range]);
160 else
161 subplot(1,2,1);
162 hh = image(real(d_im));
163 axis('off'); zoom = pixelAxes(size(d_im),zoom);
164 ax = gca; orig_units = get(ax,'Units');
165 set(ax,'Units','points');
166 pos1 = get(ax,'Position');
167 set(ax,'Units',orig_units);
168 subplot(1,2,2);
169 hh = image(imag(d_im));
170 axis('off'); zoom = pixelAxes(size(d_im),zoom);
171 ax = gca; orig_units = get(ax,'Units');
172 set(ax,'Units','points');
173 pos2 = get(ax,'Position');
174 set(ax,'Units',orig_units);
175 xlbl_offset = (pos1(1)-pos2(1))/2;
176 end
177end
178
179if ~any(size(im)==1)
180 colormap(gray(nshades));
181end
182
183if ((label ~= 0))
184 if isstr(label)
185 title(label);
186 h = get(gca,'Title');
187 orig_units = get(h,'Units');
188 set(h,'Units','points');
189 pos = get(h,'Position');
190 pos(1:2) = pos(1:2) + [xlbl_offset, -3]; % MAGIC NUMBER: y pixel offset
191 set(h,'Position',pos);
192 set(h,'Units',orig_units);
193 end
194
195 if (~any(size(im)==1))
196 if (zoom > 1)
197 zformat = sprintf('* %d',round(zoom));
198 else
199 zformat = sprintf('/ %d',round(1/zoom));
200 end
201 if isreal(im)
202 format=[' Range: [%.3g, %.3g] \n Dims: [%d, %d] ', zformat];
203 else
204 format=['Range: [%.3g, %.3g] ---- Dims: [%d, %d]', zformat];
205 end
206 xlabel(sprintf(format, range(1), range(2), size(im,1), size(im,2)));
207 h = get(gca,'Xlabel');
208 set(h,'FontSize', 9); % MAGIC NUMBER: font size!!!
209
210 orig_units = get(h,'Units');
211 set(h,'Units','points');
212 pos = get(h,'Position');
213 pos(1:2) = pos(1:2) + [xlbl_offset, 10]; % MAGIC NUMBER: y offset in points
214 set(h,'Position',pos);
215 set(h,'Units',orig_units);
216
217 set(h,'Visible','on'); % axis('image') turned the xlabel off...
218 end
219end
220
221return;