forked from ShaoqingRen/SPP_net
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathshowboxes.m
111 lines (104 loc) · 2.85 KB
/
showboxes.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
function showboxes(im, boxes, out)
% Draw bounding boxes on top of an image.
% showboxes(im, boxes, out)
%
% If out is given, a pdf of the image is generated (requires export_fig).
% AUTORIGHTS
% -------------------------------------------------------
% Copyright (C) 2011-2012 Ross Girshick
% Copyright (C) 2008, 2009, 2010 Pedro Felzenszwalb, Ross Girshick
% Copyright (C) 2007 Pedro Felzenszwalb, Deva Ramanan
%
% This file is part of the voc-releaseX code
% (http://people.cs.uchicago.edu/~rbg/latent/)
% and is available under the terms of an MIT-like license
% provided in COPYING. Please retain this notice and
% COPYING if you use this file (or a portion of it) in
% your project.
% -------------------------------------------------------
if nargin > 2
% different settings for producing pdfs
print = true;
%wwidth = 2.25;
%cwidth = 1.25;
cwidth = 1.4;
wwidth = cwidth + 1.1;
imsz = size(im);
% resize so that the image is 300 pixels per inch
% and 1.2 inches tall
scale = 1.2 / (imsz(1)/300);
im = imresize(im, scale, 'method', 'cubic');
%f = fspecial('gaussian', [3 3], 0.5);
%im = imfilter(im, f);
boxes = (boxes-1)*scale+1;
else
print = false;
cwidth = 2;
end
image(im);
if print
truesize(gcf);
end
axis image;
axis off;
set(gcf, 'Color', 'white');
if ~isempty(boxes)
numfilters = floor(size(boxes, 2)/4);
if print
% if printing, increase the contrast around the boxes
% by printing a white box under each color box
for i = 1:numfilters
x1 = boxes(:,1+(i-1)*4);
y1 = boxes(:,2+(i-1)*4);
x2 = boxes(:,3+(i-1)*4);
y2 = boxes(:,4+(i-1)*4);
% remove unused filters
del = find(((x1 == 0) .* (x2 == 0) .* (y1 == 0) .* (y2 == 0)) == 1);
x1(del) = [];
x2(del) = [];
y1(del) = [];
y2(del) = [];
if i == 1
w = wwidth;
else
w = wwidth;
end
% if i == 13+1 || i == 14+1
% c = 'k';
% w = cwidth + 0.5;
% else
c = 'w';
% end
line([x1 x1 x2 x2 x1]', [y1 y2 y2 y1 y1]', 'color', c, 'linewidth', w);
end
end
% draw the boxes with the detection window on top (reverse order)
for i = numfilters:-1:1
x1 = boxes(:,1+(i-1)*4);
y1 = boxes(:,2+(i-1)*4);
x2 = boxes(:,3+(i-1)*4);
y2 = boxes(:,4+(i-1)*4);
% remove unused filters
del = find(((x1 == 0) .* (x2 == 0) .* (y1 == 0) .* (y2 == 0)) == 1);
x1(del) = [];
x2(del) = [];
y1(del) = [];
y2(del) = [];
if i == 1
c = 'r'; %[160/255 0 0];
s = '-';
% elseif i == 13+1 || i == 14+1
% c = 'c';
% s = '--';
else
c = 'b';
s = '-';
end
line([x1 x1 x2 x2 x1]', [y1 y2 y2 y1 y1]', 'color', c, 'linewidth', cwidth, 'linestyle', s);
end
end
% save to pdf
if print
% requires export_fig from http://www.mathworks.com/matlabcentral/fileexchange/23629-exportfig
export_fig([out]);
end