150 likes | 335 Views
Mosaic Creator. Lance Finfrock CS 470. Introduction. A Mosaic is hundreds or thousands of pictures comprised to make one picture. Specifications. Develop an algorithm that builds a mosaic Provide a logical user interface Provide an Interactive Mosaic viewer
E N D
Mosaic Creator Lance Finfrock CS 470
Introduction • A Mosaic is hundreds or thousands of pictures comprised to make one picture.
Specifications • Develop an algorithm that builds a mosaic • Provide a logical user interface • Provide an Interactive Mosaic viewer • Allow the user to save and print their mosaics
Mosaic Creation Algorithm • Divide the original picture into thousands of smaller sections • Find the difference between each section and mosaic pieces • Choose the best piece
Finding the difference between each section and piece For every pixel in the original section and the Mosaic piece find the difference between each color value
Choosing the best piece • Take the piece with the minimal difference • The option without duplicates • After a piece is chosen, take it out of the pile not to be chosen again • The option with duplicates • When a piece is chosen, place it back in the pile to be chosen again
Blending • Take each pixel color from the original picture and the mosaic pieces and combine them together
Graphical User Interface • Preview Window • Number of Pictures Found • Amount of Divisions • Allow Duplicates • Best Picture Match
Saving and Printing • Saving • Three different sizes of JPEG images • Store as a .mosaic to be opened again in the Interactive viewer • Printing • Prints to the size of the page
Requirements • Java Virtual Machine 1.4.1 or higher • 128 MB of RAM or higher • 1.0 GHz or higher processor speed • 800 by 600 or greater Screen resolution • JPEG or GIF images only
System Architecture Print Open Mosaic Main Window Display Interactive Viewer Mosaic Algorithm File Finder Save
Incremental Prototyping • Incremental Prototyping was used because : • GUI needed to be user friendly • Did not have a good grasp on what was possible • Needed to test program on other systems • Red Hat • MAC • Other windows machines
Conclusion • I learned: • Programming techniques : • Threads • Create a usable GUI • Manipulation of images • Printing and saving of images • How to design a large project from the ground up