Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I saw an incredible demo on Photosynth and Seadragon, some "deep zoom" technology recently acquired by Microsoft. There's also a less responsive version on the web.

I'd really like to know how the technology works. Blog entries and web pages welcome, but the ideal answer will include one or more references to published papers in the professional literature.

share|improve this question
    
Maybe better suited for SO? –  Bobby Jun 9 '10 at 9:58
    
Another related cool Microsoft technology, that also uses deep zoom for some of its functionality is Photosynth - photosynth.net - it's very easy to download the client and create your own to see how it works, all you need is a whole set of digital photos of the same area/object. –  GAThrawn Jun 9 '10 at 10:21
    
@GAThrawn: Indeed so. That's why I mention Photosynth in the text of the question :-) –  Norman Ramsey Jun 19 '10 at 16:35
    
Be sure to check out all three links on livelabs.com ;-) –  Tom Wijsman Sep 5 '10 at 20:12
    
And to easily create your own visit zoom.it ;-) –  Tom Wijsman Sep 5 '10 at 20:14
add comment

1 Answer

bottom line: do not try to render more pixels than what is possible by the screen. you do not need to touch data which is not relevant for the final image because it can not be seen anyway. lets take a normal image viewer:

  • you have the original image as rgb pixels in ram
  • you want to display the image

so, normally you create a surface you can draw to and then you iterate over the original data and paint the pixels on the surface accordingly. if you "zoom closer", you draw 4, 8, 16 pixels per zoom instead of the original. and if you "zoom away", you draw only every 4th, 8th, 16th pixel (or, to improve quality you calculate a new color based upon the pixels around the one you would pick).

the problem with zooming closer: you tend to let the window system clip away pixels outside the viewable area, though you still have a, lets say, 8k * 8k big surface. your screen is 1980x1020 .. so thats a huge waste of memory (and speed in the end). it would be better to find out what is visible BEFORE you start to get data from the original source.

the problem with zooming out: you have to calculate over and over the final pixel. it would be better to have the original data as best as possible AND at some lower resolutions.

so, seadragon combines several things: calculating what the user can see, accessing the data to fill only the viewable area, and do that filling very very fast. additionally be prepared to fetch data that is "close" to where you look at right now. it is uncommon to zoom into a picture VERY close and then jump INSTANTLY to the other corner of that image. normally you pan around in one region a little bit so one could prefetch the data as well.

better and deeper explanation:

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.