SciViewer Capstone

The Project


The SciViewer application is an optimized solution to viewing large image files (20GIG to half a terribyte) in a timely manner. This system will run on all three OS platforms: Windows, Linux, Mac OS and consist of a user-friendly interface. The way in which this is done is using a new algorithm called stochastic sampling in addition to already used pre processing techniques tiling and pyramiding. Pre processing allows an image to be formatted in a way that allows it to be loaded in quicker.

Pyramiding takes copies of an image in which the lowest resolution version is on the top and the base of the 'pyramid' is the highest resolution image. This stategy allows for a larger form of an image to be pulled easily. Tiling breaks an image down into a grid of tiles this allows it to load several tiles rather than the single large image.

The above image diagrams the pyramid method. At the top, there is a smaller version of the image with a reduced resolution and as it is zoomed, there is another larger copy of the file that gets loaded and displayed rather than loading the one large file. This acts as a caching method to quickly call the smaller images which are a fraction of the original image's size.

The second image illustrates the concept of the tiling scheme. The image is broken down into a grid as shown above in red. Each small square within this grid is a tile and when an image is zoomed in on, only a select few tiles are needed and only they are loaded into memory not the entire image.

Our strategy not only uses the above two forms of pre processing but we built upon it with an algorithm known as stochastic sampling (illustrated below):

Our algorithm works as follows:

  1. An image is broken down into a grid of blocks of equal size
  2. The algorithm runs along each row looking at one block at a time
  3. Within each block, a set number of samples are taken (shown in red)
  4. Those samples are then averaged and represented as one pixel in the final image

SciViewer combines all three methods to create a fast loading image viewer. The above illustrates how this is done. Each time an image is zoomed or panned upon, pyramids are generated on demand. As the image is zoomed or panned specific tiles are also called to reduce the amount of data is needed to be inputted into the algorithm to give a result back to the user.

SciViewer uses several libraries to accomplish its processes. Our base algorithm is written in C and with that we incorporate GDAL, the Geospacial Data Abstraction Library which allows the program to use an array of special image file types such as cube files. In addition to GDAL GLFW and OpenGL are needed to view and render the image. GLFW prepares the file while OpenGL renders it to the screen.

SciViewer allows those that work for USGS as well as other science facilities have a simple application to view their files at a faster rate which in turn allows for more productivity and less frustration when dealing with large files that can take up as much as 500 gigabytes or more.