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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
|
#N canvas 326 0 854 742 10;
#X obj 556 -8 bng 15 250 50 0 refresh_var empty load-presets 17 7 0
10 -257985 -1 -1;
#X obj 161 116 pix_grey;
#X floatatom 117 -50 5 0 0 1 bottom bottom -;
#X floatatom 152 -33 5 0 0 1 top top -;
#X obj 161 156 pix_texture;
#X obj 152 19 t b f;
#X floatatom 194 -14 5 0 0 1 right right -;
#X obj 194 19 t b f;
#X floatatom 235 1 5 0 0 1 left left -;
#X obj 235 19 t b f;
#X obj 35 16 t b f;
#X obj 15 43 pack f f f;
#X obj 73 16 t b f;
#X floatatom 35 -17 5 0 0 1 thresh thresh -;
#X obj 304 19 t b f;
#X obj 345 19 t b f;
#X floatatom 15 -33 5 0 0 1 mode mode -;
#X floatatom 73 -2 5 0 0 1 tip_scalar tip_scalar -;
#X floatatom 273 -58 5 0 0 1 pix_avg pix_avg -;
#X floatatom 304 -42 5 0 0 1 pix_tip pix_tip -;
#X floatatom 345 -27 5 0 0 1 min_entry_size min_entry_size -;
#X obj 384 20 t b f;
#X floatatom 384 -12 5 0 0 1 min_perim min_perim -;
#X floatatom 424 3 5 0 0 1 pix_samp pix_samp -;
#X obj 424 20 t b f;
#X obj 273 47 pack f f f f f;
#X obj 161 76 gemhead 1;
#X obj 161 96 pix_video;
#N canvas 0 0 450 300 print 0;
#X obj 131 36 inlet;
#X obj 131 57 spigot;
#X obj 131 78 print;
#X obj 228 27 loadbang;
#X msg 228 48 0;
#X obj 142 104 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X text 103 105 print?;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 3 0 4 0;
#X connect 4 0 5 0;
#X connect 5 0 1 1;
#X coords 0 -1 1 1 60 23 2 100 100;
#X restore 32 204 pd print;
#N canvas 0 0 450 300 print 0;
#X obj 131 36 inlet;
#X obj 131 57 spigot;
#X obj 131 78 print;
#X obj 228 27 loadbang;
#X msg 228 48 0;
#X obj 142 104 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X text 103 105 print?;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 3 0 4 0;
#X connect 4 0 5 0;
#X connect 5 0 1 1;
#X coords 0 -1 1 1 60 23 2 100 100;
#X restore 100 204 pd print;
#N canvas 0 0 450 300 print 0;
#X obj 131 36 inlet;
#X obj 131 57 spigot;
#X obj 131 78 print;
#X obj 228 27 loadbang;
#X msg 228 48 0;
#X obj 142 104 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X text 103 105 print?;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 3 0 4 0;
#X connect 4 0 5 0;
#X connect 5 0 1 1;
#X coords 0 -1 1 1 60 23 2 100 100;
#X restore 167 204 pd print;
#N canvas 0 0 450 300 print 0;
#X obj 131 36 inlet;
#X obj 131 57 spigot;
#X obj 131 78 print;
#X obj 228 27 loadbang;
#X msg 228 48 0;
#X obj 142 104 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X text 103 105 print?;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 3 0 4 0;
#X connect 4 0 5 0;
#X connect 5 0 1 1;
#X coords 0 -1 1 1 60 23 2 100 100;
#X restore 235 204 pd print;
#N canvas 0 0 450 300 print 0;
#X obj 131 36 inlet;
#X obj 131 57 spigot;
#X obj 131 78 print;
#X obj 228 27 loadbang;
#X msg 228 48 0;
#X obj 142 104 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X text 103 105 print?;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 3 0 4 0;
#X connect 4 0 5 0;
#X connect 5 0 1 1;
#X coords 0 -1 1 1 60 23 2 100 100;
#X restore 301 204 pd print;
#N canvas 0 0 450 300 print 0;
#X obj 131 36 inlet;
#X obj 131 57 spigot;
#X obj 131 78 print;
#X obj 228 27 loadbang;
#X msg 228 48 0;
#X obj 142 104 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X text 103 105 print?;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 3 0 4 0;
#X connect 4 0 5 0;
#X connect 5 0 1 1;
#X coords 0 -1 1 1 60 23 2 100 100;
#X restore 369 204 pd print;
#N canvas 716 528 225 177 gemwin 0;
#X obj 61 138 gemwin;
#X msg 46 83 create \, 1;
#X msg 142 99 0 \, destroy;
#X obj 24 12 loadbang;
#X obj 24 38 t b b b;
#X msg 126 65 dimen 320 240;
#X connect 1 0 0 0;
#X connect 2 0 0 0;
#X connect 3 0 4 0;
#X connect 4 1 1 0;
#X connect 4 2 5 0;
#X connect 5 0 0 0;
#X restore 556 -49 pd gemwin;
#N canvas 621 151 306 719 graphs-outlet2 0;
#N canvas 0 22 450 300 (subpatch) 0;
#X array x 150 float 1;
#A 0 24 293 290 286 281 274 269 264 261 260 258 253 248 246 250 258
266 274 282 279 286 295 295 187 195 203 211 219 227 235 243 251 259
265 267 267 268 271 275 277 278 278 277 277 279 283 287 289 292 296
300 305 309 311 311 311 311 311 311 311 311 311 311 311 311 311 311
311 311 311 311 311 311 311 311 309 304 296 288 280 273 268 262 256
248 240 232 224 216 208 200 192 184 176 168 160 152 144 136 128 120
112 104 96 88 80 72 64 56 48 40 32 24 16 11 9 9 9 9 9 9 9 9 9 9 9 9
9 9 9 13 169 169 164 162 167 170 166 162 165 169 13 97 105 113 120
122 118 110 172;
#X coords 0 320 149 0 300 140 1;
#X restore -136 -398 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X array y 150 float 1;
#A 0 253 470 467 460 453 448 446 446 448 452 458 462 467 471 472 472
472 472 472 472 472 470 470 445 444 443 442 441 440 439 438 437 435
431 425 417 413 415 420 420 414 406 398 390 387 389 397 405 412 420
426 432 432 427 419 411 403 395 387 379 371 363 355 347 339 331 323
315 307 299 291 283 275 267 259 253 250 249 249 249 251 253 252 250
249 249 249 249 249 249 249 249 249 249 249 249 249 249 249 249 249
249 249 249 249 249 249 249 249 249 249 249 249 250 252 258 266 274
282 290 298 306 314 322 330 338 346 354 362 370 361 472 471 470 470
471 471 470 470 471 472 464 461 464 467 469 471 472 472 471;
#X coords 0 480 149 0 300 140 1;
#X restore -137 -245 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X array angle 150 float 1;
#A 0 0 0.588003 -0.785398 -0.266252 0.101103 0.330297 0.239743 0.380506
0.588003 0.737815 -0.0767719 -0.574305 0.110657 0.321751 1.78947 0.244979
0 0 0 0 0 0 0 0.124355 0 0 0 0 0 0 0 0 0.120624 0.343024 0.661043 0.321751
-0.244979 -1.91382 -0.308053 0.896055 1.40565 0.165149 0.124355 -0.124355
-0.588003 -1.44644 -0.643501 -0.218669 0.159913 0.0587558 0.124355
0.106736 0.876058 1.19029 0.380506 6.12303e-17 6.12303e-17 6.12303e-17
6.12303e-17 6.12303e-17 6.12303e-17 6.12303e-17 6.12303e-17 6.12303e-17
6.12303e-17 6.12303e-17 6.12303e-17 6.12303e-17 6.12303e-17 6.12303e-17
6.12303e-17 6.12303e-17 6.12303e-17 6.12303e-17 6.12303e-17 0.321751
0.708626 0.416065 0.124355 1.22461e-16 0.2783 0.102207 -0.545655 -0.156602
0.197396 0.124355 1.22461e-16 1.22461e-16 1.22461e-16 1.22461e-16 1.22461e-16
1.22461e-16 1.22461e-16 1.22461e-16 1.22461e-16 1.22461e-16 1.22461e-16
1.22461e-16 1.22461e-16 1.22461e-16 1.22461e-16 1.22461e-16 1.22461e-16
1.22461e-16 1.22461e-16 1.22461e-16 1.22461e-16 1.22461e-16 1.22461e-16
1.22461e-16 1.22461e-16 1.22461e-16 1.22461e-16 0.124355 0.256151 0.868539
0.321751 -6.12303e-17 -6.12303e-17 -6.12303e-17 -6.12303e-17 -6.12303e-17
-6.12303e-17 -6.12303e-17 -6.12303e-17 -6.12303e-17 -6.12303e-17 -6.12303e-17
-6.12303e-17 -6.12303e-17 0 1.40565 1.73594 1.3734 0.197396 2.9442
0.197396 2.89661 0.244979 2.81984 0.0767719 0 0.432408 0.104877 0 0.080471
-0.507098 -2.11122 -0.244979 0;
#X coords 0 3.14 149 -3.14 300 200 1;
#X restore -137 -90 graph;
#X obj -131 118 bng 15 250 50 0 cleartables empty empty 17 7 0 10 -257985
-1 -1;
#X text -113 117 clear tables;
#X obj -39 -460 - 480;
#X obj -39 -441 abs;
#X obj -137 -460 tabwrite x;
#X obj -39 -422 tabwrite y;
#X obj 18 -463 tabwrite angle;
#X obj -133 -530 unpack f f f f;
#X obj -133 -506 s o2n;
#X obj -88 -506 s o2x;
#X obj -44 -505 s o2y;
#X obj 1 -505 s o2a;
#X obj -80 -480 r o2n;
#X obj -137 -480 r o2x;
#X obj -39 -480 r o2y;
#X obj 18 -482 r o2a;
#X obj 18 -441 r o2n;
#X obj 99 -482 r o2n;
#X obj -133 -574 inlet;
#X connect 5 0 6 0;
#X connect 6 0 8 0;
#X connect 10 0 11 0;
#X connect 10 1 12 0;
#X connect 10 2 13 0;
#X connect 10 3 14 0;
#X connect 15 0 7 1;
#X connect 16 0 7 0;
#X connect 17 0 5 0;
#X connect 18 0 9 0;
#X connect 19 0 8 1;
#X connect 20 0 9 1;
#X connect 21 0 10 0;
#X restore 100 265 pd graphs-outlet2;
#N canvas 0 0 450 300 print 0;
#X obj 131 36 inlet;
#X obj 131 57 spigot;
#X obj 228 27 loadbang;
#X msg 228 48 0;
#X obj 142 104 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X text 103 105 graph?;
#X obj 131 78 outlet;
#X connect 0 0 1 0;
#X connect 1 0 6 0;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 4 0 1 1;
#X coords 0 -1 1 1 60 23 2 100 100;
#X restore 100 238 pd print;
#N canvas 178 290 743 248 presets 0;
#X text 280 16 head;
#X text 229 16 bottom;
#X text 319 16 right;
#X text 363 16 left;
#X msg 18 30 1;
#X msg 283 33 5;
#X msg 366 33 5;
#X msg 325 33 315;
#X msg 240 33 235;
#X msg 561 22 4;
#X msg 488 24 20;
#X msg 524 23 5;
#X msg 637 21 8;
#X msg 598 22 10;
#X msg 129 30 0.4;
#X msg 71 30 0.74;
#X obj 18 51 s mode;
#X obj 71 51 s thresh;
#X obj 129 51 s tip_scalar;
#X obj 240 54 s bottom;
#X obj 325 54 s right;
#X obj 366 75 s left;
#X obj 488 45 s pix_avg;
#X obj 524 66 s pix_tip;
#X obj 598 43 s min_perim;
#X obj 637 63 s pix_samp;
#X obj 283 75 s top;
#X obj 286 -58 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X obj 286 -78 r refresh_var;
#X obj 64 -15 bang;
#X obj 286 -20 bang;
#X obj 550 -20 bang;
#X obj 561 86 s min_entry_size;
#X text 20 114 These presets are what I use for the MANO Controller
at 320x240.;
#X obj 307 -59 loadbang;
#X connect 4 0 16 0;
#X connect 5 0 26 0;
#X connect 6 0 21 0;
#X connect 7 0 20 0;
#X connect 8 0 19 0;
#X connect 9 0 32 0;
#X connect 10 0 22 0;
#X connect 11 0 23 0;
#X connect 12 0 25 0;
#X connect 13 0 24 0;
#X connect 14 0 18 0;
#X connect 15 0 17 0;
#X connect 27 0 29 0;
#X connect 27 0 30 0;
#X connect 27 0 31 0;
#X connect 28 0 27 0;
#X connect 29 0 15 0;
#X connect 29 0 4 0;
#X connect 29 0 14 0;
#X connect 30 0 6 0;
#X connect 30 0 7 0;
#X connect 30 0 5 0;
#X connect 30 0 8 0;
#X connect 31 0 11 0;
#X connect 31 0 10 0;
#X connect 31 0 9 0;
#X connect 31 0 13 0;
#X connect 31 0 12 0;
#X connect 34 0 27 0;
#X restore 556 -30 pd presets;
#X text 456 52 inlet 1;
#X text 458 71 mode 0: regular function (others used for debugging)
;
#X text 457 83 thresh: threshold for contrast step;
#X text 459 200 pix_avg: number of pixels to average the contour;
#X text 458 234 min_entry_size: minimum entry size to be considered
as a hand;
#X text 458 256 min_perim: minimum perimeter to be considered a hand
;
#X text 459 308 OUTLETS;
#X text 459 374 outlet 2: elements in the smoothed contour;
#X text 460 408 outlet 3: peaks found in the contour;
#X text 460 449 outlet 4: valleys found in the contour;
#X text 460 491 outlet 5: contours found;
#X text 461 542 outlet 6: end of algorithm report;
#X text 457 148 inlet 2: defines the bounds of the anrea of analysis
;
#X text 484 160 bottom \, top \, right \, left;
#X text 457 181 inlet 3: parameters of contour analysis;
#X text 458 212 pix_tip: number of contiguous pixels higher than tip_scalar
to consider something a peak or valley;
#X text 482 118 mode \, thresh \, tip_scalar;
#X text 457 94 tip scalar: scalar of maximum angle to consider something
a peak or valley;
#X text 458 267 pix_samp: period of sampling of the averaged contour
;
#X text 483 281 pix_avg \, pix_tip \, min_entry_size \, min_perim \,
pix_samp;
#X text 460 592 order of outlets: 1 2 5 3 4 6;
#X text 460 340 outlet 1: elements in the raw contour (only in mode
2);
#X text 60 301 pix_mano is an object that tracks light reflecting objects
(eg. hands) over a light absorbing background (eg. black cloth). Light
reflecting objects need to enter the video frame from one of the sides
to be recognized. For example \, a white circle in the center will
not be recognized as there is no entry pount in the borders of the
frame.;
#X text 58 426 Roughly \, the object works by setting a threshold to
discriminate bewteen black and white pixels. shapes formed of white
pixels are analyzed in the order of largest entry section.;
#X text 581 628 support information in www.jaimeoliver.pe;
#X text 59 483 For each object an analysis of its contour is achieved.
(see graph option in outlet two while entering your hand into the frame).
The contours formed by a hand are averaged for smoothing and sampled
\, and then are plotted as x \, y coordinates and variation in angle
with respect to the previous sampled point. Ana analysis of this contour
provides tips (positive peaks) and valleys (negative peaks);
#X text 76 576 This object was programmed as part of the Silent Percussion
Proect \, for use in the MANO Controller. For more infomation: http://www.jaimeoliver.pe
;
#X obj 117 47 pack f f f f;
#X text 695 642 jaime.oliver@gmail.com;
#X text 715 657 joliverl-2010 v0.01;
#X obj 161 136 pix_mano;
#X text 460 326 outlet 0: the analyzed video image;
#X obj 161 176 rectangle 5.33 4;
#X text 60 383 Although this version is fully functional \, there are
still a few bugs to work on and optimizations to be achieved. It is
still in an experimental level;
#X text 476 353 [index \, x coordinate \, y coordinate \, angle];
#X text 475 387 [index \, x coordinate \, y coordinate \, angle];
#X text 476 421 [index of contour \, index of tip \, position (x \,
y) \, magnitude \, angle \, position in contour];
#X text 476 462 [index of contour \, index of tip \, position (x \,
y) \, magnitude \, angle \, position in contour];
#X text 476 504 [index of contour \, entry_point (x \, y) \, area \,
direction \, center (x \, y) \, perimeter \, entr_size \, bounds: right
(x \, y) \, left (x \, y) \, top (x \, y) \, bottom (x \, y).];
#X text 477 555 if there were any contours = 1;
#X text 477 565 if there were no contours = 0;
#X connect 1 0 68 0;
#X connect 2 0 65 0;
#X connect 3 0 5 0;
#X connect 4 0 70 0;
#X connect 5 0 65 0;
#X connect 5 1 65 1;
#X connect 6 0 7 0;
#X connect 7 0 65 0;
#X connect 7 1 65 2;
#X connect 8 0 9 0;
#X connect 9 0 65 0;
#X connect 9 1 65 3;
#X connect 10 0 11 0;
#X connect 10 1 11 1;
#X connect 11 0 68 1;
#X connect 12 0 11 0;
#X connect 12 1 11 2;
#X connect 13 0 10 0;
#X connect 14 0 25 0;
#X connect 14 1 25 1;
#X connect 15 0 25 0;
#X connect 15 1 25 2;
#X connect 16 0 11 0;
#X connect 17 0 12 0;
#X connect 18 0 25 0;
#X connect 19 0 14 0;
#X connect 20 0 15 0;
#X connect 21 0 25 0;
#X connect 21 1 25 3;
#X connect 22 0 21 0;
#X connect 23 0 24 0;
#X connect 24 0 25 0;
#X connect 24 1 25 4;
#X connect 25 0 68 3;
#X connect 26 0 27 0;
#X connect 27 0 1 0;
#X connect 36 0 35 0;
#X connect 65 0 68 2;
#X connect 68 0 4 0;
#X connect 68 1 28 0;
#X connect 68 2 29 0;
#X connect 68 2 36 0;
#X connect 68 3 30 0;
#X connect 68 4 31 0;
#X connect 68 5 32 0;
#X connect 68 6 33 0;
|