An image projection method for generating a panoramic image, the method including the steps of accessing images that were captured by a camera located at a source location, and each of the images being captured from a different angle of view, the source location being variable as a function of time, calibrating the images collectively to create a camera model that encodes orientation, optical distortion, and variable defects of the camera; matching overlapping areas of the images to generate calibrated image data, accessing a three-dimensional map, first projecting pixel coordinates of the calibrated image data into a three-dimensional space using the three-dimensional map to generate three-dimensional pixel data, and second projecting the three-dimensional pixel data to an azimuth-elevation coordinate system that is referenced from a fixed virtual to generate the panoramic image.