# 1. Title and Due Date # Hotspot Driven Collaging; due March 2, 2006. # 2. Problem Statement # Given a collection of images and user defined important regions, to find an orientation of the images on a canvas that minimizes overlapping and blank space while producing an aesthetically pleasing collage. # 3. Methods # Use Python for the image processing libraries. Create a user interface that allows the user to enter hotspot information, store it as a set of connected points forming a polygon. Place the images on the canvas by: A. Placing each image sequentially, using either brute force or a heuristic, depending on desired efficiency. B. Defining behaviors to each image depending on its hotspot information and allowing them to naturally place themselves. The behaviors will push every other image off of it until an equilibrium is found. # 4. Plan # Milestone 1: Reading of sets of rectangles and hotspots from files. Generation of image output. Behavioral implementation. Milestone 2: Loading of a single file type. Development of rectangle packing algorithm. Basic GUI. Milestone 3: Further expansion of placement algorithm: rotations, scaling, advanced layering and clipping. Milestone 4: Addition of borders. Drawing and procession of irregular hotspot shapes. Milestone 5: Importation of all file types. Previewing. Exportation for different formats. Cleanup of loose ends. The first step will be to create a foundation on which image-like input can be turned into visual results. Then this can be expanded upon to include more detailed routines for placing images/rectangles. # 5. Evaluation Criteria # If the program can load a number of images and place them onto a defined canvas size while producing a visually pleasing collage. The program must be simple to use and allow people without image editing experience to create collages with minimal effort. # 6. Deliverables # The Hotspot Driven Collaging program and examples to demonstrate its capabilities. # 7. Readings # Python books and web resources. Two dimensional polygonal collision detection readings. Placement & behavior algorithms (knapsack algorithms and variants). # 8. Risks # Learning Python and integrating it with the preexisting image libraries might be difficult. Program might run slow since necessary algorithms aren't extremely efficient and image processing is expensive. Collage might not look acceptable. # 9. Motivation # To create a collage generator that everyone can use and produce excellent images.