]> AND Private Git Repository - these_gilles.git/blob - THESE/codes/graphe/Ncut_9/build_scene.m
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
3 sep
[these_gilles.git] / THESE / codes / graphe / Ncut_9 / build_scene.m
1 function [data,size_cluster] = build_scene(caseid)
2 % [data,size_cluster] = build_scene(case)
3 %
4 % case 1: random gaussian shaped blobs.
5 % case 2: one circular plus some gaussian blob, one inside, one outside 
6 % case 3: one circular plus some gaussian blob, one inside, two outside 
7 % Jianbo Shi, 1997
8
9
10 if caseid ==1,
11   sigma_h = 2;
12   sigma_v = 10;
13
14   s_v = 10;
15   s_h = 30;
16
17   a = [sigma_h*randn(1,40);sigma_v*randn(1,40)];
18   b = [s_h;s_v]*ones(1,50) + [sigma_h*randn(1,50);...
19         sigma_v*randn(1,50)];
20
21   data = [a,b];
22   size_cluster = [40,50];
23
24 elseif caseid == 2,
25    num_cluster = 3;
26    radius = 15;
27    size_cluster = [80,20,20];
28
29    raw_data = randn(2,sum(size_cluster));
30    tmp = rand(2,size_cluster(1))-0.5;
31
32    [t,idt] = sort(tmp(2,:));
33    r_noise = 4;
34    raw_data2 = [tmp(1,idt)*r_noise;...
35              tmp(2,idt)*2];
36
37    data = [(radius-raw_data2(1,1:size_cluster(1))).*...
38         cos(pi*raw_data2(2,1:size_cluster(1)));...
39         (radius-raw_data2(1,1:size_cluster(1))).*...
40         sin(pi*raw_data2(2,1:size_cluster(1)))];
41
42    
43    center = [0,0];sig = [1,2];
44    % size_cluster_base
45    scb = size_cluster(1)+1;
46    scb_next = scb+size_cluster(2)-1;
47    data = [data,[center(1)+sig(1)*raw_data(1,scb:scb_next);...
48                 center(2)+sig(2)*raw_data(2,scb:scb_next)]];
49
50
51    center = [radius+10,0]; sig = [1,1];
52    scb = scb_next+1;
53    scb_next = scb+size_cluster(3)-1;
54    data = [data,[center(1)+sig(1)*raw_data(1,scb:scb_next);...
55                 center(2)+sig(2)*raw_data(2,scb:scb_next)]];
56 elseif caseid==3,
57    num_cluster = 4;
58    radius = 15;
59    size_cluster = [80,10,20,20];
60
61    raw_data = randn(2,sum(size_cluster));
62    tmp = rand(2,size_cluster(1))-0.5;
63
64    [t,idt] = sort(tmp(2,:));
65    r_noise = 4;
66    raw_data2 = [tmp(1,idt)*r_noise;...
67              tmp(2,idt)*2];
68
69    data = [(radius-raw_data2(1,1:size_cluster(1))).*...
70         cos(pi*raw_data2(2,1:size_cluster(1)));...
71         (radius-raw_data2(1,1:size_cluster(1))).*...
72         sin(pi*raw_data2(2,1:size_cluster(1)))];
73
74    
75    center = [0,0];sig = [1,2];
76    % size_cluster_base
77    scb = size_cluster(1)+1;
78    scb_next = scb+size_cluster(2)-1;
79    data = [data,[center(1)+sig(1)*raw_data(1,scb:scb_next);...
80                 center(2)+sig(2)*raw_data(2,scb:scb_next)]];
81
82
83    center = [radius+25,8]; sig = [1,2.3];
84    scb = scb_next+1;
85    scb_next = scb+size_cluster(3)-1;
86    data = [data,[center(1)+sig(1)*raw_data(1,scb:scb_next);...
87                 center(2)+sig(2)*raw_data(2,scb:scb_next)]];
88
89    center = [radius+25,-6]; sig = [1.5,2.4];
90    scb = scb_next+1;
91    scb_next = scb+size_cluster(4)-1;
92    data = [data,[center(1)+sig(1)*raw_data(1,scb:scb_next);...
93                 center(2)+sig(2)*raw_data(2,scb:scb_next)]];
94 elseif caseid == 4,
95    size_cluster = [100,10,10];
96    radius = 10;
97    tmp = rand(2,size_cluster(1))-0.5;
98
99    [t,idt] = sort(tmp(2,:));
100    r_noise = 4;
101    raw_data2 = [tmp(1,idt)*r_noise;...
102              tmp(2,idt)*2];
103
104    data = [(radius-raw_data2(1,1:size_cluster(1))).*...
105         cos(pi*raw_data2(2,1:size_cluster(1)));...
106         (radius-raw_data2(1,1:size_cluster(1))).*...
107         sin(pi*raw_data2(2,1:size_cluster(1)))];
108
109    
110    result = zeros(1,size_cluster(1));
111
112   % for j =1:size_cluster(1),
113 %       result(j) = sum(sum(A(1:j,1:j)))/j;
114 %   end
115
116 end