> Overview
   > Data
   > Communication

> Application
   > Video
   > Background
   > Differencing
   > Sensing
   > Communication


TSPS uses a client-server model, with the TSPS application acting as the server. The app reads from an Input (camera, movie file, etc), runs computer vision alogrithms on the Input data, and sends what data it finds to an Output or Outputs (the Client[s] in this model).

Outputs connect to TSPS and receive current data as long as 1) something is happening in the Input and 2) they stay connected. They can be created in a number of tools, examples of which are listed in the Downloads section.

TSPS data consists of a set of People objects, which can be used to determine the number of People in the scene as well as specific information about each Person (see  below). It sends specific events related to these People, noting when they enter, move through, and leave the scene (your Input).

> top





Person Object





> Let TSPS do all the camera stuff for you, so your app can just focus on output (generative visuals, posting to the internet, playing sounds, etc).

One-to-One: Network



> TSPS can run on a different computer in a totally   different location; now you can set up your camera and   computer in the ceiling, in a different room, etc.

> Your output computer can dedicate all of its processing power to your output app.





> A single Input can drive many outputs.
> One camera can talk to a multi-machine video wall, send data to an indefinite amount of mobile users or interact with a set of completely different Output apps.



The GUI is where you can make adjustments to parameters related to the Input (Video), video processing (Background, Differencing, Sensing), and how TSPS data is being sent (Communication).

The buttons at the bottom of the GUI allow you to save the current settings, restore any live changes you’ve made, load external settings files, or save the current settings as an external file.

The View area displays 5 real-time displays of how TSPS is processing an Input and sending it to an Output. Each view corresponds to a panel in the GUI (more details below).

The Status bar displays a quick heads -up of the total number of tracked People objects as well as current Events that are being sent.




The “Video” GUI tab (and corresponding Camera view) is for selecting the Input type, adjusting settings particular to the input, and making basic adjustments to the Input signal.

1. Source selection:
Select what type of Input to use. Inputs can be either live data (Web Camera, Kinect) or pre-recorded video.

   > Web Camera
   > Video File: movie file from inside your “data” folder
   > Kinect
   > Custom: only used with advanced development

2. File Settings:
Select + load a movie file. Files loaded will loop. Supported file types are determined by your OS. [only visible with “Video File” Input]

   > Video Directory: where inside the “data” folder (comes installed next to TSPS app) to load from.
   > Video File Selector: double click a file to load it
   > Reload directory: useful if you’ve added or deleted videos from the Video Directory

3. Basic Adjustments
   > Flip Horizotnal / Vertical: Flips the Input image
   > Invert: very useful if Input is backlit

4. Video Gain

Used to darken or brighten the video signal. Meant for extreme lighting situations (too dark, too bright).




Background subtraction can be a crucial piece in making a successful video-based interactive installation. Its name is self explanatory: it allows one to take an image of thebackground, subtract it from the current input, and use thedifference of the two for processing.

1. Background capture:
Capture the current frame, undo a background capture, or set up TSPS to automatically capture the background when it starts up.
    > Capture background: use the current frame
    > Blank out background: disable Background subtraction
    > Capture background on startup: disabled by default
    > Capture X seconds after startup: useful with Inputs that require a startup period

2. Progressive Backround Capture:
Slowly capture the background over time. Used in variable lighting conditions, or to make people “disappear” over time.
    > Recapture rate: how quickly / slowly to add to the background



The Differencing panel allows you to adjust the main CVparameters that allow TSPS to find people in your Input. The Differenced view renders the Input post-processing

1. Threshold + Differencing Type:
Adjust the sensitivity of TSPS via “threshold”. This value determines how much white to let through after background subtraction.. You should adjust it until you can make out rough outlines of shapes you want to track (e.g. people’s silhouettes).

    > Threshold: (see above)
    > Type of differencing: “absolute difference” is default and recommended. Determines whether TSPS lets through light shapes, dark shapes, or just takes the difference between the Input image and the background.

2. Highpass:
The highpass filter, in conjuction with a low Threshold value, allows for simplification of the Input image before it is processed by TSPS. It is useful is most normal lighting situations.

    > Use Highpass: turn the filter on/off
    > Highpass Noise: lower numbers cut off less dark colors
    > Hightpass Blur: blurs processed values

3. Shape smoothing: Smoothing exectures a simple blur filter on your Input, allowing TSPS to read simpler, more abstract shapes.

    > Use Shape Smoothing: turn the filter on/off
    > Smooth amount: how much to blur




Values in the Sensing panel allow for the adjustment of thesensitivity of TSPS’ algorithms and options for specific processes such as optical flow tracking and feature (HAAR) tracking. The corresponding Data view visualizes the data being sent.

1. Blob size:
Adjust the sensitivity of TSPS. Lower sensitivity allows TSPS to discover fine details in an image, but can create erratic data. Adjust these settings to find ideal shaes for your specific scanario.

    > Minimum Blob Size: the smallest shape(s) TSPS will track and send
    > Maximum Blob Size: the largest shape(s) TSPS will track and send
    > Ignore Nested Blobs: whether or not TSPS should ignore shapes that completely overlap

2. Track and Send Contours:
On by default. Allows users to adjust how much data is sent to Outputs. When disabled, TSPS will not send the actual shape (contour) data for People objects.

3. Track and Send Optical Flow:
Off by default. Adds the “optical flow accumulation” parameter to People Objects, which gives the average amount of movement inside a Person’s area.

4. Track and Send Optical Flow:
Off by default. Adds the “optical flow accumulation” parameter to People Objects, which gives the average amount of movement inside a Person’s area.




The last 2 panels allow you to adjust how TSPS sends data and who it is sending to. TSPS can send data via OSC, TUIO, TCP, and.or WebSockets (via the ws:// panel). To maximize the speed of TSPS, disable the methods not in use.

1. OSC:
Open Sound Control (OSC) is the protocol used by many TSPS clients (Processing, Unity, Quartz Composer).
See TSPS OSC Protocol

    > Send OSC: turn OSC sending on/off
    > Receiver IP Address: IP address you are sending to localhost if Output is on same computer)
    > Receiver Port: port of OSC receiver (determined by Output client. 12000 by default.
    > Use legacy OSC: provides backwards compatibility with apps and examples made with TSPS 1.1 and older.

2. TUIO:

Sends Person Objects as touch events in the TUIO protocol ( Note:only sends basic TUIO info, does not send complete Person Object.

    > Receiver IP Address: IP address you are sending to (localhost if Output is on same computer)
    > Receiver Port: port of TUIO client

3. TCP:

Sends raw strings over a TCP socket. Recommended for applications that can’t implement OSC or WebSockets.
See TSPS TCP Protocol

    > Broadcast Port: port TCP clients can connect to



Communication: WebSockets

TSPS can set itself up as a WebSocket server or client, allowing it to send data to browsers (or other WebSocket clients) on a local network or send data to the web via a hosted server (respectively).
See TSPS JSON Protocol

4. WebSocket Server:
Sets up TSPS as a WebSocket server for clients to connect to (at ws://localhost:PORT)

    > Send Over WebSocket Server: toggle on/off
    > WebSocket Port: port to open on
    > Open Debug URL: opens a URL in your default browser to test the WebSocket server

5. WebSocket Client:
Open a WebSocket client to an external server.

    > Send Over WebSocket Client: toggle on/off
    > WebSocket Host: host of WebSocket server
    > WebSocket Port: port to connect to
    > Use SSL: toggle on if URL to server starts with “wss” (Note: your server will need to be able to accept self-signed SSL certificates
    > WebSocket Channel: some servers require a channel, e.g. ws://