This software is developed for demonstrate the functionality of SNHC FIT
(FAPs Interpolation Table). The description of FIT technique is
described in MS word 6.0 file m2599v3.doc. An ascii file format
(*.fit) is defined in fit_format.txt to describe a FIT. C program is
provided for FAP interpolation using FIT.  To verify the efficiency of
FIT scheme, an encoding program is also included in the package.  Some
utility programs to manipulate sample FAP files are also provided.


1.  FILE LIST FOR THIS DISTRIBUTION:
 m2599v3.doc      ---  description of FIT scheme, revision of previous
                       MPEG4 proposal m2599.doc
 fit_format.txt   ---  file format for .fit file which describe a FIT
 Makefile         ---  Makefile, suggest use gcc for Sun and cc for SGI
 README           ---  this file
 codeFit.c        ---  encode *.fit file
 cut.c            ---  extract certain FAPs from a .fap file and write
                       to a new .fap file
 interpolate.c    ---  interpolate a .fap file according to a FIT in
                       .fit file and write the interpolated version to
                       a new .fap file
 util.h util.c    ---  internal data structure and functions used for
                       previous .c file
        
 Marco30.fap*     ---  a version 1.1 test .fap data file, each frame
                       contains 32 FAPs                  
 Marco30_cut.mask ---  a selection mask used to extract 13 faps from 
                       Marco30.fap 
 Marco30_cut.fap  ---  the result of using "cut", a fap file contain 13
                       FAPs in each frame
 exp.fap          ---  a fap file contains only expression FAP             
 test1.fit        ---  a test .fit file that presents a interpolation:
			  left-side FAPs   <-->  right-side FAPs
		          inner lip FAPs   <-->  outer lip FAPs
                       After using this FIT, 13-FAP Marco30_cut.fap
                       is expanded to 27 FAPs per frame

 test2.fit        ---  Besides the interpolation represented in test1.fit, 
		       this FIT also describe interpolation:

	                    raise_b_midlip    -->  open_jaw
                            raise_b_midlip_o  -->  open_jaw
                            raise_l_m_eyebrow -->  raise_l_o_eyebrow &
                                                   raise_l_i_eyebrow  
                            raise_r_m_eyebrow -->  raise_r_o_eyebrow &
                                                   raise_r_i_eyebrow 
			    lower_t_midlip_o &
                            raise_l_cornerlip_o --> lower_t_lip_lm_o
			    lower_t_midlip_o &
                            raise_r_cornerlip_o --> lower_t_lip_rm_o
                            raise_b_midlip_o &
                            raise_l_cornerlip_o --> raise_b_lip_lm_o
                            raise_b_midlip_o &
                            raise_r_cornerlip_o --> raise_b_lip_rm_o

			    lower_t_midlip &
                            raise_l_cornerlip --> lower_t_lip_lm
			    lower_t_midlip &
                            raise_r_cornerlip --> lower_t_lip_rm
                            raise_b_midlip &
                            raise_l_cornerlip --> raise_b_lip_lm
                            raise_b_midlip &
                            raise_r_cornerlip --> raise_b_lip_rm
		       After using this FIT, 13-FAP Marco30_cut.fap is
		       expanded to 40 FAPs per frame
			  
 test3.fit        ---  A interpolation scheme derive 27 FAP values from
                       a single expression intensity FAPs. When
                       expression (FAP 1) is set to a value, it is
                       recognized as the expression intensity.  This
                       way, FIT can be used to define expression table.

2.  INSTALLATION:

    Once "gunzip" and "tar xvf" the archive file: 
   
    \>cd FIT
    \>make
	
    In FIT\ directory, run "make".  You need to modify Makefile to use
    either "cc" or "gcc". I have tried using cc on SGI and gcc on Sun.
    After success make, you will have 3 executable files in FIT
    directory, "cut", "codeFit", and "interpolate".
	
3.  EXTRACT FAPS FROM FAP FILE:
  
    \>cut Marco30.fap Marco30_cut.mask Marco30_cut.fap
    
    This command selects 13 FAPs defined Marco30_cut.mask from
    Marco30.fap and output to Marco30_cut.fap.  The extraction is 
    done by "and" Marco30_cut.mask and the fap_mask in Marco30.fap.

4.  INTERPOLATION:
 
    \>interpolate test1.fit Marco30_cut.fap Marco30_cut_out.fap

    This command interpolate FAPs in Marco30_cut.fap according to FIT in
    test1.fit. The interpolation result is written to Marco30_cut_out.fap.
    Other examples are:
    
    \>interpolate test3.fit exp.fap exp_out.fap
    
    This command expand the 1-FAP file exp.fap to 27-FAP exp_out.fap.

5.  ENCODING FIT

    \>codeFit test1.fit test1.stream

    Encode FIT in test1.fit and write the output stream to test1.stream.


Please contact author if you have any question:

Hai Tao
Beckman Inst.
University of Illinois
405, N. Mathews Ave, 
Urbana, IL 61801

e-mail tao@ifp.uiuc.edu
tele:  (217)-244-1089
