For new assignments, you are required to use the CSIL Subversion repository to do your work in. The TAs will have a script that will run at 8:00 a.m. on Sunday when the assignment is due that does a svn export of your most recent code in the repository. If you have not finished by that time, it is your responsibility to e-mail your TA and send your code later by hand. The same late penalty of -5 per hour still applies.

Post questions, concerns and comments to the class newsgroup at class.cs242


Image Editor - Compression

Assignment 8 - October 22, 2006
Due: 8:00AM Sunday, October 29, 2006. In the SVN repository
Language: Any programming language of your choice

Objective:

You will implement a compression algorithm and integrate it with your Image Editor so you can:

NOTE: The final project proposal is also due by e-mail before your discussion section.

You are free to use any compression algorithm you devise or read about, but you are not allowed to use a prebuilt library. As a recommendation for simplicity, run length encoding will probably be the most straightforward compression, but the benefits aren't very impressive unless there are large patches of solid color. A much more enjoyable algorithm is Huffman Coding, which is not that much more dificult as far as implementation goes, but can achieve much better results.

You may want to think about making your compression format general, so you could use it in other applications as a library you plug in. In this case, it should clearly be a lossless compression scheme. You could also make the scheme specific to images, so you get better compression for those kinds of files. If you are only compressing images, you may want to consider lossy compression. Either way, the compression code you write should not be tightly coupled with the Image Editor code itself. It should be something like one call to compress and one to decompress.

You are encouraged to use the newsgroup to ask the TAs and your classmates questions, but to get you started, here are some links:

Your implementation should not be trivial (compressing everything to a single pixel, for example), but we encourage you to play with different kinds of compression.

Grading:



Previous assignments


07_image_editor.html
06_threaded_comments.html
05_parse_metadata.html
04_metadatagenerator.html
03_FSMportfolio.html
02_rasteroptimizer.html
01_rastergenerator.html