TSPS works in two different models:

1) Client and Server model

- In this model, TSPS runs as a stand-alone application (the server) and communicates with a second application (the client) over OSC, TUIO, or TCP
- TSPS sends out information when a person enters the frame, moves, and leaves the frame:

OSC and TCP send
- persistent id
- age (in frames)
- centroid (center of mass)
- bounding rectangle (x, y, width, height)
- velocity (x, y)
- average optical flow velocity (x, y)
- contours (the shape of the blob)

TUIO sends
- persistent id
- x, y

server screenshots + breakdown of sensing
example client screenshots

download the TSPS server:
Mac | Windows
download TSPS example clients:
flash |
processing

2) openFrameworks addon

- TSPS can be compiled in to your openFrameworks project as an addon
- TSPS provides callbacks when a person enters the frame, moves, and leaves the frame

download the TSPS source:
Mac (Xcode) | Windows (code blocks) | Windows (VS 2008)

Step 1: Live camera view with amplification



Amplification is used to adjust the gain of the raw image from your camera input. Adjust amplification in poor lighting conditions.

top
Step 2: Captured background



This image is what TSPS compares your camera image to when looking for people. Use ‘capture background’ to use the current image as the background. Use ‘progressive background relearn’ to adjust the background over time. Progressive relearning is particularly useful in variable lighting conditions – e.g. if lighting in a space changes from day to night.

top
Step 3: Differenced image



This is the image TSPS uses to find people. People in your scene should show up here as white shapes. If you aren’t seeing anything, adjust parameters in the GUI until you get an acceptable result.

- Adjust ‘threshold’ to look at a lower or higher difference between the camera and the background.
- Use the ‘type of differencing’ to detect light objects against a dark background, dark objects against a light background, or to simply take the absolute difference between the background and camera.
- Use ‘highpass’ to limit very white areas in your image. This is useful in areas with windows or very bright lights.
- Use ‘shape smoothing’ to blur the resulting shapes in the image.

top

Step 4: Detected people and data



This image shows what TSPS is sending out (either to clients in the Client-Server model or directly to your application if used as an oF addon). You can adjust parameters to determine what TSPS will determine is a person and what TSPS will send to client(s) or your application.

- Change the minimum and maximum blob size to adjust how small or large of shapes TSPS should look for.
- You can ‘track and send contours’, which sends the actual shapes TSPS detects to your client(s). Note: if you don’t need the shapes, don’t send them!

Optical flow

- Select ‘track and send optical flow’, which will show the optical flow of the whole frame, and send the average optical flow of each person to your client(s). Note: turn optical flow off if you don’t need it, as it can effect performance.

Detect features

- You can ‘detect and send features in blobs’, which uses Haar tracking to look for features such as faces where TSPS detects a person. In the above screen shot, TSPS is detecting head and shoulders.

top

Step 5: Communication



In the communication panel, you can change settings for OSC, TCP, and TUIO settings, and toggle which you would like to send.

top

Example Client



This TSPS client demonstrates the information available via OSC or TCP: id, age, centroid (drawn as target), bounding rectangle (drawn in orange), and contour.

top