The image quality of optical coherence tomography can be severely influenced by speckle noise (i.e., signal-degrading speckle). Averaging multiple B-scans can effectively suppress speckle noise. Because of sample motion, images subject to averaging must be aligned exactly. We propose a two-step image registration scheme that combines global and local registrations for speckle reduction by the averaging of multiple B-scans. The method begins with a global registration to compensate for overall motion, which is estimated based on the rigid transformation model involving translation and rotation. Then each A-scan is aligned by cross-correlation using a graph-based algorithm, followed by a pixel subdivision method to improve smoothness in local registration. The method does not rely on any information about the retinal layer boundaries. We have applied this method to the registration of macular optical coherence tomography images. The results show the reduction of speckle noise and the enhanced visualization of layer structures. A signal-to-noise ratio improvement of nearly the square root of the number of averaged B-scans and a contrast-to-noise ratio improvement of around 11 are achieved through our method.