#N canvas 574 31 1163 721 10; #X obj 277 131 pix_grey; #X msg 302 159 reset; #X obj 277 188 pix_background; #X msg 370 167 \$1 \$1 \$1; #X msg 370 132 0.5; #X floatatom 370 151 5 0 0 0 - - -; #N canvas 486 104 585 607 cursor 0; #X obj 19 36 inlet; #X obj 231 32 inlet; #X obj 151 346 translateXYZ; #X text 62 150 0.64; #X text 34 151 1; #X obj 20 63 t f f; #X obj 34 176 -; #X text 59 177 X-Range; #X text 280 176 Y-Range; #X obj 53 215 expr (8/$f1); #X obj 20 215 -; #X obj 38 241 *; #X obj 26 95 max 0; #X obj 68 95 min 10; #X obj 58 131 f; #X obj 30 131 f; #X obj 39 267 - 4; #X text 278 148 0.64; #X text 250 147 1; #X obj 232 60 t f f; #X obj 250 172 -; #X obj 267 215 expr (8/$f1); #X obj 233 215 -; #X obj 251 241 *; #X obj 238 92 max 0; #X obj 280 92 min 10; #X obj 272 128 f; #X obj 246 127 f; #X obj 221 268 expr (-1*$f1)+4; #X obj 436 30 inlet; #X obj 437 61 * 10; #X obj 150 323 gemhead 15; #X obj 357 496 circle 0.1; #X obj 33 410 separator; #X obj 204 410 separator; #X obj 205 496 rectangle 0.2 0.01; #X obj 357 410 separator; #X msg 367 454 draw line; #X obj 367 433 loadbang; #X obj 152 371 colorRGB 1 0 0 1; #X obj 32 495 rectangle 0.01 0.2; #X msg 438 454 width \$1; #X obj 437 398 int; #X obj 438 425 + 1; #X text 433 10 size; #X text 20 13 X-coordinate; #X text 221 11 Y-coordinate; #X text 278 370 color red; #X connect 0 0 5 0; #X connect 1 0 19 0; #X connect 2 0 39 0; #X connect 5 0 10 0; #X connect 5 0 12 0; #X connect 5 1 13 0; #X connect 6 0 9 0; #X connect 9 0 11 1; #X connect 10 0 11 0; #X connect 11 0 16 0; #X connect 12 0 15 0; #X connect 13 0 14 0; #X connect 14 0 6 1; #X connect 14 0 10 1; #X connect 14 0 13 1; #X connect 15 0 6 0; #X connect 15 0 12 1; #X connect 16 0 2 1; #X connect 19 0 22 0; #X connect 19 0 24 0; #X connect 19 1 25 0; #X connect 20 0 21 0; #X connect 21 0 23 1; #X connect 22 0 23 0; #X connect 23 0 28 0; #X connect 24 0 27 0; #X connect 25 0 26 0; #X connect 26 0 20 1; #X connect 26 0 22 1; #X connect 26 0 25 1; #X connect 27 0 20 0; #X connect 27 0 24 1; #X connect 28 0 2 2; #X connect 29 0 30 0; #X connect 30 0 32 1; #X connect 30 0 42 0; #X connect 31 0 2 0; #X connect 33 0 40 0; #X connect 34 0 35 0; #X connect 36 0 32 0; #X connect 37 0 32 0; #X connect 38 0 37 0; #X connect 39 0 33 0; #X connect 39 0 34 0; #X connect 39 0 36 0; #X connect 41 0 32 0; #X connect 42 0 43 0; #X connect 43 0 41 0; #X restore 282 510 pd cursor; #X obj 612 110 separator; #X obj 612 131 pix_texture; #X obj 612 152 square 4; #X obj 62 264 pix_texture; #X obj 62 244 alpha; #X obj 62 224 colourRGB 1 1 1 0.65; #X obj 62 284 translateXYZ -2.4 -2.4 0; #X obj 427 49 gemhead 10; #X obj 62 205 spigot; #X obj 99 160 tgl 20 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 ; #X obj 427 70 pix_video; #X obj 16 114 gemwin 30; #X msg 24 47 create; #X msg 25 71 destroy; #X obj 19 18 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 ; #X text 335 440 size; #X text 315 440 Y; #X text 289 439 X; #X text 859 10 by Ben Bogart (ben@ekran.org); #X obj 62 304 square 1.5; #X obj 277 106 separator; #X obj 278 423 pix_blob; #X obj 205 15 loadbang; #X msg 202 34 0; #X obj 426 15 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 ; #X msg 33 92 dimen 300 300; #X text 48 16 gem window; #X text 449 13 live input camera [firewire/usb]; #X text 610 224 [pix_background] 'removes' the background of an image by comparing a static image in memory to an incoming video stream. all values withing a given range are turned black. for best effect \, place a camera on a static scene like a blank wall and hit 'reset'. then set the range control to cover any variance in the background. when a new object enters the scene it will be the only thing draw against a black background. use pix_chroma_key or pix_compare to add in images in place of the black.; #X text 611 199 --------------; #X text 607 85 image of the camera; #X text 608 93 --------------------; #X text 610 392 Inlet 2: float: range ( == ); #X text 609 341 Inlet 2: list: range \; in RGBA mode this is <+-red> <+-green> <+-blue> \; in YUV-mode this is <+-luma> <+-Cb> <+-Cr> \; in Gray-mode only the first value is important <+-gray>; #X text 612 211 Description: separate an object from background; #X text 215 80 motion tracking; #X text 216 88 ---------------; #X text 34 167 --------; #X text 440 171 threshold; #X text 605 446 [pix_blob] will calculate the "center-of-gravity" of a certain (combination of) channel(s).; #X text 604 434 --------------; #X text 607 476 You can choose the combination of channels used for the calculation by changing the . Valid modes are: 0(gray)(default) \, 1(red) \, 2(green) \, 3(blue) \, 4(alpha); #X text 608 520 pE: selecting "red" (1) will weight position of each pixel with its red-value. Pixels with "more" red will be weighted stronger \, thus moving the "center of gravity" -- the blob position -- nearer to themself. The total amount of "red" in the image defines the size of the blob.; #X text 608 587 You can specify a custom combination of channels with . pE: "1 0 2" will give more weight to the blue-channel than to the red-channel \, green- and alpha-values will be ignored. ; #X text 608 642 Specifing only one single color-weight \, is the same as " 0"; #X text 387 190 ------------------------------- PIX_BACKGROUND; #X text 380 424 ------------------------------- PIX_BLOB; #X text 858 23 changed by Sara Kolster; #X text 857 36 [text from GEM help patches]; #X msg 304 373 ; #X msg 329 395 ; #X text 273 529 representation of the 'movement'; #X text 274 541 by a cursor. Click on pd cursor; #X text 273 553 to open the subpatch; #X text 37 441 outlet 1: gemlist; #X text 37 482 outlet 4: size; #X text 37 468 outlet 3: Y coordinate; #X text 37 454 outlet 2: X coordinate; #X text 35 496 [upper left corner is 1 \, 1; #X text 36 509 down right corner is 0 \, 0]; #X text 35 430 ----------------; #X text 37 421 OUTPUT PIX_BLOB ---------------; #X text 34 159 preview; #X obj 319 668 send tracking; #X obj 372 594 change; #X text 317 686 send coordinates to soundpatch; #X text 856 66 1] make gemwindow; #X text 856 79 2] turn on rendering; #X text 856 92 3] set the background; #X text 857 116 5] move object and receive information; #X text 856 104 4] turn on live input camera; #X msg 372 615 s \$1; #X msg 331 615 y \$1; #X msg 292 615 x \$1; #X msg 110 571 send x \$1; #X msg 153 595 send y \$1; #X msg 178 618 send s \$1; #X msg 51 685 connect localhost 3000; #X obj 124 643 netsend; #X connect 0 0 2 0; #X connect 1 0 2 0; #X connect 2 0 15 0; #X connect 2 0 28 0; #X connect 3 0 2 1; #X connect 4 0 5 0; #X connect 5 0 3 0; #X connect 7 0 8 0; #X connect 8 0 9 0; #X connect 10 0 13 0; #X connect 11 0 10 0; #X connect 12 0 11 0; #X connect 13 0 26 0; #X connect 14 0 17 0; #X connect 15 0 12 0; #X connect 16 0 15 1; #X connect 17 0 7 0; #X connect 17 0 27 0; #X connect 19 0 18 0; #X connect 20 0 18 0; #X connect 21 0 18 0; #X connect 27 0 0 0; #X connect 28 1 6 0; #X connect 28 1 80 0; #X connect 28 1 81 0; #X connect 28 2 6 1; #X connect 28 2 79 0; #X connect 28 2 82 0; #X connect 28 3 6 2; #X connect 28 3 71 0; #X connect 28 3 83 0; #X connect 29 0 30 0; #X connect 30 0 14 0; #X connect 31 0 14 0; #X connect 32 0 18 0; #X connect 56 0 28 1; #X connect 57 0 28 2; #X connect 71 0 78 0; #X connect 78 0 70 0; #X connect 79 0 70 0; #X connect 80 0 70 0; #X connect 81 0 85 0; #X connect 82 0 85 0; #X connect 83 0 85 0; #X connect 84 0 85 0;