|
a |
|
b/matlab/add_dataset2.m |
|
|
1 |
function [len_M, num_false] = add_dataset2(image_file, csv_file, dataset_folder, map_file) |
|
|
2 |
|
|
|
3 |
% parameters |
|
|
4 |
% num_false = 26685; |
|
|
5 |
num_false = 26602; |
|
|
6 |
d = 10; |
|
|
7 |
d2 = d*d; |
|
|
8 |
N = 101; % must be odd |
|
|
9 |
|
|
|
10 |
R = (N-1)/2; |
|
|
11 |
|
|
|
12 |
% load image and csv files |
|
|
13 |
A = imread(image_file); |
|
|
14 |
M = csvread(csv_file); |
|
|
15 |
map = imread(map_file); |
|
|
16 |
|
|
|
17 |
[A_height, A_width, ~] = size(A); |
|
|
18 |
|
|
|
19 |
% find the centroids |
|
|
20 |
len_M = size(M,1); |
|
|
21 |
P = zeros(len_M,2); |
|
|
22 |
for i=1:len_M; |
|
|
23 |
tmp = M(i,:); |
|
|
24 |
tmp = tmp(tmp~=0); |
|
|
25 |
len_tmp = size(tmp,2); |
|
|
26 |
sum_X = 0; |
|
|
27 |
sum_Y = 0; |
|
|
28 |
for j=1:len_tmp/2 |
|
|
29 |
sum_X = sum_X + tmp(2*j-1); |
|
|
30 |
sum_Y = sum_Y + tmp(2*j); |
|
|
31 |
end |
|
|
32 |
mean_X = 2*sum_X/len_tmp; |
|
|
33 |
mean_Y = 2*sum_Y/len_tmp; |
|
|
34 |
P(i,:) = [mean_Y mean_X]; |
|
|
35 |
end |
|
|
36 |
M = round(P); |
|
|
37 |
|
|
|
38 |
% create negative dataset |
|
|
39 |
H = A_height - N + 1; |
|
|
40 |
W = A_width - N + 1; |
|
|
41 |
B = cell(1,num_false); |
|
|
42 |
for i=1:num_false |
|
|
43 |
flag = true; |
|
|
44 |
while flag |
|
|
45 |
X = randi(W) + R; |
|
|
46 |
Y = randi(H) + R; |
|
|
47 |
if randi([0,255]) < map(Y,X) |
|
|
48 |
flag = isPos(X,Y,M,d); |
|
|
49 |
end |
|
|
50 |
end |
|
|
51 |
y1 = Y - R; |
|
|
52 |
y2 = Y + R; |
|
|
53 |
x1 = X - R; |
|
|
54 |
x2 = X + R; |
|
|
55 |
B{i} = A(y1:y2, x1:x2, :); |
|
|
56 |
end |
|
|
57 |
|
|
|
58 |
% write set of images to file |
|
|
59 |
n = length(dir([dataset_folder '*.png'])); |
|
|
60 |
for i=1:num_false |
|
|
61 |
file = [dataset_folder num2str(i+n,'%02u') '.png']; |
|
|
62 |
imwrite(B{i}, file, 'png'); |
|
|
63 |
end |