The Approach

Two main techniques are used to develop the mosaics.
The first is modeled after a project from Kihwan Kim working under Ifran Essa at Georgia Tech. In this technique, we attempt to place tiles of decreasing sizes over the target image. Starting at the largest size tile, the image is scanned to see if there is any good match for tiles of this size in the image. These tiles, and all other subsequent tiles, are prohibited from overlapping each other. If a good match is found, it is stored in a list of tile placements. Each tile placement is stored as the row and column coordinates of the tile, the size of the tile, and the source image to be placed there.
After the whole image is scanned at one size, the size is decreased, and the image is scanned again, trying to find placements between the already placed larger tiles for these new smaller tiles.
This process is repeated until the image has been scanned with the pre-determined smallest size tile.

Larger tiles are attempted to be placed down first because they are the most coherent by themselves.

In my implementation, determining if there was a possible match at any given location was done through exhaustive search of the possible source images. Each source image was compared against the area of the target image that was under the tile through SSD. To save time, instead of resizing each source image and the target image under the tile for each comparison, smaller versions of each source image were precomputed before scanning. At each tile size, the target image was resized to match the resolution of the source descriptor to allow for easy comparison. Other matching criteria besides SSD were not used in this implementation, and could possibly yield better and faster results.

Click here for results from the first technique

Sections

  1. Intro
  2. The Approach
  3. First Method Results
  4. Second Method Results
  5. Backing away to 20 meters...
  6. Meta Results