A simple interface for advanced visual tracking.

Open Source

Published under an open-source LGPL license on Github to allow for others to contribute features and forks.

Camera Support

Supports a wide range of camera devices with the ability to stitch and switch in between sensors on the fly.

Cross Platform

Built on C++ for real-time performance and stability using on common frameworks including OpenCV and openFrameworks.

An overview of the application and features.

About CCV - Community Core Vision

Community Core Vision, CCV for short is a open source/cross-platform solution for blob tracking with computer vision. It takes an video input stream and outputs tracking data (e.g. coordinates and blob size) and events (e.g. finger down, moved and released) that are used in building multi-touch applications. CCV can interface with various web cameras and video devices as well as connect to various TUIO/OSC/XML enabled applications and supports many multi-touch lighting techniques including: FTIR, DI, DSI, and LLP with expansion planned for the future vision applications (custom modules/filters). This project is developed and maintained by the NUI Group Community.

Features

Simple GUI - The new interface is more intuitive
and easier to understand and use.

Filters (dynamic background subtraction,
high-pass, amplify/scaler, threshold) - This means it will work with
all optical setups (FTIR, DI, LLP, DSI). More filters can be added as
modules.

Camera Switching - Have more than one camera on
your computer? Now you can press a button and switch to the next camera
on your computer without having to exit the application.

Input Switching- Want to use test videos instead of
a live camera? Go ahead, press a button and it will switch to video
input.

Dynamic Mesh Calibration - For people with small
or large tables, now you can add calibration points (for large
displays) or create less points (smaller displays) while maintaining
the same speed and performance.

Image Reflection- Now you can flip the camera
vertical or horizontal if it is the wrong way.

Network Broadcasting - You can send OSC TUIO
messages directly from the configapp for quick testing.

Camera and application FPS details viewer - Now
you can see the framerate of both the tracker and camera that you are
getting.

Contributors

About the Community

Established in 2006, The Natural User Interface Group is an open source community that creates and shares interaction techniques & standards that benefit designers & developers throughout the world.
We offer a collaborative environment for scientists that are interested in learning and developing modern Human/Computer Interaction methods and concepts. Our research includes topics such as: computer vision, touch computing, voice & gesture recognition, experience design and information visualization.
Our mission is to openly discover, document and distribute NUI knowledge. Getting started is simple; register as a member and learn more about us...

Getting started using the application and controls.

Controls

1. Source image - Displays the raw video image from either camera or video file.2. Use Camera Toggle - Sets the input source to camera and grabs frames from selected camera. 3. Use Video Toggle - Sets the input source to video and grabs frames from video file.4. Previous Camera Button - Gets the previous camera device attached to computer if more than one is attached.5. Next Camera Button - Gets the next camera device attached to computer if more than one is attached.6. Tracked Image - Displays the final image after image filtering that is used for blob detection and tracking.7. Inverse - Track black blobs instead white blobs.8. Threshold Slider - Adjusts the level of acceptable tracked pixels. The higher the value is, the bigger the blobs have to be to track.9. Movement filtering - Adjust the level of acceptable distance (in pixels) before a movement of a blob is detected. The higher the option is, the more you have to actually move your finger for CCV to register a blob movement.10. Min Blob Size - Adjust the level of acceptable minimum blob size. The higher the option is, the bigger a blob has to be to be assigned an ID.11. Max Blob Size - Adjust the level of acceptable maximum blob size. The higher the option is, the bigger a blob can be before losing its ID.12. Remove Background Button - Captures the current source image frame and uses it as the static background image to be subtracted from the current active frame. Press this button to recapture a static background image13. Dynamic Subtract Toggle - Dynamically adjusts the background image. Turn this on if the environmental lighting changes often or false blobs keep appearing due to environmental changes. The slider will determine how fast the background will be learned..14. Smooth Slider - Smoothes the image and filters out noise (random specs) from the image.15. Highpass Blur Slider - Removes the blurry parts of the image and leaves the sharper brighter parts.16. Highpass Noise - Filters out the noise (random specs) from the image after applying Highpass Blur.17. Amplify Slider - Brightens weak pixels. If blobs are weak, this can be used to make them stronger.18. On/Off Toggle - Used on each filters, this is used to turn each filter on or off.19. Camera Settings Button - Opens the camera settings. This will open controls of the camera, especially when using a PS3 Eye camera.20. Flip Vertical Toggle - Flips the source image vertically.21. Flip Horizontal Toggle - Flips the source image horizontally.22. GPU Mode Toggle - Turns on experimental hardware acceleration and uses the GPU. This is best used on newer graphics cards only. 23. Send UDP Toggle - Turns on the sending of TUIO messages.24. Flash XML - Turns on the sending of Flash XML messages (no need for flosc anymore).25. Binary TCP - Turns on the sending of RAW messages (x,y coordinates).26. Enter Calibration - Loads the calibration screen.27. Save Settings - Saves all the current settings into the XML settings file.

Quick Setup

Download and extract the stable latest build of CCV for your platform.

Launch the CCV application (.app, .exe, etc).

Adjust the filter sliders to suite your sensing technique.

Enter calibration mode and test results.

Start your client applications which recieves tracking data.

Calibration

In order to calibrate CCV for your camera and projector, you'll need to run the calibration process. Calibrating allows touch points to line up with elements on screen. This way, when touching something displayed on screen, the touch is registered in the correct place. In order to do this, CCV has to translate camera space into screen space; this is done by touching individual calibration points. Following the directions below will help explain how to setup and perform calibration.