Seamstress is a portable library that implements Avidan and Shamir's seam carving technique for content-aware image resizing.
Seam carving is a technique developed by Shai Avidan and Ariel Shamir for resizing images by removing the boring bits (content-aware image resizing as they call it). Shamir's web page has more information, including their paper. There is a video you can download from there that they presented at SIGGRAPH 2007. You can also watch it here.
Seamstress is an independent implementation of seam carving. The Seamstress library is a portable and takes care of the details of doing many of the things described by Avidan and Shamir. Others (like image expansion) are easy to implement yourself using the library.
Arachne is a GTK+ program designed to show off Seamstress at its best. It allows you to do the realtime fluid resizing with any image like that shown in the video above.
Seamstress and Arachne are both open source. If you find either of them useful, do let me know. If something seems wrong, of you have an idea for something that's missing, let me know so I can fix it.
What's New in This Release: [ read full changelog ]
· Previously the maximum unpickable image was 2048x2048 pixels. However there was space in the nodes used to carve 4096x4096 pixels so this is the new maximum size.
· When dynamic energy was used with marks a buffer overflow occurred when the energy was computed between each seam removal which caused technically inaccurate results and occasional crashes. This bug has been fixed.
· When dynamic energy was used without marks the energy was not properly recomputed between each seam removal which caused technically inaccurate results. This is now done and the update code has been refactored into the unpicker module from the energy module.
· Some energy functions were still using ad hoc transposition tests which would cause odd results on perfectly square images with unpickers. The direction of seam carving is now always read from the value provided by the caller.