Wednesday, January 3, 2007

Photo Mosaic Project

As of today, I am starting a new project that I have been thinking about for some time. Given my "free time" while on the beach, I am hoping to get a fair bit of the research done and beyond the "I wish I had time to do ___" phase.

Project Idea: Photo Mosaic Software
Project Background/Reason: I have taken thousands of photos of the past year+ and would love to find a way to incorporate them all into a some type of summarized fashion. I have seen numerous posters, images, collections of photo mosaics over the past few years and have always thought it might be interesting trying to develop software that could produce reasonable facsimiles from a group of stock photos.
Project Goals: Develop a fully contained piece of software that given a seed picture, a collection of stock photos and some other information (algorithm to use, sizing, etc), will produce a composite mosaic of the seed picture with a given size and resolution. My main goal in the end is to be able to use the software to produce a poster size print of another photo I have taken of probably Emily and myself (or something else from the past year) made up of all of the the rest of my 2006 photos and hang it on our wall.
Probable Project Phases:

  1. Get a better feeling of the image types are being used (mainly jpeg), image processing API's available, etc.
  2. Figure out a very basic initial algorithm for deciding how much a stock photo resembles the portion of the seed image in question.
  3. Write up a framework for the image manipulation, editing, creation, storing of image meta-data, and analysis.
  4. Write up a basic shell of the software that allows for the main inputs/outputs/previews to be seen and edited.
  5. Refine algorithms, framework for performance and correctness.
So, as of right now I am on step zero. i.e. writing a post about the project. I think this could be a pretty cool one. Image analysis has always been something I have had an interest in, but have never really pursued. The project gives me an excuse for having all of the photos I have taken over the past year or so, and should give me a creative outlet when trying to come up with fast and effective algorithms for deciding which picture is best. Also, I am hoping that when it comes time to figure out the better algorithms, I may be able to get some outside help. As long as we can talk about it in an implementation agnostic way, I bet Kevin/Josh/my dad, etc could combine for some pretty interesting algorithms.

Thanks to my mom for reminding me about this project. Every time Em and I went home I would remember it but through the hussle and bussle of the holidays would forget to write down any of my thoughts. She sent me a link to two very interesting photo blogs (they have been added to my del.icio.us page) one of which contained the image to the left. Pretty neat if you ask me.

Also, in my quick searching on wikipedia for related topics, I found a link to: MacOSaiX. A small software utility which is basically exactly what I want to develop, for Mac OS X. Which only reaffirms my ambition to write this code. It looks like it has some interesting features. I will probably use it as a baseline once I get my new computer. [Although the sample images created are pretty low resolution, hopefully I can do better, but I feel clarity will be limited by processing time and stock photo collection size. Hopefully I can tackle both of those problems] One really cool feature of his product is that you can give the software a set of google image searches and it will use those for its stock photo collection. Neat idea.

1 comment:

Josh Schramm said...

good luck. Sounds like a neat project.