-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
+ ReacTiVision functionality added - Bug fixes
- Loading branch information
Showing
29 changed files
with
1,281 additions
and
46 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
reacTIVision 1.5.1 | ||
—————————————————- | ||
* revert FrameEqualizer to equalization rather than subtraction | ||
* fixed the calibration distortion for wide camera formats | ||
* correctly save updated camera configuration on exit | ||
* implemented camera format enumeration on Windows | ||
* added a dedicated PS3 camera driver on MacOSX (thanks to Sebestyén Gábor) | ||
* implemented GAMMA and POWERLINE camera configuration on MaxOSX | ||
* implemented CONTRAST camera configuration on Windows | ||
* implemented V4L2_PIX_FMT_GREY in Video4Linux2 (for SUR40) | ||
* implemented STEPWISE camera formats in Video4Linux2 (for raspicam) | ||
* improved SDL event handling and adaptive VSync (for higher fps) | ||
* updated the SDL2 Framework to 2.0.4 | ||
* code sign MacOSX application bundle | ||
* minimum supported MacOSX version is 10.8 | ||
32bit version for older systems and CPUs | ||
* add Windows 64bit build (min. Windows 7) | ||
32bit version for older systems and CPUs | ||
|
||
reacTIVision 1.5 | ||
———————————————— | ||
* new AVFoundation camera driver for MacOS X (including controls) | ||
* new videoInput camera driver for Windows (including controls) | ||
* improved Video4Linux2 camera driver for Linux (including controls) | ||
* list all available cameras and formats (via -l startup argument) | ||
* support MJPEG decompression for higher USB camera frame rates | ||
* support IIDC-over-USB cameras through libdc1394 | ||
* added frame cropping configuration (xoffset,yoffset,xwidth,yheight) | ||
* multithreaded thresholder for reduced latency on multicore CPUs | ||
* allow the adjustment of the threshold tile size | ||
* updated FrameEqualizer for faster background subtracion | ||
* sending correct TUIO 1.1 source messages | ||
* added a quicker and less tedious calibration mode | ||
* migrated the user interface to SDL 2.0 (less CPU overhead) | ||
* fixed a MIDI configuration file location bug on MacOS X | ||
* added fullscreen toggle (via F1 key) | ||
* added a headless mode (via -n startup argument) | ||
* improved Linux desktop integration | ||
* updated oscpack, tinyxml, portmidi and dc1394 libraries | ||
* added x86_64 and dropped PPC architecture on MacOS X | ||
* provide x86_64 and i686 binaries for Mac OS X and Linux | ||
* updated XCode and Visual Studio 2012 projects | ||
* added a project for the Codeblocks IDE on Linux | ||
* removed the dtouch fiducial tracker | ||
* removed the now outdated VdigGrab, DSVideolib and Video4Linux drivers | ||
* new application icon |
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
The reacTIVision software and the the TUIO example clients | ||
are free software licensed under the GPL license. | ||
You can freely use this software for any private, academic | ||
or commercial purpose, provided that you are willing | ||
to publish the source code of your derived work upon request. | ||
|
||
* the reacTIVision framework (c) by Martin Kaltenbrunner | ||
is licensed under the GPL v2.0 license | ||
see the file GPL.txt for the detailled license terms | ||
http://github.com/mkalten/reacTIVision | ||
|
||
* the fidtrack library (c) by Ross Bencina & Martin Kaltenbrunner | ||
is licensed under the LGPL license | ||
see LICENSE.txt in the project folder for its terms | ||
http://github.com/mkalten/reacTIVision | ||
|
||
* the oscpack library (c) by Ross Bencina | ||
is licensed under a BSD style license | ||
see LICENSE in the project folder for its terms | ||
http://code.google.com/p/oscpack/ | ||
|
||
|
||
* the videoInput library (c) by Theo Watson et al. | ||
is licensed under a BSD style license | ||
http://github.com/ofTheo/videoInput | ||
|
||
|
||
|
||
* the TinyXML library (c) by Lee Thomason et al. | ||
is licensed under the ZLib license | ||
see README.txt in the project folder for its terms | ||
http://www.sourceforge.net/projects/tinyxml | ||
|
||
|
||
|
||
* the PortMidi library (c) by Roger B. Dannenberg et al. | ||
is licensed under a BSD style license | ||
see README.txt in the project folder for its terms | ||
http://portmedia.sourceforge.net/portmidi/ | ||
|
||
|
||
|
||
* the VVUVCKit framework | ||
is licensed under the MIT license | ||
http://github.com/mrRay/VVUVCKit |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,214 @@ | ||
reacTIVision 1.5.1 | ||
------------------ | ||
(c) 2005-2016 by Martin Kaltenbrunner <martin@tuio.org> | ||
https://github.com/mkalten/reacTIVision | ||
|
||
reacTIVision is an open source, cross-platform computer vision | ||
framework for the fast and robust tracking of fiducial markers | ||
attached onto physical objects, as well as for multi-touch | ||
finger tracking. It was mainly designed as a toolkit for the | ||
rapid development of table-based tangible user interfaces (TUI) | ||
and multi-touch interactive surfaces. This framework has been | ||
developed by Martin Kaltenbrunner and Ross Bencina as part of | ||
the Reactable project, a tangible modular synthesizer. | ||
http://www.reactable.com/ | ||
|
||
reacTIVision is a standalone application, which sends Open Sound | ||
Control (OSC) messages via a UDP network socket to any connected | ||
client application. It implements the TUIO protocol, which has been | ||
specially designed for transmitting the state of tangible objects | ||
and multi-touch events from a tabletop surface. As an alternative | ||
to TUIO, the application is also capabable of sending MIDI messages. | ||
|
||
The TUIO framework includes a set of example client projects | ||
for various programming languages, which serve as a base for | ||
the easy development of tangible user interface or multi-touch | ||
applications. Example projects are available for languages such as: | ||
C/C++, Java, C#, Processing, Pure Data, Max/MSP and Flash. | ||
|
||
The reacTIVision application currently runs under the | ||
following operating systems: Windows, Mac OS X and Linux | ||
Under Windows it supports any camera with a proper WDM driver, | ||
such as most USB, FireWire and DV cameras. Under Mac OS X most | ||
UVC campliant USB as well as Firewire cameras should work. | ||
Under Linux FireWire cameras are as well supported as many | ||
Video4Linux2 compliant USB cameras. | ||
|
||
Fiducial Symbols | ||
---------------- | ||
This application was designed to track specially designed fiducial | ||
markers. You will find the default "amoeba" set of 216 fiducials in | ||
the document "default.pdf" within the symbols folder. Print this | ||
document and attach the labels to any object you want to track. | ||
The default fiducial tracking engine is based on the included fidtrack | ||
|
||
library, which also provides an alternative "classic“ fiducial set, | ||
which are a reimplementation of Enrico Costanza’s d-touch concept. | ||
See below how to configure the application to use these symbol sets. | ||
|
||
reacTIVision detects the ID, position and rotation angle of fiducial | ||
markers in the realtime video and transmits these values to the client | ||
application via the TUIO protocol. TUIO also assigns a session ID to | ||
each object in the scene and transmits this session ID along with the | ||
actual fiducial ID. This allows the identification and tracking of | ||
several objects with the same marker ID. | ||
|
||
Finger Tracking | ||
--------------- | ||
reacTIVision also allows multi-touch finger tracking, which is basically | ||
interpreting any round white region of a given size as a finger that | ||
is touching the surface. Finger tracking is turned off by default and | ||
can be enabled by pressing the 'F' key and adjusting the average finger | ||
size, which is given in pixels. The general recognition sensitivity can | ||
also be adjusted, where its value is given as a percentage. 75 would be | ||
less sensitive and 125 more sensitive, which means that also less probable | ||
regions are interpreted as a finger. The finger tracking should work with | ||
DI (diffuse illumination) as well as with FTIR illumination setups. | ||
|
||
Application Handling | ||
-------------------- | ||
Before starting the reacTIVision application make sure you have | ||
a supported camera connected to your system, since the application | ||
obviously will not work at all without a camera. The application | ||
will show a single window with the B&W camera video in realtime. | ||
|
||
Pressing the 'S' key will show to the original camera image. | ||
Pressing 'T' will show the binary tresholded image, pressing the | ||
'N' key will turn the display off, which reduces the CPU usage. | ||
|
||
The thresholder gradient gate can be adjusted by hitting the 'G' key. | ||
Lowering the value can improve the thresholder performance in low | ||
light conditions with insufficient finger contrast for example. | ||
You can gradually lower the value before noise appears in the image. | ||
Optionally you can also adjust the tile size of the thresholder. | ||
|
||
The camera options can be adjusted by pressing the 'O' key. | ||
On Windows and Mac OS this will show a system dialog that allows | ||
the adjustment of the available camera parameters. On Linux (Mac OS X | ||
when using Firewire cameras), the available camera settings can be | ||
adjusted with a simple on screen display. | ||
|
||
In order to produce some more verbose debugging output, hitting | ||
the 'V' will print the symbol and finger data to the console. | ||
Pressing the 'H' key will display all these options on the screen. | ||
'F1' will toggle the full screen mode, the 'P' key pauses the | ||
image analysis completely, hitting 'ESC' will quit the application. | ||
|
||
XML configuration file | ||
---------------------- | ||
Common settings can be edited within the file "reacTIVision.xml" where | ||
all changes are stored automatically when closing the application. | ||
Under Mac OS X this XML configuration file can be found within the | ||
application bundle's Resources folder. Select "Show Package Contents" | ||
from the application's context menu in order to access and edit the file. | ||
|
||
The reacTIVision application usually sends the TUIO messages | ||
to port 3333 on localhost (127.0.0.1) | ||
You can change this setting by adding or editing the XML tag | ||
<tuio host="127.0.0.1" port="3333"> to the configuration. | ||
|
||
The <fiducial engine="amoeba" tree="default"/> XML tag lets you | ||
select the fiducial engine or an alternative amoeba tree order. | ||
The default engine is using the fastest and effective 'amoeba' | ||
fiducial set. Add the 'classic' option in order to use the dtouch | ||
reimplementation from libfidtrack. | ||
|
||
The display attribute defines the default screen upon startup. | ||
The <image display="dest" equalize="false" gradient="32" tile="10"/> | ||
lets you adjust the default gradient gate value and tile size. | ||
reacTIVision comes with a background subtraction module, which in | ||
some cases can increase the recognition performance of both the finger | ||
and fiducial tracking. Within the running application you can toggle | ||
this with the 'E' key or recalculate the background subtraction | ||
by hitting the SPACE bar. | ||
|
||
The overall camera and imageesettings can be configured within the | ||
"camera.xml" configuration file. On Mac OS X this file is as well | ||
located in the Resources folder within the application bundle. | ||
You can select the camera ID and specify its dimension and framerate, | ||
as well as the most relevant image adjustments. Optionally you can also | ||
crop the raw camera frames to reduce the final image size. | ||
Please see the example options in the file for further information. | ||
|
||
You can list all available cameras with the "-l" startup option. | ||
|
||
TUIO vs. MIDI | ||
------------- | ||
The application can alternatively send MIDI messages, which allows | ||
the mapping of any object dimension (xpos, ypos, angle) to a MIDI | ||
control message through an XML configuration file. Adding and removing | ||
objects can also be mapped to simple note ON/OFF events. | ||
Keep in mind though that MIDI has less bandwidth and data resolution | ||
compared to Open Sound Control, so the new MIDI feature is only meant | ||
as a convenience alternative to TUIO in some application scenarios. | ||
|
||
Adding <midi config="midi_demo.xml" /> to reacTIVision.xml switches to | ||
MIDI mode and specifies the MIDI configuration file that contains the | ||
|
||
mappings and MIDI device selection. An example configuration file along | ||
|
||
with a simple PD patch example can be found in the midi folder. | ||
|
||
You can list all available MIDI devices with the "-l" startup option. | ||
|
||
Calibration and Distortion | ||
-------------------------- | ||
Many tables, such as the reacTable are using wide-angle lenses | ||
to increase the area visible to the camera at a minimal distance. | ||
Since these lenses unfortunately distort the image, reacTIVision | ||
can correct this distortion as well as the alignment of the image. | ||
|
||
For the calibration, print and place the provided calibration sheet | ||
on the table and adjust the grid points to the grid on the sheet. | ||
To calibrate reacTIVision switch to calibration mode hitting 'C' | ||
|
||
Use the keys A,D,W,X to move within grid, moving with the cursor keys | ||
will adjust the position (center point) and size (lateral points) | ||
of the grid alignment. By pressing 'Q' You can toggle into the precise | ||
calibration mode, which allows you to adjust each individual grid point. | ||
|
||
'J' resets the whole calibration grid, 'U' resets the selected point | ||
and 'K' reverts to the saved grid. | ||
|
||
To check if the distortion is working properly press 'R'. This will show | ||
the fully distorted live video image in the target window. Of course the | ||
distortion algorithm only corrects the found fiducial positions instead | ||
of the full image. | ||
|
||
Compilation | ||
----------- | ||
The source distribution includes projects for all three supported | ||
platforms and their respective build systems: Linux, Win32, MacOS X. | ||
|
||
Windows: | ||
A Visual Studio 2012 project as well as the necessary SDL2 libraries | ||
and headers are included. The project should build right away for | ||
32bit and 64bit targets without any additional configuration. | ||
|
||
Mac OS X: | ||
An Xcode project for Xcode version 3.2 or later is included. | ||
The build will require the SDL2 and VVUVCKit frameworks, in order | ||
to compile properly, just unzip the included Frameworks.zip | ||
|
||
Linux: | ||
Call make to build the application, the distribution also | ||
includes configurations for the creation of RPM packages, as well | ||
as a project file for the Codeblocks IDE. | ||
Make sure you have the libSDL 2.0 and libdc1394 2.0 (or later) | ||
as well as turbojpeg libraries and headers installed. | ||
|
||
License | ||
------- | ||
This program is free software; you can redistribute it and/or modify | ||
it under the terms of the GNU General Public License as published by | ||
the Free Software Foundation; either version 2 of the License, or | ||
(at your option) any later version. | ||
|
||
This program is distributed in the hope that it will be useful, | ||
but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
GNU General Public License for more details. | ||
|
||
You should have received a copy of the GNU General Public License | ||
along with this program; if not, write to the Free Software | ||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
<?xml version="1.0" encoding="ISO-8859-1" ?> | ||
<portvideo> | ||
<camera id="0"> | ||
<capture width="640" height="480" fps="max" compress="true" /> | ||
<settings brightness="default" contrast="default" gain="9" shutter="default" exposure="default" sharpness="default" gamma="default" focus="min" /> | ||
<frame width="max" height="max" xoff="0" yoff="0" /> | ||
</camera> | ||
</portvideo> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
reacTIVision is a standalone application, which sends Open Sound | ||
Control (OSC) messages via a UDP network socket to any connected | ||
client application. It implements the TUIO protocol, which has been | ||
specially designed for transmitting the state of tangible objects | ||
and multi-touch events from a tabletop surface. As an alternative | ||
to TUIO, the application is also capabable of sending MIDI messages. | ||
http://www.tuio.org/ | ||
|
||
Alternatively it can also send MIDI messages, which are configurable | ||
via an XML configuration file. Keep in mind though that MIDI has less | ||
bandwidth and data resolution compared to Open Sound Contol, so the | ||
MIDI feature is meant as an convenient alternative in some cases, | ||
but TUIO still will be the primary messaging layer. | ||
|
||
The alternative MIDI mode can map any object dimension (xpos, ypos, angle) | ||
to a MIDI control via an XML configuration file. Adding and removing objects | ||
can be mapped to simple note ON/OFF events. | ||
|
||
Adding <midi config="midi.xml" /> to reacTIVision.xml switches to MIDI mode | ||
and specifies the MIDI configuration file that contains the mappings and MIDI | ||
device selection. An example PD patch "midi_demo.pd" can be found this folder. | ||
|
||
You can list all available MIDI devices with the "-l" option. | ||
|
||
The demo configuration file "midi.xml" defines a simple controller | ||
setup with a few vertical and horizontal faders, some knobs and | ||
a free controller area for a single object. See the "midi_demo.pd" patch | ||
for Pure Data for an example MIDI client using this setup. | ||
|
Oops, something went wrong.