A lightweight SIFT-implementation for Java after the paper of David Lowe1. The ImageJ plugin can be used for aligning image stacks.
Note, that the SIFT-algorithm is protected by U.S. Patent 6,711,293: Method and apparatus for identifying scale invariant features in an image and use of same for locating an object in an image by the University of British Columbia. That is, for commercial applications the permission of the author is required. Anything else is published under the terms of the GPL, so feel free to use it for academic or personal purposes.