FW Editor: You designed this program especially for the astrophotographers. Are you one of them?
Keith Wiley: Yes. In fact, I didn't originally write the program for other people. As a Mac user, I found that there wasn't much software for processing amateur astrophotos, so I was forced to write my own. Once the program grew to a general level of utility and achieved an acceptable level of stability, I decided to make it available to the larger community.
FW Editor: What requirements does this program have? Can you run it on every computer?
Keith Wiley: To be honest, Keith's Image Stacker is quite old at this point (2011). I originally wrote it on a Motorola-based Mac (2002). It may have even been originally developed under Mac Classic (OS 9, pre OS X), I don't recall. I eventually Carbonized it for OS X and have made some effort to maintain its functionality over the years (it seems to run well circa 2011 on Intel based Macs and OS 10.6), and most importantly I have added multi-threaded support which should parallelize efficiently across numerous cores, but the program's age is starting to show. For example, I have never reimplemented the entire program from scratch in Cocoa (nor will I, as such a Herculean task would never be compensated for in corresponding revenue). As such, I suspect the program's utility will steadily diminish as ever newer versions of Mac OS offer steadily decreasing support for Carbon-based programs.
FW Editor: Can you tell us more about the Deep Sky Imaging? What does it mean and how does it work?
Keith Wiley: Astrophotography can be categorized in many ways, but one major distinction is between "bright" objects (our solar system, especially the sun, moon, and planets out to Saturn) and "deep sky" objects (nebulae, clusters, and galaxies). Both forms of imaging benefit greatly from Keith's Image Stacker's fundamental offering, which is "image stacking". However, the processing pipeline often differs between the two scenarios. First, deep sky objects do not change on short time scales so images may be stacked across large swathes of time. This is not true in the case of planetary imaging. Furthermore, while one can capture low-quality images of the planets without stacking, frequently one cannot capture salient features of deep sky objects *at all* without stacking. Any further discussion would quickly side-track into the capabilities of various cameras and telescopes. In short, deep sky imaging is our window into the universe beyond our own solar system and it benefits from the highest quality hardware and software at all stages of the image-capture process.
FW Editor: Is Deep Sky Imaging different from the Planetary Imaging in the process of stacking?
Keith Wiley: In terms the stacking algorithm, there is very little difference. "Image stacking" is a specific implementation of "signal averaging", which is a common signal processing technique in all domains, not just imaging and certainly not just astronomy. That said, there are many differences between deep sky and planetary imaging *scenarios*. Deep sky images are generally of lengthy exposure (seconds to minutes) and as such fewer total images are generally stacked. Planetary images are generally quite short (fractions of a second) and as such many more images may be captured and stacked. However, deep sky images can be captured over a greater window of time because they do not change while planetary image stacking is often limited to a few minutes (depending on which planet is the object in question). Furthermore, deep sky images are often accompanied by "flat field frames" and "dark frames" which are used by the stacking process in advance of the actual pixel averaging step. Additional differences relate to the hardware. For example, deep sky imaging can involve refrigerating the camera to mitigate thermal noise.
FW Editor: A section for advanced users is the Multithreading one. What can you tell us about that?
Keith Wiley: v5.0 was a pretty major upgrade. I had not been active as an amateur astrophotographer myself for quite some time and could sense that the program was rapidly falling into disarray relative to modern computing environments. I invested considerable time remodernizing the program in the hopes of lending it some increased longevity. One thing that had happened in the intervening years since Keith's Image Stacker's inception was the arrival of multi-processor and multi-core computers, a trend which was sure to continue into the future. While dual-core machines were just coming online and quad-core machines were available at the upper-end, I could see the writing on the wall. Even without making the larger jump to GPU-based parallelism, it was obvious that even on a computer's main processing board, there would become available parallelism on the scale of 8x, 16x, etc. for many years to come. As it happens, image stacking can be "embarrassingly parallelized" (as computer scientists say) in a number of different ways. In anticipation of ever-increasingly parallel hardware, I decided to massively multi-thread and parallelize Keith's Image Stacker's most expensive operations. In many cases, the achieved speedup is nearly linear (that is to say, nearly optimal). Furthermore, I added options that would support significantly more parallelism than was available at the time of v5.0's release (up to 64x) in the hopes that the program would successfully exploit such parallelism when the associated hardware became available...that is assuming the software is still compatible with Mac OS at such a point in the future.
FW Editor: Is Keith's Image Stacker the first program you have developed? Can you tell us something more about your work
Keith Wiley: Certainly not. Keith's Image Stacker was first released in 2002. I've been programming since I was seven (about 1982). I started out on an Apple IIe, then migrated to Macs in the era of the Mac SE and OS 7. I continued to program Macs through the transition to OS X. Throughout my programing career I have done quite a bit of nonOS-specific programming (code which runs on Mac OS/Linux/Unix, whatever) and in recent years I have broken into Android and Hadoop programming (not related to each other). I am currently employed as a research scientist in the astronomy department at the University of Washington where I am adapting image coaddition (stacking) algorithms for cluster-based environments (Hadoop).
About this interview