Parallel Seam Carving

Aditya Bist, Vinay Palakkode

Our final project for the course 15-418: Parallel Computer Architecture and Programming

Seam Carving is a content-aware image resizing algorithm developed by Shai Avidan, of Mitsubishi Electric Research Laboratories (MERL), and Ariel Shamir, of the Interdisciplinary Center and MERL.[1] Check out the demo here. For the final writeup of the project, click here.

Checkpoint Updates

  1. We spent time doing research on a good number of seam-carving implementations which incorporate differentergy functions, ranging from simple gradient to HoG.
  2. As per the plan, we are a week behind the schedule. We could only implement a single threaded baseline version of the seam-carving algorithm.
  3. We have a data set now with 10 different images which has different energy distributions.

Status Update

  1. We have implemented a seam-carving (like) algorithm on GTX 750 which is about 6x faster than a baseline CPU implementation of the same for average cases.
  2. We are still working on finding an optimal criterion for switching between seam-carving and scaling.
  3. We will shortly update the following graphs:
    • GPU-Speed up vs number of seams removed (width reduced) for a given resolution (average figures). ✔
    • GPU-Speed up vs the (width) size of the image for a given number of seams to be removed. ✔
    • A surface plot combining above two with more data points for completeness.
  4. We ‘ll shortly update the analysis of Classic algorithm Vs Our algorithm (x86 CPU only).

Schedule

  • April 03 - April 09: Sequential C++ implementation of the Seam Carving algorithm. Profile the energy computation and seam map calculation stages and also come up with a test harness. Profile this naive algorithm on x86.
  • April 10 - April 16: Figure out the cases where seamcarving performs poorly than scaling in terms of quality and vice versa.
  • April 17 - April 23: Finish and profile energy map computation and start implementing seam map computation on CUDA.
  • April 24 - April 30: Complete seam map computation and profile it.
  • May 01 - May 07: Final iterations of bug-fixing, optimization, performance analysis and final report preparation.
  • May 08 - May 11: Prepare the presentation and hand in the code.


Copyright © Carnegie Mellon University 2015