As many of you may know, for many years I have wanted to create an open source image processing suite. The core of which is a modular image processing engine. The problem with this is of course that I usually start work on it a week before the semester then all development time is swallowed whole. The first kernel of any image processing engine is the ability to identify a star on the image plane, a process known as centroiding. In order to centroid you need something like a Fourier Transform of the image (in order to compute the point spread function of the star), I say something like because there is too much noise associated with the Fourier Transform to help with very faint objects. So my first baby step was to be able to take an image from disk and get its Fourier Transform.
To do this I needed FFTW, and cfitsio. Oddly cfitsio does not compile well for 64-bit windows so a year or so ago I spent a whole night fucking around getting it to compile in VS 2010. (If you are interested in that source code it is in my git hub.) Once that was done it was a matter of figuring out how to do a real to real 2D Fourier transform using FFTW. So here we are, the image is a few seconds of noise buildup taken from my Meade DSI II:
And now its Fourier Transform:
Most students usually do this in Matlab before trying it in C++, I guess I just like to learn things the hard way.
No comments:
Post a Comment