Amateur Astrometry

Overview

For my final project in CPSC 525, inspired by the massive effort at Astrometry.net, I developed an amateur astrometry program for use with digital photos taken with off-the-shelf digital cameras, rather than high-quality telescopic or satellite images. The Matlab program takes an image as input, locates the stars, compares the relative positions stars in the image against the Bright Star Catalogue, and returns the name of the matching constellations and stellar bodies in the image.

Method

Process Query Image

To extract the stars in the digital input image, a Matlab function processes the image to look for "blobs" that meet brightness (comparing the colour value of a pixel and surrounding pixels) and size thresholds to reduce the chance of image noise being mistaken as stars. The center of a blobs gives the pixel coordinate of the star.

Preprocess Star Catalogue

The Bright Star Catalogue consists of a list of stellar bodies with information about each, including name, right ascension, and declination. I consider only those stars which have an associated constellation and have a magnitude less than 3.5 (otherwise they are unlikely to be picked up by off-the-shelf digital cameras). Because the star coordinates are on a celestial sphere and pixel coordinates are on a flat, 2D plane, it is difficult to convert one to the other. After a lot of calculations, I was able to convert the (Ra, Dec) coordinates to (x, y) pixel coordinates.

Match Query Image to Star Catalogue

For each star in the query image, I find its 3 nearest neighbours and then create a simple (though not necessarily convex) quadrangle for these 4 points. I then calculate the 4 internal angles of the quadrangle and sort them in ascending order in a matrix. This approach is also used on the BSC stars (though I only have to do it once).

I then compare the query image quads to the star catalogue quads. For each quad in the query image, I calculate the sum of squared differences between its angles and the angles of every quad in the BSC. The k closest quads are placed in a matrix.

Next, I locate the portion of the sky in the BSC that is the most likely candidate for the location of the query image. To do this, I determine the number of matching quads in each region to the BSC by dividing the BSC image into a grid where each matched quad votes for a bin. The bin with the largest number of votes is the most likely candidate.

Finally, I look up all of the stars in the BSC that are in the bin and outputs their names.


< Back