EffecTV: an old-school real-time video effect processor.

BlueScreenTV

Escape from your room! Go to some faraway resort...

Description

Blue screen effect: replaces a scene background by another.

Control

KeyResult
STake 4-frames background snapshot
DTake delayed background after 3 seconds
<Space>Get 4-frames blue screen background and preset tolerance to 30
BGet 24-frames blue screen backgroundand preset tolerance to 30
CDecrease tolerance by 1
VIncrease tolerance by 1

How to play

Pin a blue cloth on the wall and dress yourself with a non-blue shirt. Press the 'S' key to take a snapshot of a Hawaii postcard with your camera. Or use the 'D' key to take a 3 seconds delayed snapshot of your screen. Fix the camera in front of the blue cloth, get out of the field of view and press the space bar to take a snapshot of the blue screen. Enter the camera field and use 'C' and 'V' keys to adjust the image.

For best effect you will need light coming from the same direction as in the background postcard, and no shadow casted on the blue screen. Now you are ready for a live video conference from Hawaii!

Limitations

  • Takes lot of CPU ressources, comparable to the ripple effect.
  • You can use other colored screens provided their color is different enough from the subject you're filming.
  • EffecTV does not support multiple video source, so no videoke.

Developper's notes

The above filter computes color difference between the current frame the pre-defined bluesceen background, and replaces differences less than the threshold level by another background image. Most webcams do not have a very clean image and the threshold is not enough to avoid noise, so the bluescreen is recorded for 4 or 24 frames and the minimum and maximum colors are saved (this method is better than averaging). To avoid noise the replacement background is averaged over 4 frames. It can be taken after a 3 seconds delay to be able to shoot the screen with a webcam.

The color difference algorithm is quite different from the other algorithms included in the EffecTV package. It uses a max(diff(rgb)) formulae with anitaliasing like high quality photo editors do. Moreover it uses it twice for the maximum and minimum blue screen. To have even less noise a fast blur routine blurs the current frame so that noisy lonely pixels are diluted. This blurring routine may be overriden at compilation time by commenting out the "#define USE_BLUR" line. The "#define PROFILING" line in the source code may be uncommented to try other algorithm optimisations, although a lot has been done to allow a maximum speed on 32bits+ processors.

Author

Nicolas Argyrou