This README written by John Barron The directories contain various code and data used in our analysis of optical flow techniques (see "Performance of Optical Flow Techniques" in CVPR 92 and a revised version of a TR (July 1993). March 18, 1993 -------------- [Note: some of the data (for the translating and diverging tree sequences) have been changed (we have included it all) and three of the programs, horn.c, nagel.c and lucas.c, have been modified (the smoothed image sequences are now stored internally in float instead of unsigned char, yielding better results.] -------------- Directories: TESTDATA - contains the input data as well as the correct data for syntatic input in subdirectories. TOOLS - contains error programs and programs for producing postscript files of images or flow fields LUCAS - contains the code and explanation for Lucas and Kanade's technique FLEET - contains the code and explanatioon for Fleet and Jepson's technique URAS - contains the code and explanatioon for Fleet and Jepson's technique FLEET - contains the code and explanatioon for Fleet and Jepson's technique NAGEL - contains the code and explanatioon for Nagel's technique ANANDAN - contains the code and explanatioon for Anandan's technique HORN - contains the code and explanatioon for Horn and Schunck's technique SINGH - contains the code and explanatioon for Singh's technique All programs for the techniques are in one file (plus maybe a second fortran file) for convenience. The interfaces are reasonably the same. As well as using our format for input image sequences all programs allow use of a -B option to specify that raw binary image data is being used. Our data has a 32 byte header, which among other things, contains the sizes of the individual images. Programs, fleet.c, lucas.c and horn.c and singh.c were written in part or in whole by John Barron while anandan.c, uras.c and nagel.c were written by Steven Beauchemin. Two other programs, for Waxman et al.'s and Heeger's techniques will not be made available. In the case of Waxman the result depends on good edge maps, which cannot be computed from DOGS. In the case of Heeger, the interpretation of the energy filter responses to derive velocity is ad hoc (to say the least) and so may not be a good representation of Heeger's work. When the program were being written I decided (for the ones I wrote) to keep things as simple as possible. Hence I used static arrays and placed/processed the data in the upper left hand corner. Two constants PIC_X and PIC_Y define a maximum array size (which is usally 325 or 512). So you do not need to do anything as long as the dimensions of you images are less than or equal to 325. If you want to use bigger images just change the values of these constants and re-compile. Depending on when the programs were written and by who PIC_X is the number of columns and PIC_Y was the number of rows or vice-versa. Sorry about that, I just don't have time to make them consistent. The programs written by Beauchemin are done correctly, i.e. with dynamic memory. *************************************************************************** The programs are not state-of-the-art implementations, hence it is possible to implement the algorithms in a more efficient manner. However, we believe the algorithms are correct. The programs are provided as a way to duplicate our results in the TR and CVPR paper (where appropriate) **************************************************************************** If there is anything that needs further explanation please send me mail (barron@csd.uwo.ca). The programs are also available at ftp.csd.uwo.ca