  Cryo-electron microscopy nowadays often requires the analysis of hundreds of
thousands of 2D images as large as a few hundred pixels in each direction. Here
we introduce an algorithm that efficiently and accurately performs principal
component analysis (PCA) for a large set of two-dimensional images, and, for
each image, the set of its uniform rotations in the plane and their
reflections. For a dataset consisting of $n$ images of size $L \times L$
pixels, the computational complexity of our algorithm is $O(nL^3 + L^4)$, while
existing algorithms take $O(nL^4)$. The new algorithm computes the expansion
coefficients of the images in a Fourier-Bessel basis efficiently using the
non-uniform fast Fourier transform. We compare the accuracy and efficiency of
the new algorithm with traditional PCA and existing algorithms for steerable
PCA.
