# 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. Place all images at once in the center, and give behaviors to each image depending on its hotspot information. The behaviors will push every other image off of it until an equilibrium is found. # 4. Plan # Milestone 1: Setup image importing libraries. Basic GUI. Load basic image and display. Milestone 2: Implement simple hotspot selection. Basic collision detection. Simple placement algorithm. Milestone 3: Advanced placement and behavior algorithms/heuristics. Milestone 4: Develop advanced hotspot selection. Feathering/blending of image edges. Milestone 5: Advanced collision detection. Advanced GUI. Fast previewing. Exporting of different formats. The first step will be to learn the image importing library APIs and be able to load images. By the end of the first week, implement a basic GUI which can load images sequentially from a given folder and allow the user to draw on them with a tool. # 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.