1. A computer-implemented method for generating a depth map for a 2D image, the method comprising: receiving the 2D image; analyzing content of the received 2D image, wherein analyzing the content of the received 2D image comprises: acquiring a first set of visual features from the received 2D image; and classifying the received 2D image as one of a plurality of image categories based on the acquired first set of visual features; determining a depth map based on a result of the content analysis; refining the determined depth map using an edge-preserving and noise reducing smoothing filter; and providing the refined depth map.