1. One or more computer-readable media having instructions stored thereon, which, when executed by one or more processors of a computing system cause the computing system to: receive a blurred image having varying levels of blur across the blurred image; divide the blurred image into a plurality of regions; select a first region and a second region from the plurality of regions based on a number of edge orientations within the first region and the second region; estimate a first blur kernel to deblur a first portion of the blurred image based on the first region; estimate a second blur kernel deblur a second portion of the blurred image based on the second region; and deblur the first portion of the blurred image using the first blur kernel and the second portion of the blurred image using the second blur kernel to produce a deblurred image.