My project idea is to create a tool for seam carving, also known as content-aware image resizing. Seam carving is an algorithm that resizies images in such a way to preserve the content of the image, while cropping the image down or scaling the image up.
Basically, when seam carving, the algorithm finds the seam with minimum difference in pixel color to it's neighbors, removes that seam, and repeats the process until the image is now the correct dimension. The process is basically reversed for upsizing and adding seams. This is (in general) a better way of resizing than scaling/cropping, because it preserves the original scale of the image and also preserves the main content of the image.
I plan on having a single window, where users can upload and display an image, specifiy the new dimensions, and can view/save the resized image. I also plan on having an option for users to view the image with the seams on top of it.
Some extra features that may or may not be worked on:
- Face detection
- Object removal
OpenFrameworks will be used create a windows application for this project. Specifically, I will be using the graphics library to load/display/save images. The algorithm/processing will not use any outside libraries. I will also be using OpenCV to draw the seams.
Wikipedia Article
Article from Brown University
Research Article
CMU Article