Basic Seam Carving (shrink.m)

Here are the results from shrinking images using basic seam carving

Images on Website

Original Image Vertical CarvingHorizontal Carving

Good Examples

In all of these examples, the results are good because they have areas of uniformity that extend both verticlly and horizontally. It is interesting with the text image, I had assumed that it would get distorted since it is greatly pack with variation throughout, but it managed to just bring the words closer together, which i thought was a neat effect. I am sure if more seams were removed however the words would eventually become distorted

Original Image Vertical CarvingHorizontal Carving

Bad Examples

With human faces, the seam carving becomes much more apparent as familiar features become distroted.

With the straws, there is no room for removal. Any seam that is removed will be apparent. There is no real uniform area.

Similar to the human faces, seam removal with animals becomes more apparent as the features are familar

Images with circular structure become distorted.

Bells and Whistles

Seam Insertions

So we insert by finding the seam with least energy and adding the average of that seam and the one next to it

Object Removal

We remove an object from the picture. This is done by first having the user give the upperleft and lower right point of the bounding box around the object to be removed. The algorithm then associates that area with negative weights so that it will be chosen for seam removal. The number of seams removed is counted and then inserted back with the Seam insertion above.

Offline/Online Optimization

I kindof did a variation of the offline optimization, where you can select how often the energy map is calculated. It can be very accurate where it recalculates the map after every removal or less where it only calculates the map and the paths one time and then does all insertions off of that, and anything in between. (see both shrink.m and grow.m)