Monday, July 6, 2009
Another impressive large image
Very large images do not have to be panoramas. This one is created by stitching hundreds of images coming from a Scanning Electron Microscope. You can find more information here.
Monday, January 26, 2009
Gigapixel images becoming mainstream on the web
Here is the latest gigapixel image available on the web. As it is related to Barack Obama's inaugural address, it has received all possible attention and reviews. Image credit goes to David Bergman.
While not new, such a large image is very interesting because of how it has been made, and how it is distributed.
The process for image creation involves a robotic arm called Gigapan Imager, that automatizes completely the process of taking an array of pictures. Having such almost perfectly aligned images allows their custom software to stitch the images with a very impressive quality. Device price is about $279 as Beta ($379 otherwise).
The image is then made available on the Web using a Google Maps like interface provided by Gigapan.org.
This makes creating and distributing giant images much easier than it was before.
Thursday, November 27, 2008
Hacking the Webmail Notifier USB device
Some time ago I ordered the USB Webmail Notifier (only $17). When I received it, I was disapointed to find that the bundled software was very limited, only using the POP3 protocol. This protocol for example has no way of returning number unread mails, so the use cases are rather small.

So I decided to look at how I could code for this device. I found this very useful (albeit quite old) article on USB HID devices, a wery well though standard for this kind of devices (and keyboards, mouses, joysticks).
I also used a USB protocol analyzer to see what data was sent to the device. I managed to make it accept any color I want (whereas the bundled software only has green, red and blinking blue).
Each component is 5 bits, that makes some noticable transitions between adjacent colors. Also not all colors we use to get on LCD displays are available, because there is no black.
Here is a small image of an orange notifier.

I made 3 command line programs (building them requires the Windows DDK):
- a simple color setter, arguments are R G B
- a HUE wheel switcher
- a CPU usage related color, green beeing 0%, red 100%
There is certainly many other possible uses for this cheap device:
- An IMAP4 mail notifier, making use of all IMAP4 features
- An automatic build indicator, for example for CruiseControl
- an event remainder
- ...
As usual source code will be send on request.
Friday, November 21, 2008
Biggest image I have ever created created
While browsing Wikipedia I found some code to generate nice fractals.
I have adapted the code to create really huge images.
The largest I have to date is computed at 512000 x 300000 pixels. The image is black and white, I use a binary fromat to save space (1 bit/pixel), that still makes the uncompressed file about 20 Gigabytes. Computation time on a Core2Duo 2 Ghz is about 4 days (with some pausing).
I then compute a multiresultion tiff of half size (because it looks better). The final image is about 256000 x 150000.
Here is a detail:

I have adapted the code to create really huge images.
The largest I have to date is computed at 512000 x 300000 pixels. The image is black and white, I use a binary fromat to save space (1 bit/pixel), that still makes the uncompressed file about 20 Gigabytes. Computation time on a Core2Duo 2 Ghz is about 4 days (with some pausing).
I then compute a multiresultion tiff of half size (because it looks better). The final image is about 256000 x 150000.
Here is a detail:

Code I have wrtitten uses OpenMP #pragma. I had the opportunity of trying this code in a new Intel machine that has a total of 16 threads (2 CPUs x 4 Cores x 2 Hyperthreads). Using a single parallelfor instruction allowed me to gain a factor of 10 over single threaded code. Not too bad. Of course dynamic threads ala Intel TBB would have allowed further gains, but at the expense of more code.
Friday, August 22, 2008
Massive mesh
In order to generate the 3d objects for my fractals, a large number of triangles have to be generated, so that very detailed areas are not badly rendered.
I can generate up to 2 Billion triangles, more than 50 Gigabytes of data.
In order to see the result, I have modified my small viewer so that drawing is done reading directly the triangles on disk. This takes about 1 hour on my machine, but virtually unlimited number of triangles can be displayed, even on a basic computer.
The following object has exactly 1 447 147 377 triangles.
Of course for interactive display the number of triangles is reduced to about 10 000 000.
I can generate up to 2 Billion triangles, more than 50 Gigabytes of data.
In order to see the result, I have modified my small viewer so that drawing is done reading directly the triangles on disk. This takes about 1 hour on my machine, but virtually unlimited number of triangles can be displayed, even on a basic computer.
The following object has exactly 1 447 147 377 triangles.
Of course for interactive display the number of triangles is reduced to about 10 000 000.
Subscribe to:
Posts (Atom)