  Depth information is useful in many image processing applications. However,
since taking a picture is a process of projection of a 3D scene onto a 2D
imaging sensor, the depth information is embedded in the image. Extracting the
depth information from the image is a challenging task. A guiding principle is
that the level of blurriness due to defocus is related to the distance between
the object and the focal plane. Based on this principle and the widely used
assumption that Gaussian blur is a good model for defocus blur, we formulate
the problem of estimating the spatially varying defocus blurriness as a
Gaussian blur classification problem. We solved the problem by training a deep
neural network to classify image patches into one of the 20 levels of
blurriness. We have created a dataset of more than 500000 image patches of size
$32\times32$ which are used to train and test several well-known network
models. We find that MobileNetV2 is suitable for this application due to its
low memory requirement and high accuracy. The trained model is used to
determine the patch blurriness which is then refined by applying an iterative
weighted guided filter. The result is a defocus map that carries the
information of the degree of blurriness for each pixel. We compare the proposed
method with state-of-the-art techniques and we demonstrate its successful
applications in adaptive image enhancement, defocus magnification, and
multi-focus image fusion.
