Diff of /matlab/add_dataset2.m [000000] .. [b758a2]

Switch to unified view

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