Matlab code for Seamcarving
Seam carvingalso known as Image retargeting, content-aware image resizing, content-aware scaling, liquid resizing, or liquid rescaling, is an algorithm for image resizing.It functions by establishing a number of seams (paths of least importance) in an image and automatically removes seams to reduce image size or inserts seams to extend it. Seam carving also allows manually defining areas in which pixels may not be modified, and features the ability to remove whole objects from photographs. The purpose of the algorithm is to display images without distortion on various media (cell phones, PDAs) using document standards, like HTML, that already support dynamic changes in page layout and text, but not images
The diversity and versatility of display devices today imposes newdemands on digital media. For instance, designers must create different alternatives for web-content and design different layouts fordifferent devices. Moreover, HTML, as well as other standards, cansupport dynamic changes of page layout and text. Nevertheless, upto date,images, although being one of the key elements in digitalmedia, typically remain rigid in size and cannot deform to fit differ ent layouts automatically. Other cases in which the size, or aspectratio of an image must change, are to fit into different displays suchas cell phones or PDAs, or to print on a given paper size or resolution.Standard image scaling is not sufficient since it is oblivious to theimage content and typically can be applied only uniformly. Cropping is limited since it can only remove pixels from the image periphery. More effective resizing can only be achieved by considering the imagecontentand not only geometric constraints.We propose a simple image operator, we termseam-carving, thatcan change the size of an image by gracefully carving-out or inserting pixels in different parts of the image. Seam carving usesan energy function defining the importance of pixels. A seam is aconnected path of low energy pixels crossing the image from top tobottom, or from left to right. By successively removing or inserting seams we can reduce, as well as enlarge, the size of an imagein both directions .For image reduction, seam selection ensures that while preserving the image structure, we removemore of the low energy pixels and fewer of the high energy ones.For image enlarging, the order of seam insertion ensures a balancebetween the original image content and the artificially inserted pixels. These operators produce, in effect, acontent-awareresizing ofimages.
We illustrate the application of seam carving and insertion for aspect ratio change, image retargeting, image content enhancement,and object removal. Furthermore, by storing the order of seam removal and insertion operations, and carefully interleaving seams inboth vertical and horizontal directions we define multi-size images .Such images can continuously change their size in a content-awaremanner. A designer can author a multi-size image once, and theclient application, depending on the size needed, can resize the image in real time to fit the exact layout or the display.Seam carving can support several types of energy functions such asgradient magnitude, entropy, visual saliency, eye-gaze movement,and more. The removal or insertion processes are parameter free;however, to allow interactive control, we also provide a scribble-based user interface for adding weights to the energy of an imageand guide the desired results.
Seamcarving - How it works
1) Take an image such as
2) We then calculate the weight/density/energy of each pixel. This can be done by various algorithms: gradient magnitude, entropy, visual saliency, eye-gaze movement. In this example gradient magnitude gives 'satisfactory results.'
3) After we have the energy of the image, we generate a list of seams. Seams are ranked by energy, with low energy seams being of least importance to the content of the image. We can choose to calculate seams via the dynamic programming approach.Seams shown with the energy function:
Seams shown with the original image:
4) We then remove the seams from the image, reducing the size of the image as a result:
The recalculated energy function of the image would be:
All the examples shown so far in this article were computed automatically,but this method does not work automatically on all images.This can be corrected by adding higher level cues, either manualor automatic.
We can characterize two major factors that limit our seam carvingapproach. The first is the amount of content in an image. If theimage is too condensed, in the sense that it does not contain ‘lessimportant’ areas, then any type of content-aware resizing strategywill not succeed. The second type of limitation is the layout of theimage content. In certain types of images, albeit not being condensed,the content is laid out in a manner that prevents the seamsfrom bypassing important parts
GUI Matlab code for seam carving
Seam Carving for Content-Aware Image Resizing
ShaiAvidan,Ariel Shamir,Mitsubishi Electric Research Labs