1. A computer implemented method comprising: receiving, by a computer system, input image frames associated with a video; receiving, by the computer system, camera orientation data from a gyroscope; generating, by the computer system, stabilized image frames based at least on the input image frames and the camera orientation data from the gyroscope; and smoothing the camera orientation data to produce a smoothed set of camera orientation data, wherein the smoothing the camera orientation data comprises minimizing a rate of rotation between successive input image frames while minimizing an amount of empty regions in the input image frames reoriented based on the smoothed set of camera orientation data.