We propose a multi-layer, `depth planes' approach to image segmentation where pixels that may have arisen from a single smooth surface in the scene are represented in a common layer. Two types of output are produced at each pixel: a layer number and a vector of depth values, one value for each layer. The layer assignment performs image partitioning based on surface properties. The depth value assignment for each layer either represents the input data with the noise removed or interpolates between data values to fill-in non-visible parts of the scene. The disjoint surfaces due to occlusion or transparency are also grouped together if they form a smooth surface.