Difference between revisions of "2D-Packing Rectangles and Images"

From dftwiki3
Jump to: navigation, search
(Packing Photographs)
m (Thiebaut moved page 2D-Packing to 2D-Packing Rectangles and Images)
(No difference)

Revision as of 19:02, 3 October 2013

--D. Thiebaut (talk) 10:26, 8 July 2013 (EDT)



2D-Packing Rectangles

This page is aliased to the easier to use URL: http://tinyurl.com/2DPacking.
It contains information about a 2D-rectangular packing heuristic developed by D. Thiebaut to create collages of large collection of images.
The 2D-Packing Algorithm and the videos were generated by Dominique Thiebaut, (dthiebaut at smith.edu), Dept. Computer Science, Smith College, Northampton, MA 01060, USA.





One-thread 2D-Packing

A demo made of a 2D-Packing heuristic. The algorithm is given 10,000 randomly generated rectangles.
The heuristic is multithreaded, with a "manager/worker" scheduling algorithm. In this movie 1 manager distributes rectangles to just 1 worker. So it is a multithreaded scheduling algorithm running but only one thread does the packing. The rectangles are colored by the first worker they are given to, and therefore are all colored the same here. See below for examples of true multithreaded packing.
This version of the heuristic stops packing when it has reached a threshold, in this case if more than 99% of the original rectangular surface is covered. This corresponds to 9,848 rectangles of the 10,000 original ones picked. The actual coverage of the surface is 99.64%, corresponding to a packing factor of 1/0.9964 = 1.0036.
The demo is written in Java and uses Processing for the display of the progression of the algorithm. The program is run on a MacPro with 2 x 2.8 GHz Quad-Core Intel Xeon processors, and 12 GBytes of RAM, and runs in 30.18 seconds.


Multithreaded 2D-Packing

A demo made of a 2D-Packing heuristic. The algorithm is given 10,000 randomly generated rectangles.
The heuristic is multithreaded, with a "manager/worker" scheduling algorithm. In this movie 1 manager distributes rectangles to 6 workers. The rectangles are colored by the first worker they are given to. Workers return rectangles to the manager when they cannot pack them, and the manager distributes them to other workers.
This version of the heuristic stops packing when it has reached a threshold, in this case if more than 99% of the original rectangular surface is covered. This corresponds to 9,869 rectangles of the 10,000 original ones picked. The actual coverage of the surface is 99.14%, corresponding to a packing factor of 1/0.9914 = 1.0087.
The demo is written in Java and uses Processing for the display of the progression of the algorithm. The program is run on a MacPro with 2 x 2.8 GHz Quad-Core Intel Xeon processors, and 12 GBytes of RAM, and runs in 17.79 seconds.


Multithreaded 2D-Packing with pre-placed items

A demo made of a 2D-Packing heuristic. The algorithm is given 10,000 randomly generated rectangles, 5 of which have been modified to have fixed positions, and specific locations in the final rectangular surface. These are the pre-placed items.
The heuristic is multithreaded, with a "manager/worker" scheduling algorithm. In this movie 1 manager distributes rectangles to 6 workers. The rectangles are colored by the first worker they are given to. Workers return rectangles to the manager when they cannot pack them, and the manager distributes them to other workers.
This version of the heuristic stops packing when it has reached a threshold, in this case if more than 99% of the original rectangular surface is covered. This corresponds to 9,823 rectangles of the 10,000 original ones picked. The actual coverage of the surface is 99.10%, corresponding to a packing factor of 1/0.991 = 1.0090.
The demo is written in Java and uses Processing for the display of the progression of the algorithm. The program is run on a MacPro with 2 x 2.8 GHz Quad-Core Intel Xeon processors, and 12 GBytes of RAM, and runs in 20.8 seconds.


Packing a Million Rectangles

This is a real-time screen capture of the packing of 1 million rectangles implemented in Processing. The heuristic used is described in "2D Packing Images on a Large Scale" authored by D. Thiebaut and to be presented at INFOCOMP 2013.
In the video the rectangles are randomly sized and packed in a greedy fashion, the rectangle with the largest height put in the largest and left-most space available. The packing was captured on a 2.8 GHz Mac Pro. The application is serial, and not threaded. The Processing GUI thread works in parallel to the packing and displays (in a choppy way) the rectangles packed so far. The total time is less than 8 real-time seconds.



Packing Photographs

The collage below contains about 200 photographs, some of them duplicated. They have all been resized by a random factor. The dimensions are not all the same as some photographs have been cropped to improve their artistic value. They represent sky shots taken in Northampton, MA, over the course of two years. All photos belong to this wiki owner.

NohoSkiesCollage1.png


The collage below contains 2,200 photographs. The photographs have been resized by a random factor, and not all photographs have the same aspect ratio. All photographs owned this wiki owner.

OneYear 2 2K.png


Publication

A report describing the algorithm is in the works and will be available shortly.