-
Notifications
You must be signed in to change notification settings - Fork 540
/
Copy pathprep_im_for_blob.m
31 lines (28 loc) · 1.29 KB
/
prep_im_for_blob.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
function [im, im_scale] = prep_im_for_blob(im, im_means, target_size, max_size)
im = single(im);
if ~isa(im, 'gpuArray')
try
im = bsxfun(@minus, im, im_means);
catch
im_means = imresize(im_means, [size(im, 1), size(im, 2)], 'bilinear', 'antialiasing', false);
im = bsxfun(@minus, im, im_means);
end
im_scale = prep_im_for_blob_size(size(im), target_size, max_size);
target_size = round([size(im, 1), size(im, 2)] * im_scale);
im = imresize(im, target_size, 'bilinear', 'antialiasing', false);
else
% for im as gpuArray
try
im = bsxfun(@minus, im, im_means);
catch
im_means_scale = max(double(size(im, 1)) / size(im_means, 1), double(size(im, 2)) / size(im_means, 2));
im_means = imresize(im_means, im_means_scale);
y_start = floor((size(im_means, 1) - size(im, 1)) / 2) + 1;
x_start = floor((size(im_means, 2) - size(im, 2)) / 2) + 1;
im_means = im_means(y_start:(y_start+size(im, 1)-1), x_start:(x_start+size(im, 2)-1));
im = bsxfun(@minus, im, im_means);
end
im_scale = prep_im_for_blob_size(size(im), target_size, max_size);
im = imresize(im, im_scale);
end
end