Added a README file with lots of juicy info. Added a denoise motion vectors function...
[melted] / src / modules / motion_est / README
1 COMPILE:
2
3 This module performs motion estimation and ancillary functions. To compile this module, you must supply these options to the root configure script:
4
5 --enable-gpl --enable-motion-est
6
7
8 EXAMPLES:
9
10 > inigo -filter motion_est <movie_file>
11
12 But that won't be very interesting. Do this to display the motion vectors:
13
14 > inigo -filter motion_est -filter vismv <movie_file>
15
16 If your using a movie file that contains a crop, you will get better results with this:
17
18 > inigo -filter crop_detect -filter motion_est -filter vismv <movie_file>
19
20 If your computer is unable to do the above examples in real time, try this:
21
22 > inigo -filter motion_est -filter vismv -consumer inigo real_time=0 <movie_file>
23
24 If you'd like to see the motion vectors before the median denoising function is applied, do this:
25
26 > inigo -filter motion_est denoise=0 -filter vismv <movie_file>
27
28 To automatically track an object in the frame, try this:
29
30 > inigo -filter autotrack_rectangle:X,Y:WxH debug=1 <movie_file>
31
32 (Where X,Y is the origin of the rectangle indexed from upper left and WxH is the dimensions of the rectangle.)
33
34
35 NOTES (and deficiencies):
36
37 1.  Ignore shot change detection when your using the autotrack_rectangle filter.
38
39 2.  Don't assume motion vectors displayed while stepping backwards and forward are that same vectors
40     that would be calculated while playing the footage from start to finish, nonstop. Stepping forward
41     should be fine after a few frames, however.
42
43 3.  SSE instructions are lazily assumed. MMX and Altivec would be good too.
44
45 4.  Motion estimation is only performed in the luma color space.
46
47 5.  Motion vectors should have sub-pixel accuracy.
48
49 6.  Motion vectors are not serializable yet.
50
51 7.  A diligent test suite is needed.
52
53 8.  Multithreaded code will see HUGE benefits on multi-CPU systems. Donations of a multi-core cpu or a
54     multi-cpu system to the author will encourage development.
55
56 9.  Macroblock sizes are not dynamic (Though settable at runtime.)
57
58 10. Notes (5), (7), and (9) would go a long ways to making this code suitable for a modern video encoder.
59
60 11. Shot change works well but arbitrarily chosen thresholds need to be tuned.
61
62 12. Given the nature of documentation of other motion estimation code bases, I will GLADLY clarify and
63     document any piece of code upon request.
64
65 13. Considerable effort has been put into the speed.
66
67 Zachary Drew
68 drew0054@tc.umn.edu
69