Wolfram Computation Meets Knowledge

Secrets of the Universe Hiding on My Home Computer

In this day and age, it’s quite common to have to do some housecleaning on your computer to make room for more clutter. While moving stuff around on my home computer and trying to figure out what data I had and where it could be moved to free up space on my hard drive, I ran across an old FITS data file from my college days. The cryptic filename only told me that it was taken in May and that it was likely the 132nd image in a sequence. I was curious and decided I would investigate it to see what I had uncovered. Perhaps it was a dull star-field image from my data-collecting days in the study of dwarf novae; I wasn’t sure. Mathematica was the most convenient tool I had handy for viewing FITS data, so I decided to take it for a spin.

In[1]:= SetDirectory[NotebookDirectory[]];

In[2]:= rawimagedata=Image[Import["May08_0132.fit",{"FITS","RawData"}][[1]],"Bit16"];

In[3]:= imagedata=ImageTake[rawimagedata,All,{1,512}];ImageAdjust[ImageResize[imagedata,400,Method->"Bilinear"]]

It was obvious that it wasn’t a star field, but some sort of extended object. More investigations were needed. What was it? FITS, being a data format, typically contains metadata that tells you all sorts of details about what is in the data section. The header information is rather nonstandard from one file to the next, but can usually be perused for many tidbits of useful information. From the header data, it was clear that this was taken through the Lowell 31-inch telescope. It also told me that the object in question is M87 and that this was a 300-second exposure.

In[5]:= Import["May08_0132.fit",{"FITS","Metadata"}]

M87 is an interesting object because it’s a large elliptical galaxy in a galaxy cluster. A typical printed photograph of this region is usually highly overexposed to show many of the other surrounding galaxies. Because it is overexposed, much of the information gets lost quickly in the glare. Because the FITS data format is not a raster format, but has a much larger dynamic range of values that can be analyzed, it is possible to scale our view of the full collected data and overcome the limits of standard photographic techniques. The image that follows is simply a brightened version of the default view. In many ways, it resembles what we might usually see in a printed photo of this area, although it’s unpolished. The dark donuts are the shadows of unfocused dust grains in the image plane, either on the CCD itself or on the optics or filters.

In[6]:= ImageResize[ImageAdjust[imagedata,{14.05,1,.364}],400,Method->"Bilinear"]

The dust shadows can be reduced by doing image reduction, which involves some image algebra with calibration frames that I was lucky enough to find—a bias frame, which is essentially a constant frame that must be subtracted from all frames involved in the reduction process, and a flat-field frame, which is an image of a uniformly illuminated field that gives you a map of where the irregularities are. You can divide each image frame by the normalized flat field to remove these artifacts.

In[7]:= rawflat=Image[Import["avgvflat.fit",{"FITS","RawData"}][[1]],"Bit16"];

In[8]:= rawbias=Image[Import["avgbias.fit",{"FITS","RawData"}][[1]],"Bit16"];

In[9]:= reducedflat=ImageAdjust[ImageSubtract[rawflat,MedianFilter[rawbias,4]]];ImageResize[reducedflat,400,Method->"Bilinear"]

After processing and some additional rescaling, we can get an image with less noticeable dust artifacts. A more deliberate attempt to obtain such a clean image would have had better results, but this isn’t bad.

In[11]:= processed=ImageMultiply[ImageSubtract[imagedata,MedianFilter[rawbias,4]],ColorNegate[reducedflat]];ImageAdjust[ImageResize[processed,400,Method->"Bilinear"],{14.8,1,.232}]

If we rescale the image again, we can bring out the odd protrusion seen in the original image.

In[13]:= ImageAdjust[ImageResize[processed,400,Method->"Bilinear"]]

We can zoom in for a closer analysis.

In[14]:= it=ImageTake[processed,{124,266},{174,348}];ImageResize[ImageAdjust[it],400,Method->"Bilinear"]

It turns out that this image, which was taken just to be a pretty picture to add to the visually boring data frames we had collected, contained a surprise. What was unexpected is that we detected a rather famous structure at the core of M87. M87 is known to house a supermassive black hole. As matter falls into the black hole, large relativistic jets of matter are spewed out. The strange protrusion is one of these jets! This picture was not intended to capture this; it was an accident, but a wonderful surprise. We can compare this short five-minute exposure to the much more famous image taken by the Hubble Space Telescope.

Obviously, my image is in a far more raw form than the one taken by Hubble, but to run across such a random tidbit of data and have Mathematica reveal such a surprise on my home computer is just plain cool!