## 1. Title and Due Date Hotspot Driven Collaging* due March 2nd, 2006 ## 2. Problem Statement To create a program that does the tedious human task of placing images in nice looking locations to create a collage. The program will rely on the user selecting regions of interest, or hotspots, that it will factor into its image placement. The goal is to create a collage that has the hotspots of each image visible and to have the less important regions blend or be covered by other images. ## 3. Methods The plan is to have most of the program written in python. The image processing will be implemented with the libraries written by the graphics group. Simple collision detecting will be used for rectangular hotspots, but a much more complicated process must be developed for arbitrarily shaped hotspots. The two possible solutions would be to either implement an image placement entity that can determine a 'value' for each possible location of an image, based on how much of the image is visible, if the image needed to be scaled down or up, etc. The other possibility would be to 'stack' all the images initially and have each image object know how to deal with having their hotspot obstructed, either by moving, rotating, scaling, etc. Then apply constraints so that eventually all the image objects will converge on a solution, which should be the completed collage. ## 4. Plan - Milestone 1: Get all image processing functions working using the graphics group's libraries. - Milestone 2: Do simple rectangle hotspot regions and all related UI tools. - Milestone 3: Create a collaging algorithm for rectangular hotspots. - Milestone 4: Implement arbitrarily-shaped (think lasso selection tool) hotspots and all related UI and data structures. - Milestone 5: Implement the best working collaging algorithm for arbitrarily-shaped hotspots. ## 5. Evaluation Criteria The program will be completed when it can take an arbitrary number of images and place them into an arbitrarily sized collage that looks nice with as little tedious work asked of the user as possible. If the results look similar enough to someone doing a collage by hand (or by mouse) and requires a lot less time for the user, than the program will be a success. ## 6. Deliverables The program itself and a few example collages we feel best displays the programs ability. ## 7. Readings I have already read a few siggraph papers that have to do with image processing and manipulation, but nothing thats directly usable for this project. As we go, I intend to find reading on collision detection of arbitrarily shaped objects, as that will likely prove useful for milestone 5. If I find myself with not enough to read, I will default to image processing-based siggraph papers. Additionally, any python issues that show up will require a brush up on python literature. ## 8. Risks The biggest potential risk I see at this time is running into language-related roadblocks. I feel comfortable with python but my experience has been relatively basic, and I expect to have to learn a bit more about the nuances of the language before this project is completed. Also, milestone 5 may end up being the majority of the project, I hope my expectations for the results are not unreasonable for my abilities and schedule. ## 9. Motivation I think this is a great first project. I don't think the expectations are out of reach in five weeks and I'm eager to really solidify my python abilities. Overall, I want to ensure my first steps into the realm of CS research are smooth ones, even if they are small.