IMPROV
------

"See it live at the Improv ..."

A tool for live / online image processing and experimentation
by Thomas Bräunl, 1997-2001.

Improv allows the appication of a number of image processing routines
and parameter settings to a live camera feed or a prerecorded image sequence.

Thomas Bräunl, 2001
----------------------------------------------------------------------------


Adding menus and IP functions to the source of IMPROV.
-----------------------------------------------------
  1. Choose an enumerated type and add it to E_IPLOP in xfqcam.h
  2. Code the function and add it to improc.c and the function prototype to improc.h
  3. Add the menu information (name, enum and args) to menu_items[] in ProcImage.cc
  4. Add a "wrapper" call to the function via the switch in ProcImage.cc 

improc.h improc.c
 - function prototype and implementation
ImprovWrapper.h
 - enum value
ProcImage.cc
 - menu entry
 - function call

  Menu popup headings are marked with the number of args
"-1". Underneath each heading in the array are the functions to appear
in that popup. Beware of the order -- the order listed is the
appearance order. Have a look at the source. It is rather self
explanatory.

  A linked list by the enumerated value of each heading is created at
runtime to generate and update the browser info. This allows for
function names such as Show(x,y) to be printed with the actual
parameters being passed, such as Show(0.5,0.38).


Compiling
---------
Edit the Makefile to include the camera drivers (frame grabbers) required.
Call "make" from the main directory.


Remarks to 4.0 (Uli Mezger, Paul McAlpine)
------------------------------------------
1) Internal data format has been changed for version 4.0.

2) Image format can be changed during processing, e.g. input picture is
grey scale, output picture can be color and/or different image size.

3) User can choose between different input image sequences or the
camera in the Camera menu. But will crash if some of the advanced
image routines do not take care if the input image has been changed or
not during run time. So it is advised to turn off this critical
functions (like the optical flow routines) in order to load a new
image sequence.

4) Graphic library has been added (FW) to do all the
basic image manipulation (resize image, crop image etc.) and drawing
functions (circles, line, filled polygons etc.)

5) Improv can be started into 6, 4 or 2-processing window mode via
command line (e.g. improv 2)

6)New V4L interface: all cameras supported by the CPiA webcam driver
can be used. For a detailed list of cameras have a look at:
http://webcam.sourceforge.net/

Note: This also includes USB cameras, (if your kernel supports USB!)

7) Some new and very interesting image processing
function (e.g Optical flow routines, Contour finding, Moravec interest
operator, Tracking ...) have been added. Adding your own functions to
'improc.c' has not changed, except the user has more control of the
incoming and outgoing images.

There are basically two ways to include functions, create a library
(e.g. /contour/libContour.a) or just include your c-functions
(e.g. #include"moravec.c")!

8) The camera image can be included, wherever it is needed (for
comparisons of different operations)
------------------------
