AboutBullsEye is a computer vision application for optical fiducial tracking on tangible tabletops. BullsEye is comparable in functionality to reacTIVision but offers significantly more accurate tracking of fiducials. BullsEye can serve events to a table application both through the TUIO protocol and through a Websocket connection.
The inner workings of BullsEye is detailed in the paper BullsEye: High-Precision Fiducial Tracking for Table-based Tangible Interaction.
BullsEye is freely available for academic and non-commercial use. If you intend to use it for a commercial product, please contact us.
- Microsoft Windows
- Java version 1.8
- A graphics card supporting OpenGL 3.2 or newer
- A camera supported by DirectShow, uEye or MJPEG
- An interactive table similar to what you would use for reacTIVision
SetupBullsEye requires a calibration of light, of camera distortion compensation and of the fiducial and finger tracking which is detailed below. BullsEye also contains embedded documentation available as tooltips on questionmarks in the UI.
- Download and extract BullsEye
- Double-click BullsEye.jar, this should open a window looking like this
Calibration of light
- Press 'Configure Cameras' and activate the camera(s) used for tracking (screenshot).
- Now press 'Adjust Colour' and press 'reset' (screenshot).
- Press 'Adjust limits'. This will activate the calibration of light. To calibrate BullsEye move a white object across the whole surface of the table effectively painting the image in BullsEye green. (screenshot, photo of white object on table).
- Repeat for all cameras.
- This should result in a nice image (screenshot)
Compensation for lens warpIf you do not need super accurate tracking simply press 'automatic' and skip this step. Otherwise:
- First make sure either to have an external monitor connected to the computer driving the table, or connect to the computing remotely, as this step will involve covering the whole surface of the table up
- Get a print of the calibration dot grid on a piece of paper with the same dimensions as the table surface. (photo)
- Place it on the table and make sure it is firmly pressed down on the surface. (photo)
- Press 'lens warp' in BullsEye, and make sure that all dots are visible. If not the paper is probably not pressed firmly enough towards the surface of the table. (screenshot)
- Press 'calibrate lens warp'
- You are now asked to click on an area in the image, try to press in a lighter area of the image for the best result.
- BullsEye will now try to calibrate. (screenshot)
- The calibration will probably not be perfect, so use 'expand' to let BullsEye automatically try to remove holes.
- The resulting image should look as regular as possible (screenshot), if not try again by clicking at another starting point, or by fastening the paper even better.
- Repeat for all cameras.
PlacementIf only a single camera is used simply use autodetect. For setup of multiple cameras the two camera inputs have to be aligned.
- Place some objects on the table that can be used as reference. E.g. some at the bottom and top of the table, and a long object crossing intersections (photo, screenshot)
- Use arrow keys to move the grids, and pageup/pagedown to rotate.
- Remember to update the size of the total grid. E.g. with two cameras stacked vertically, the height should be doubled.
- Press 'Configure tracking'
- Select a quality, and note how it affects the framerate on your system. (screenshot)
- Go to 'Fingers' and disable finger tracking
- To configure tracking of tags, print a page from the BullsEye tag set and place it on the table, firmly pressed down on the surface. Make sure it is the only object on the table.
- Goto 'Tags' and you should see the following: (screenshot)
- Press 'autodetect' which should result in the following: (screenshot)
- If you need finger tracking (experimental), go to 'Fingers' and adjust the parameters until fingers are tracked satisfactory.