Exercises

  1. Calibrate a camera using cvCalibrateCamera2() and at least 15 images of chessboards. Then use cvProjectPoints2() to project an arrow orthogonal to the chessboards (the surface normal) into each of the chessboard images using the rotation and translation vectors from the camera calibration.

  2. Three-dimensional joystick. Use a simple known object with at least four measured, non-coplanar, trackable feature points as input into the POSIT algorithm. Use the object as a 3D joystick to move a little stick figure in the image.

  3. In the text's bird's-eye view example, with a camera above the plane looking out horizontally along the plane, we saw that the homography of the ground plane had a horizon line beyond which the homography wasn't valid. How can an infinite plane have a horizon? Why doesn't it just appear to go on forever?

  4. Implement a bird's-eye view in a video camera looking at the ground plane. Run it in real time and explore what happens as you move objects around in the normal image versus the bird's-eye view image.

  5. Set up two cameras or a single camera that you move between taking two images.

  6. If you had a calibrated stereo camera and were tracking moving points in both cameras, can you think of a way of using the fundamental matrix to find tracking errors?

  7. Compute and draw epipolar lines on two cameras set up to do stereo.

  8. Set up two video cameras, implement stereo rectification and experiment with depth accuracy.

  9. Set up stereo cameras and wear something that is textured over one of your arms. Fit a line to your arm using all the dist_type methods. Compare the accuracy and reliability of the different methods.