Monday, 17 January 2011

Visualising Large Data Sets - Exoplanets - The Video

Exoplanet discovery, from 1988 to 2010...

Watch it on YouTube! Over a decade of data, 300 planetary systems and 50 million cubic light years in just over 2 minutes.

Software used:
ImageJ - scripting and rendering of the video frames
FFMpeg - video transcoding

Sunday, 16 January 2011

Visualising Large Data Sets - Exoplanets

Extremely large data sets pose extremely large challenges... A data set like all confirmed planets around stars other than the Sun (518) and where they sit among the 70000 stars that lie within 200 parsecs (670 light years) of the Sun is a challenge. What better way to show it than with an animation which tracks the discovery of each exoplanet, which star it orbits, where that star is in 3D space relative to the Sun, and the various orbital properties of the planet...

The data
The data I have used is from two totally open, and very useful, data sets: http://exoplanets.org/ for panetary data and http://astronexus.com/node/34 for star data.

Step 1: The timeline.
Exoplanet discovery streaches from 1988 to now. Back in 1988 the first report of evidence for a planet around another star, gamma Cephei, was published and was eventually confirmed as correct in 1996. This sparked huge new interest in exoplanets and since then the number of exoplanets discovered each year has shot up, reaching nearly 100 in 2010. As data from NASA's Kepler mission is confirmed over the course of 2011 this number is likely to shoot up again.
Each planet is added to the final diagram, showing both its 3D location and orbital properties, in the year of its discovery. The entire animation lasts 3200 frames; roughly 2 mins. In 2010 a new planet appears nearly every frame of the animation!

Step 2: The 3D location
The 3D location of many stars near Earth are known, their position is calculated by the position they lie in the sky and the distance to the star as calculated from stellar parallax. This gives fairly accurate 3D locations for many stars within aroun 200 parsecs of Earth. Data about the star's brightness (absolute magnitude) and colour (from the B-V index) can also be used to make a nice looking picture of the Sun's neighbourhood. Unfortunately not many programs can cope with this kind of complex plotting, so I wrote my own:

I use the camera location (rotation around the z axis (theta), angle of elevation (phi) and image scale) and the x, y, z location of a star to project the location of the star onto a 2D image.
a=x*sin(theta)+y*cos(theta)
b=-x*cos(theta)+y*sin(theta)
c=b*sin(phi)+z*cos(phi)
The projected position of the star in the final image is a, c. The star's brightness and colour were then calculated to choose the pixel colour at the star's position.

This picture shows a section of the final 3D starmap. It is animated by rotating it gradually around the z axis to highlight the 3D effect.

Step 3: The planetary system
The most interesting thing about the exoplanet star systems is their arrangement; how big the planets are, how far they are from their parent star and what shape their orbits are. All these properties are summarised in just 3 numbers: estimated minimum mass (measured in Jupiter masses), semi-major axis (a measure of orbit size, normally measured in astronomical units) and orbit ellipticity (which describes how far from circular the orbit is). With a bit more maths a to-scale diagram of the planetary system is drawn in the animation as each new exoplanet is discovered.

The animation
The full animation should be finished soon, I will post it here when it is done...

Wednesday, 8 September 2010

Procedural Planets

This is the same procedural trick all over again... A planet is an enormously complex thing; it is basically impossible to model one by hand so procedural generation is key to making a believable looking planet. This planet is generated using the built in procedural textures of Blender - mostly perlin noise which defines the height of the land, texture of the water and location of the clouds.

You can watch a video of this planet in action on Youtube.

Software used:
Blender: Modeling, texturing and rendering.
ffmpeg: Video transcoding.

Wednesday, 11 August 2010

Procedural Trees

Organic objects, particularly plants and trees, are every 3D artist's nightmare. They are very familiar objects with a huge amount of detail which is really hard to capture within the memory constraints of pre-rendered graphics and polygon constraints of real time graphics.

The best approach is not to try and model or paint the detail yourself but design a program which can "grow" the graphics for you... The images of branches below are generated by a custom script in ImageJ, this is an example of procedural generation, which can generate huge detail very quickly. The graphics are made up of three parts; the alpha map (black shows that area should be transparent, white indicates opaque), the bump map (which adds depth and shape to the shading of the texture) and the diffuse texture (which provides the colour).

The alpha map (black is transparent).
The bump map (white is higher).
The diffuse texture (the colours to use)

Putting 6 of these computer generated textures together a pretty detailed tree can be made with just a few polygons. These trees render quickly and could be used in a computer game.Software used:
ImageJ - Procedural generation of textures.
Blender - Creation and rendering of 3D models.

Sunday, 8 August 2010

SEM Zoom!

Scanning electron microscopes have an amazing range of magnifications, from around 20x to 20000x! It is very hard to give a sense of this range of scales, so have a look at this video instead... It starts at 25x, about 6mm across the whole field of view, and zooms in to 12000x, about 12um across the whole field of view. The circular objects are glass beads 10um across, for comparison a red blood cell is around 8um across.

Software used:
ImageJ - video generation from a series of SEM images
FFMpeg - video transcoding

Tuesday, 13 July 2010

Extended Depth of Field

One of the tricky things with microscopy and macro photography is the depth of field, as you start magnifying a sample you need to collect as much light as possible to generate the image with a sensible exposure time. Unfortunately this requires a large aperture, and this creates a very shallow depth of field...



This micrograph of a diatom clearly shows the problem, it is impossible to get the whole sample in focus in one image. Fortunately there are ways around it; by analysing the image for sharp edges it is possible to find which image is the most in-focus and the whole image can then be reconstructed only using the in-focus patches. This process is called focus stacking and generates an extended depth of field. Good free implementations of focus stacking are hard to come across, so I wrote one; you can download the ImageJ macro here.
Using the same technique on macro photography (processing the red, green and blue channels separately) gives a similarly impressive result. The three starting images:


And the extended depth of field result:
Software used:
Image processing: ImageJ

Monday, 12 July 2010

Diatomacious Earth

This is a picture of diatomaceous earth, also known as diatomite or kieselgur, as viewed under bright field illumination on a light microscope. View the full image (7000px wide) on Wikipedia and explore it! The diatom particles are in water and the image is covers a region of approximately 1.13 by 0.69 mm.

You won't have heard of diatomaceous earth, but you will have used it! It also looks amazing under a microscope. Diatomaceous earth is a soft, siliceous, sedimentary rock made up of the cell walls/shells of single cell diatoms and readily crumbles to a fine powder. It is used for cleaning (scouring), filtration, heat-resistive insulation, killing headlice and as an inert absorbent substrate. Its most famous use was by Alfred Nobel who developed dynamite; a mixture of diatomaceous earth and nitroglycerin! Diatom cell walls are bivalve, i.e. made up of two halves, and are made up of biogenic silica; silica synthesised in the diatom cell by the polymerisation of silicic acid. The two main groups of diatoms are centric (radially symmetric) and pennate (bilaterally symmetric).

Make sure to explore the image properly, there are so many fossils to see!