Have students implement a seam carving program in Java to give them experience with dynamic programming, and with manipulating 2D and 3D arrays.

  • Seam carving is a clever algorithm for image resizing.
  • This assignment for implementing a seam carver has three main parts:
    • Energy Calculation. Given an image, calculate the energy matrix: A 2D array representing the "importance" or "energy" of each pixel.
    • Seam Identification. Given an energy matrix, find the lowest energy contiguous path (seam) from top to bottom.
    • Seam Removal. Given an image and a seam, generate a new image without the pixels in that seam.
  • For a detailed explanation of this assignment, visit Stanford’s nifty assignment page.