Exercises
There are sample code routines in the …/opencv/samples/c/ directory that demonstrate many of the algorithms discussed in this chapter:
lkdemo.c (optical flow)
camshiftdemo.c (mean-shift tracking of colored regions)
motempl.c (motion template)
kalman.c (Kalman filter)
The covariance Hessian matrix used in
cvGoodFeaturesToTrack()is computed over some square region in the image set byblock_sizein that function.Conceptually, what happens when block size increases? Do we get more or fewer "good features"? Why?
Dig into the lkdemo.c code, search for
cvGoodFeaturesToTrack(), and try playing with theblock_sizeto see the difference.
Refer to Figure 10-2 and consider the function that implements subpixel corner finding,
cvFindCornerSubPix().What would happen if, in Figure 10-2, the checkerboard were twisted so that the straight dark-light lines formed curves that met in a point? Would subpixel corner finding still work? Explain.
If you expand the window size around the twisted checkerboard's corner point (after expanding the
winandzero_zoneparameters), does subpixel corner finding become more accurate or does it rather begin to diverge? Explain your answer.
Optical flow
Describe an object that would be better tracked by block matching than by Lucas-Kanade optical flow.
Describe an object that would be better tracked by Lucas-Kanade optical flow than by block matching.
Compile lkdemo.c. Attach a web camera (or use a previously captured sequence of a textured moving object). In running ...